프로그래밍공부(Programming Study)/DevOps

Kubernetes에서 QoS와 Resource Request 및 Limit의 개념: CPU와 Memory의 의미

Chann._.y 2024. 9. 20.
728x90

1. QoS란 무엇인가?

QoS(Quality of Service)는 Kubernetes에서 파드를 실행할 때, 그 파드에 대한 자원 할당의 우선순위를 관리하는 메커니즘입니다. Kubernetes 클러스터는 여러 파드를 동시에 실행하기 때문에, 각 파드에 적절한 자원 할당 및 제한을 설정해야 효율적으로 리소스를 사용할 수 있습니다.

Kubernetes는 파드의 QoS 클래스를 세 가지로 나눕니다:

  • Guaranteed: 요청된 자원과 제한이 일치하는 경우. 이 클래스는 가장 높은 우선순위를 갖습니다.
  • Burstable: 요청된 자원이 제한보다 작을 때. 유연한 사용이 가능하지만, 자원이 부족할 경우 제한이 있을 수 있습니다.
  • BestEffort: 자원 요청이 전혀 설정되지 않은 경우. 우선순위가 가장 낮고, 자원이 부족하면 가장 먼저 종료될 가능성이 있습니다.

2. Resource Request와 Limit의 의미

Resource RequestLimit는 Kubernetes에서 파드가 사용할 수 있는 자원을 정의하는 두 가지 주요 설정입니다.

  • Resource Request: 파드가 실행되기 위해 필요한 최소한의 자원을 정의합니다. Kubernetes 스케줄러는 이 요청을 기반으로 적절한 노드에 파드를 배치합니다.
  • Resource Limit: 파드가 최대 사용할 수 있는 자원을 설정합니다. 만약 파드가 이 제한을 초과하면 Kubernetes는 해당 파드를 제한하거나 종료할 수 있습니다.

이 두 설정은 Kubernetes가 자원을 효과적으로 관리하고, 다른 파드들이 필요할 때 자원을 적절히 사용할 수 있도록 돕습니다.


3. CPU와 Memory의 역할

Kubernetes에서 CPU와 메모리는 파드의 성능을 관리하는 두 가지 중요한 자원입니다.

  • CPU: CPU는 Kubernetes에서 vCPU 단위로 측정되며, 파드가 얼마나 많은 프로세싱 능력을 사용할 수 있는지 나타냅니다. 1 CPU는 하나의 물리적 CPU 코어와 동일한 처리 능력을 의미합니다.
  • Memory: 메모리는 RAM을 의미하며, 파드가 데이터를 저장하고 접근하는 데 사용하는 자원입니다. 메모리의 단위는 바이트(Byte)로 측정되며, 일반적으로 MiB 또는 GiB 단위로 설정합니다.

CPU와 메모리는 서로 다른 방식으로 관리됩니다. CPU는 점진적으로 소모될 수 있지만, 메모리는 설정된 한도를 초과할 경우 파드가 강제로 종료될 수 있습니다.


4. 구체적인 사례

다음은 Kubernetes 파드에서 자원을 요청하고 제한을 설정하는 예시입니다.

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
spec:
  containers:
  - name: example-container
    image: nginx
    resources:
      requests:
        memory: "256Mi"
        cpu: "500m"
      limits:
        memory: "512Mi"
        cpu: "1000m"

이 예시에서:

  • memory request는 256Mi이며, 이는 컨테이너가 최소한 256Mi 메모리를 필요로 한다는 뜻입니다.
  • memory limit는 512Mi이며, 컨테이너가 사용할 수 있는 최대 메모리는 512Mi입니다.
  • cpu request는 500m로, 이는 0.5개의 CPU 코어를 요청한 것입니다.
  • cpu limit는 1000m로, 이는 최대 1개의 CPU 코어를 사용할 수 있다는 뜻입니다.

이 설정을 통해 Kubernetes는 자원을 적절히 할당하고 관리하여 성능을 보장합니다.

728x90

댓글