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
pod. readinessprobe, livenessprobe
- 사용 목적은 다르나, 설정 내용은 같다.
- readinessProbe: pod 를 띄울 때 ready 인지 확인한다.
- livenessProbe: pod 에 문제가 생기면 재시작한다.
- threshold 까지, retry 를 해서 계속 실패가 뜨면 재시작한다.
- httpGet, exec, tcpSocket 등으로 app 을 확인한다.
spring boot actuator