쿠버네티스에서 Pod이 과도한 리소스를 사용하면 클러스터 전체 성능에 영향을 줄 수 있습니다.
따라서 CPU 및 메모리 사용량을 적절하게 설정하여 리소스를 효율적으로 관리하는 것이 중요합니다.
이 글에서는 Pod의 리소스 요청(Request) 및 제한(Limit)을 설정하는 방법을 다룹니다.
📌 글에서 다루는 상황들
1. Pod의 CPU 및 메모리 요청(Request) 설정
2. Pod의 CPU 및 메모리 제한(Limit) 설정
3. 리소스 요청(Request)과 제한(Limit)을 활용한 최적의 운영 전략
각 문제를 실무에서 바로 활용할 수 있도록 Manifest 템플릿과 예상 결과 값을 제공합니다.
1️⃣ Pod의 CPU 및 메모리 요청(Request) 설정
❓ 문제 상황
운영팀에서 애플리케이션이 실행될 때 최소한으로 보장해야 할 CPU 및 메모리를 설정해야 합니다.
리소스 요청(Request)을 설정하여, Pod이 최소한의 리소스를 예약받을 수 있도록 해야 합니다.
• Pod 이름: request-pod
• CPU 요청: 250m (0.25 vCPU)
• 메모리 요청: 128Mi
✅ 어떻게 해결할 수 있을까요?
🛠️ 해결 방법
1. Pod의 spec.containers.resources.requests 필드를 설정하여 CPU 및 메모리 요청 값을 지정합니다.
2. kubectl을 사용하여 설정이 정상적으로 적용되었는지 확인합니다.
✅ 정답 Manifest (리소스 요청 설정)
apiVersion: v1
kind: Pod
metadata:
name: request-pod
spec:
containers:
- name: app-container
image: nginx
resources:
requests:
cpu: "250m" # 최소한 보장받을 CPU (0.25 vCPU)
memory: "128Mi" # 최소한 보장받을 메모리
📌 적용 후 예상 결과 값
1. Pod의 리소스 요청 값 확인
kubectl describe pod request-pod | grep -A 5 "Requests"
💡 예상 출력 값
Requests:
cpu: 250m
memory: 128Mi
2️⃣ Pod의 CPU 및 메모리 제한(Limit) 설정
❓ 문제 상황
운영팀에서 애플리케이션이 과도한 리소스를 사용하지 않도록 제한을 설정해야 합니다.
리소스 제한(Limit)을 설정하여, Pod이 최대 사용할 수 있는 리소스를 제어해야 합니다.
• Pod 이름: limit-pod
• CPU 제한: 500m (0.5 vCPU)
• 메모리 제한: 256Mi
✅ 어떻게 해결할 수 있을까요?
🛠️ 해결 방법
1. Pod의 spec.containers.resources.limits 필드를 설정하여 CPU 및 메모리 제한 값을 지정합니다.
2. kubectl을 사용하여 설정이 정상적으로 적용되었는지 확인합니다.
✅ 정답 Manifest (리소스 제한 설정)
apiVersion: v1
kind: Pod
metadata:
name: limit-pod
spec:
containers:
- name: app-container
image: nginx
resources:
limits:
cpu: "500m" # 최대 사용할 수 있는 CPU (0.5 vCPU)
memory: "256Mi" # 최대 사용할 수 있는 메모리
📌 적용 후 예상 결과 값
1. Pod의 리소스 제한 값 확인
kubectl describe pod limit-pod | grep -A 5 "Limits"
💡 예상 출력 값
Limits:
cpu: 500m
memory: 256Mi
3️⃣ 리소스 요청(Request)과 제한(Limit)을 활용한 최적의 운영 전략
❓ 문제 상황
운영팀에서 리소스 요청(Request)과 제한(Limit)을 함께 설정하여 클러스터 리소스를 효율적으로 관리해야 합니다.
CPU 및 메모리 요청(Request)을 설정하여 최소한의 리소스를 보장하고,
CPU 및 메모리 제한(Limit)을 설정하여 과도한 리소스 사용을 방지해야 합니다.
• Pod 이름: resource-pod
• CPU 요청: 250m (0.25 vCPU)
• CPU 제한: 500m (0.5 vCPU)
• 메모리 요청: 128Mi
• 메모리 제한: 256Mi
✅ 어떻게 해결할 수 있을까요?
🛠️ 해결 방법
1. Pod의 spec.containers.resources 필드에 requests와 limits를 함께 설정합니다.
2. kubectl을 사용하여 설정이 정상적으로 적용되었는지 확인합니다.
✅ 정답 Manifest (리소스 요청 및 제한 설정)
apiVersion: v1
kind: Pod
metadata:
name: resource-pod
spec:
containers:
- name: app-container
image: nginx
resources:
requests:
cpu: "250m" # 최소한 보장받을 CPU (0.25 vCPU)
memory: "128Mi" # 최소한 보장받을 메모리
limits:
cpu: "500m" # 최대 사용할 수 있는 CPU (0.5 vCPU)
memory: "256Mi" # 최대 사용할 수 있는 메모리
📌 적용 후 예상 결과 값
1. Pod의 리소스 요청 및 제한 값 확인
kubectl describe pod resource-pod | grep -A 5 "Limits"
kubectl describe pod resource-pod | grep -A 5 "Requests"
💡 예상 출력 값
Requests:
cpu: 250m
memory: 128Mi
Limits:
cpu: 500m
memory: 256Mi