kubernetes 기본 용어 정리

Keno Kim·2024년 10월 9일

Pod resource 관리

resource requests

  • 컨테이너가 스케쥴링하기 위해 CPU, memory 를 요청한다.
  • Pod 를 스케쥴링할 수 없는 경우 대기 상태에 들어간다.

resource limits

  • Pod 의 최대 CPU, memory 크기를 정의한다.
  • memory 가 한계에 도달하면 pod 가 재시작된다. (oom)
  • cpu 가 한계에 도달하면 스로틀링이 발생한다.

cf). resource?

  • cpu, memory, ephemeral storage, extended resources (gpu)

Pod QoS

  • pod 의 resource requests/limits 에 따라 리소스 우선순위를 결정하는 서비스 품질 등급
    - gauranteed: requests 와 limits 값이 0보다 크고 서로 같게 설정된 경우
    • burstable: requests < limits 인 경우
    • BestEffort: requests, limits 가 설정되지 않은 경우

namespace

  • namespace 를 통해 배포된 object 를 논리적으로 분리할 수 있다.
    • NetworkPolicy 를 통해 같은 namespace 내의 object 끼리만 통신이 가능하도록 설정할 수 있다.
  • 하나의 namespace 내의 같은 종류의 object 들은 name 이 고유하다.

resourceQuota

  • namespace 에 resourceQuota 를 설정하여 클러스터의 리소스를 분배한다.
    • request.cpu
    • limits.cpu
    • request.memory
    • limit.memory
    • requests.storage
    • persistentvolumeclaims
    • storageclass.request
    • storageclass.pvc
    • count quota

hpa

  • horizontal 확장, scale-out/in, pod 가 stateless 해야 한다.

vpa

  • vertical 확장, scale-up/down

ca

  • node scale-out/in

pod. readinessprobe, livenessprobe

  • 사용 목적은 다르나, 설정 내용은 같다.
  • readinessProbe: pod 를 띄울 때 ready 인지 확인한다.
  • livenessProbe: pod 에 문제가 생기면 재시작한다.
    • threshold 까지, retry 를 해서 계속 실패가 뜨면 재시작한다.
  • httpGet, exec, tcpSocket 등으로 app 을 확인한다.

spring boot actuator

  • /actuator/health/readiness, /actuator/health/liveness 등의 API 를 통해 확인할 수 있다.
  • 어떤 항목을 포함할 지는 customize 가능하다. 기본값은 show-details 를 true 로 설정하고 요청하면 확인 가능하다.
  • 단, livenessprobe 를 통해 pod 를 재시작하므로, 특정 메트릭이 failed 되었을 때 pod 의 재시작이 괜찮은지 선택해야 한다.
  • https://spring.io/blog/2020/03/25/liveness-and-readiness-probes-with-spring-boot
profile
개발자의 생각 로그

0개의 댓글