728x90
1. QoS란 무엇인가?
QoS(Quality of Service)는 Kubernetes에서 파드를 실행할 때, 그 파드에 대한 자원 할당의 우선순위를 관리하는 메커니즘입니다. Kubernetes 클러스터는 여러 파드를 동시에 실행하기 때문에, 각 파드에 적절한 자원 할당 및 제한을 설정해야 효율적으로 리소스를 사용할 수 있습니다.
Kubernetes는 파드의 QoS 클래스를 세 가지로 나눕니다:
- Guaranteed: 요청된 자원과 제한이 일치하는 경우. 이 클래스는 가장 높은 우선순위를 갖습니다.
- Burstable: 요청된 자원이 제한보다 작을 때. 유연한 사용이 가능하지만, 자원이 부족할 경우 제한이 있을 수 있습니다.
- BestEffort: 자원 요청이 전혀 설정되지 않은 경우. 우선순위가 가장 낮고, 자원이 부족하면 가장 먼저 종료될 가능성이 있습니다.
2. Resource Request와 Limit의 의미
Resource Request와 Limit는 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
'프로그래밍공부(Programming Study) > DevOps' 카테고리의 다른 글
Argo Rollout과 AWS Spot Termination Event 대응: Pod 하나일 경우 순단 방지 및 Pod Drain 후 즉시 재배치하는 방법 (0) | 2024.09.20 |
---|---|
mTLS란 무엇인가? Istio에서 mTLS 구성 방법과 보안 강화하기 (2) | 2024.09.11 |
빅쿼리(BigQuery)란? 구글 클라우드의 강력한 데이터 웨어하우스 솔루션 (0) | 2024.08.16 |
쿠버네티스(Kubernetes, k8s) 컨트롤플레인과 데이터플레인: 구조와 통신 방법 이해하기 (0) | 2024.08.13 |
[Docker] 1. 개요 (0) | 2023.03.25 |
댓글