Intro
Pod는 기본적으로 노드의 자원을 사용하며, 여기서 자원은 주로 CPU와 메모리를 말한다.
스케줄러는 요청된 자원양을 기준으로 Pod의 배치를 결정하며, 해당 조건을 yaml파일에 명시할 때는 pod가 아니라 각 container 단위로 설정된다.
Request
request는 최소 보장 자원을 의마한다.
resources:
requests:
memory: "512Mi"
cpu: "0.5"
위와 같이 설정하였을 때, 스케줄러는 이 값을 기준으로 노드를 선택하며, 최소한으로 보장되는 값이다.
여기서 cpu에 0.5라고 설정하는 것은 500m이라고 설정하는 것과 같다.
Limits
limits는 최대 허용 자원을 의미하며, 해당 컨테이너는 이 값을 넘을 수 없다.
resources:
limits:
memory: "1Gi"
cpu: "1"
CPU가 해당 값을 넘게되면 throttling이 걸리게되며, memory의 경우는 OOMKilled가 이루어지게된다.
LimitRange
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-mem-limit
spec:
limits:
- default:
cpu: 500m
memory: 512Mi
defaultRequest:
cpu: 250m
memory: 256Mi
max:
cpu: 1
min:
cpu: 100m
type: Container
위와 같이 LimitRange를 설정하면 request-limit이 설정되지 않은 파드에 기본적으로 이 값이 설정된다.
ResourceQuota
apiVersion: v1
kind: ResourceQuota
metadata:
name: mem-cpu-quota
spec:
hard:
requests.cpu: "4"
requests.memory: "4Gi"
limits.cpu: "10"
limits.memory: "10Gi"
ResourceQuota의 경우 전체 리소스를 제한하는 설정으로, 모든 Pod이 사용하고 있는 총 리소스량을 확인하여 제한한다.
'CKA' 카테고리의 다른 글
(TIL) Kubernetes Static Pods (0) | 2025.03.26 |
---|---|
(TIL) Kubernetes DaemonSet (0) | 2025.03.26 |
(TIL) Kubernetes Taints & Toleration 와 Node Affinity (0) | 2025.03.25 |
(TIL)Kubernetes의 Node Selector와 Node Affinity (0) | 2025.03.25 |
(TIL) Taints and Tolerations (0) | 2025.03.25 |