리소스 요청 및 제한
효율적인 리소스 할당을 보장하고 리소스 고갈을 방지하도록 파드의 CPU와 메모리 요청량 및 제한을 정의하세요.
리소스 요청 및 제한은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
Kubernetes의 리소스 요구 사항
다른 애플리케이션과 마찬가지로 Pod도 실행하려면 리소스가 필요합니다. Kubernetes는 리소스 요청과 리소스 제한을 사용해 이러한 리소스를 효율적으로 관리합니다.
이 설정은 Pod에 필요한 CPU와 메모리의 양, 그리고 Pod가 사용할 수 있는 최대량을 Kubernetes에 알려 주어 리소스를 공정하게 분배하도록 합니다.
CPU 요청: CPU 보장
CPU 요청은 Pod가 안정적으로 실행되는 데 필요한 CPU의 최소량을 Kubernetes에 알려 줍니다. 즉, 보장되는 양입니다!
- Kubernetes는 요청을 바탕으로 사용 가능한 리소스가 충분한 노드에 Pod를 배치합니다.
- 노드에 요청한 만큼의 CPU가 부족하면 해당 노드에 Pod를 배치하지 않습니다.
- 이를 통해 중요한 애플리케이션의 리소스 고갈을 방지할 수 있습니다.
CPU 단위 및 요청 예시
CPU는 '코어' 또는 '밀리코어'(m) 단위로 측정합니다. 1000m은 CPU 코어 1개와 같습니다. 따라서 500m은 코어의 절반입니다.
다음은 Pod 정의에서 CPU 코어 0.5개를 요청하는 방법입니다.
apiVersion: v1
kind: Pod
metadata:
name: cpu-request-pod
spec:
containers:
- name: my-container
image: nginx
resources:
requests:
cpu: "500m"CPU 제한: 과도한 사용 방지
CPU 제한은 Pod가 사용할 수 있는 CPU의 최대량을 설정합니다. 일종의 상한선입니다.
- Pod가 제한보다 많은 CPU를 사용하려고 하면 Kubernetes가 사용량을 제한합니다.
- 즉, Pod의 CPU 사용량이 제한되어 같은 노드의 다른 Pod 리소스를 독점하지 못하게 됩니다.
CPU 제한 적용 예시
다음은 CPU 제한을 설정하는 예시입니다. 이 Pod가 CPU 코어 1개보다 많이 사용하려고 하면 사용량이 제한되어 성능이 저하됩니다.
apiVersion: v1
kind: Pod
metadata:
name: cpu-limit-pod
spec:
containers:
- name: my-container
image: nginx
resources:
limits:
cpu: "1"메모리 요청: RAM 보장
CPU와 마찬가지로 메모리 요청은 Pod가 작동하는 데 필요한 RAM의 최소량을 지정합니다.
- Kubernetes는 Pod에 필요한 여유 메모리가 충분한 노드를 찾는 데 이 값을 사용합니다.
- 노드의 메모리가 부족해지면 요청을 지정하지 않은 Pod가 공간을 확보하기 위해 가장 먼저 종료(축출)되는 경우가 많습니다.
메모리 단위 및 요청 예시
메모리는 바이트 단위로 측정합니다. 일반적으로 Mi(메비바이트)와 Gi(기비바이트)를 사용합니다.
100Mi는 100메비바이트입니다. 메모리 256MiB를 요청하는 방법은 다음과 같습니다.
apiVersion: v1
kind: Pod
metadata:
name: mem-request-pod
spec:
containers:
- name: my-container
image: nginx
resources:
requests:
memory: "256Mi"메모리 제한: OOM 방지
메모리 제한은 파드가 사용할 수 있는 최대 메모리를 정의합니다.
- 파드가 메모리 제한을 초과하면 운영 체제가 '메모리 부족' (OOM) 오류와 함께 즉시 종료합니다. 이 상태는 흔히 'OOMKilled'로 표시됩니다.
- 이를 통해 하나의 폭주하는 파드가 노드의 전체 메모리를 사용하여 노드 전체를 중단시키는 것을 방지합니다.
메모리 제한 적용
이 파드의 메모리 제한은 512MiB입니다. 이보다 더 많이 사용하려고 하면 다른 작업과 노드를 보호하기 위해 종료됩니다(OOMKilled).
apiVersion: v1
kind: Pod
metadata:
name: mem-limit-pod
spec:
containers:
- name: my-container
image: nginx
resources:
limits:
memory: "512Mi"모범 사례: 요청 및 제한
모든 파드에 요청과 제한을 모두 정의하는 것이 모범 사례입니다. 이렇게 하면 클러스터의 안정성과 예측 가능성이 높아집니다.
- 요청은 파드가 스케줄링에 필요한 최소 리소스를 확보하도록 합니다.
- 제한은 다른 파드와 노드 자체의 리소스 고갈을 방지합니다.
전체 예시는 다음과 같습니다.
apiVersion: v1
kind: Pod
metadata:
name: full-resource-pod
spec:
containers:
- name: my-app
image: my-registry/my-app:1.0
resources:
requests:
cpu: "200m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "256Mi"리소스 확인
CPU 요청이 200m이고 CPU 제한이 1(1000m에 해당)인 파드가 정의되어 있습니다.
이 파드가 CPU 코어 1.5개를 사용하려고 하면 어떻게 될까요?
복습: 리소스 관리
이 단원에서는 쿠버네티스의 리소스 요청과 리소스 제한에 대해 배웠습니다.
- 요청(CPU 및 메모리)은 파드 스케줄링에 필요한 최소 리소스를 보장합니다.
- 제한(CPU 및 메모리)은 리소스 경합을 방지하기 위해 최대 사용량을 제한합니다.
- CPU 제한을 초과하면 사용량이 제한되고, 메모리 제한을 초과하면 종료됩니다(OOMKilled).
- 안정적이고 예측 가능한 애플리케이션 성능을 위해 항상 요청과 제한을 모두 정의하세요.
자주 묻는 질문
“리소스 요청 및 제한” 강의는 무료인가요?
네 — “리소스 요청 및 제한” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.
“리소스 요청 및 제한”에서 뭘 배우나요?
효율적인 리소스 할당을 보장하고 리소스 고갈을 방지하도록 파드의 CPU와 메모리 요청량 및 제한을 정의하세요. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“리소스 요청 및 제한” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 리소스 요청 및 제한
- 노드 선택기 및 어피니티
- 테인트 및 톨러레이션
- 파드 우선순위와 선점