Kubernetes/Kubernetes Best Practices

[Scenario Playbook - 심화편 | Low Level #6] Pod의 리소스 요청(Request) 및 제한(Limit) 설정

ygtoken 2025. 3. 16. 18:53
728x90

 

쿠버네티스에서 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

 

728x90