Search

Pod Overhead

Pod는 컨테이너가 돌아가는 것 외에 리소스를 추가로 사용한다.
컨테이너를 돌리기 위해선 추가적인 자원이 필요하기 때문이다.
Kubernetes에서는 Pod의 오버헤드가 Admission Time(승인 시점) 에 설정되며, 이는 해당 Pod의 RuntimeClass에 연결된 오버헤드 값에 따라 결정된다.
Pod의 오버헤드는 다음과 같은 경우에 고려헤야한다.
Pod 스케줄링 : Pod의 컨테이너 요청 합계에 오버헤드를 추가하여 스케줄링에 반영됨
Pod Cgroup 크기 조정 : kubelet이 Pod의 Cgroup을 크기 조정할 때 오버헤드를 포함
Pod 축출(Eviction) 순위 결정 : 오버헤드를 포함한 전체 리소스 사용량을 고려하여 우선순위를 평가
특히 가상머신에서 컨테이너를 돌리는 kata-fc등은 Runtime이 지정한 pod당 extra 리소스를 정해두었다.
apiVersion: node.k8s.io/v1 kind: RuntimeClass metadata: name: kata-fc handler: kata-fc overhead: podFixed: memory: "120Mi" cpu: "250m"
YAML
복사
apiVersion: v1 kind: Pod metadata: name: test-pod spec: runtimeClassName: kata-fc # 이 Pod은 'kata-fc' RuntimeClass를 사용하여 실행됨 (가상화 컨테이너 런타임) containers: - name: busybox-ctr # 첫 번째 컨테이너: busybox image: busybox:1.28 # busybox 컨테이너 이미지 사용 stdin: true # 표준 입력을 활성화하여 인터랙티브 셸 실행 가능 tty: true # TTY 지원 활성화 resources: limits: cpu: 500m # 이 컨테이너가 사용할 최대 CPU 제한 (500 millicores = 0.5 vCPU) memory: 100Mi # 최대 메모리 제한 (100MiB) - name: nginx-ctr # 두 번째 컨테이너: nginx image: nginx # nginx 컨테이너 이미지 사용 resources: limits: cpu: 1500m # 이 컨테이너가 사용할 최대 CPU 제한 (1500 millicores = 1.5 vCPU) memory: 100Mi # 최대 메모리 제한 (100MiB)
YAML
복사
Pod 오버헤드 확인
kubectl get pod test-pod -o jsonpath='{.spec.overhead}'
Shell
복사