6.14. Pod 중단 예산
Pod 중단 예산을 이해하고 구성합니다.
6.14.1. Pod 중단 예산을 사용하여 실행 중인 pod 수를 지정하는 방법
Pod 중단 예산을 사용하면 유지보수를 위해 노드를 드레이닝하는 등 작업 중에 Pod에 대한 보안 제약 조건을 지정할 수 있습니다.
PodDisruptionBudget
은 동시에 작동해야 하는 최소 복제본 수 또는 백분율을 지정하는 API 오브젝트입니다. 프로젝트에서 이러한 설정은 노드 유지 관리 (예: 클러스터 축소 또는 클러스터 업그레이드) 중에 유용할 수 있으며 (노드 장애 시가 아니라) 자발적으로 제거된 경우에만 적용됩니다.
PodDisruptionBudget
오브젝트의 구성은 다음과 같은 주요 부분으로 구성되어 있습니다.
- 일련의 pod에 대한 라벨 쿼리 기능인 라벨 선택기입니다.
동시에 사용할 수 있어야 하는 최소 pod 수를 지정하는 가용성 수준입니다.
-
minAvailable
은 중단 중에도 항상 사용할 수 있어야하는 pod 수입니다. -
maxUnavailable
은 중단 중에 사용할 수없는 pod 수입니다.
-
Available
은 condition Ready=True
가 있는 Pod 수를 나타냅니다. ready=True
는 요청을 처리할 수 있는 Pod를 참조하며 일치하는 모든 서비스의 부하 분산 풀에 추가해야 합니다.
maxUnavailable
0 %
또는 0
이나 minAvailable
의 100 %
혹은 복제본 수와 동일한 값은 허용되지만 이로 인해 노드가 드레인되지 않도록 차단할 수 있습니다.
maxUnavailable
의 기본 설정은 OpenShift Container Platform의 모든 머신 구성 풀에 대해 1
입니다. 이 값을 변경하지 않고 한 번에 하나의 컨트롤 플레인 노드를 업데이트하는 것이 좋습니다. 컨트롤 플레인 풀의 경우 이 값을 3
으로 변경하지 마십시오.
다음을 사용하여 모든 프로젝트에서 pod 중단 예산을 확인할 수 있습니다.
$ oc get poddisruptionbudget --all-namespaces
출력 예
NAMESPACE NAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONS AGE openshift-apiserver openshift-apiserver-pdb N/A 1 1 121m openshift-cloud-controller-manager aws-cloud-controller-manager 1 N/A 1 125m openshift-cloud-credential-operator pod-identity-webhook 1 N/A 1 117m openshift-cluster-csi-drivers aws-ebs-csi-driver-controller-pdb N/A 1 1 121m openshift-cluster-storage-operator csi-snapshot-controller-pdb N/A 1 1 122m openshift-cluster-storage-operator csi-snapshot-webhook-pdb N/A 1 1 122m openshift-console console N/A 1 1 116m #...
PodDisruptionBudget
은 시스템에서 최소 minAvailable
pod가 실행중인 경우 정상으로 간주됩니다. 이 제한을 초과하는 모든 pod는 제거할 수 있습니다.
Pod 우선 순위 및 선점 설정에 따라 우선 순위가 낮은 pod는 pod 중단 예산 요구 사항을 무시하고 제거될 수 있습니다.
6.14.2. Pod 중단 예산을 사용하여 실행해야 할 pod 수 지정
PodDisruptionBudget
오브젝트를 사용하여 동시에 가동되어야 하는 최소 복제본 수 또는 백분율을 지정할 수 있습니다.
절차
pod 중단 예산을 구성하려면 다음을 수행합니다.
다음과 같은 오브젝트 정의를 사용하여 YAML 파일을 만듭니다.
apiVersion: policy/v1 1 kind: PodDisruptionBudget metadata: name: my-pdb spec: minAvailable: 2 2 selector: 3 matchLabels: name: my-pod
또는 다음을 수행합니다.
apiVersion: policy/v1 1 kind: PodDisruptionBudget metadata: name: my-pdb spec: maxUnavailable: 25% 2 selector: 3 matchLabels: name: my-pod
다음 명령을 실행하여 오브젝트를 프로젝트에 추가합니다.
$ oc create -f </path/to/file> -n <project_name>
6.14.3. 비정상적인 Pod에 대한 제거 정책 지정
PDB(Pod 중단 예산)를 사용하여 동시에 사용할 수 있어야 하는 Pod 수를 지정하는 경우 제거로 간주되는 비정상적인 Pod에 대한 기준을 정의할 수도 있습니다.
다음 정책 중 하나를 선택할 수 있습니다.
- IfHealthyBudget
- 정상 상태가 아닌 실행 Pod는 보호된 애플리케이션이 손상되지 않은 경우에만 제거할 수 있습니다.
- AlwaysAllow
-
Pod 중단 예산의 기준이 충족되는지 여부에 관계없이 아직 정상 상태가 아닌 실행 Pod를 제거할 수 있습니다. 이 정책은
CrashLoopBackOff
상태에 남아 있거나Ready
상태를 보고하지 못하는 Pod와 같은 애플리케이션의 문제를 제거하는 데 도움이 될 수 있습니다.
Pod 중단 예산에 대해 비정상적인 Pod 제거 정책을 지정하는 것은 기술 프리뷰 기능 전용입니다. 기술 프리뷰 기능은 Red Hat 프로덕션 서비스 수준 계약(SLA)에서 지원되지 않으며 기능적으로 완전하지 않을 수 있습니다. 따라서 프로덕션 환경에서 사용하는 것은 권장하지 않습니다. 이러한 기능을 사용하면 향후 제품 기능을 조기에 이용할 수 있어 개발 과정에서 고객이 기능을 테스트하고 피드백을 제공할 수 있습니다.
Red Hat 기술 프리뷰 기능의 지원 범위에 대한 자세한 내용은 기술 프리뷰 기능 지원 범위를 참조하십시오.
이 기술 프리뷰 기능을 사용하려면 TechPreviewNoUpgrade
기능 세트를 활성화해야 합니다.
클러스터에서 TechPreviewNoUpgrade
기능 세트를 활성화하면 취소할 수 없으며 마이너 버전 업데이트를 방지할 수 없습니다. 프로덕션 클러스터에서 이 기능 세트를 활성화해서는 안 됩니다.
프로세스
PodDisruptionBudget
오브젝트를 정의하는 YAML 파일을 생성하고 비정상 Pod 제거 정책을 지정합니다.pod-disruption-budget.yaml
파일 예apiVersion: policy/v1 kind: PodDisruptionBudget metadata: name: my-pdb spec: minAvailable: 2 selector: matchLabels: name: my-pod unhealthyPodEvictionPolicy: AlwaysAllow 1
- 1
IfHealthyBudget
또는AlwaysAllow
를 비정상 Pod 제거 정책으로 선택합니다.unhealthyPodEvictionPolicy
필드가 비어 있는 경우 기본값은IfHealthyBudget
입니다.
다음 명령을 실행하여
PodDisruptionBudget
오브젝트를 생성합니다.$ oc create -f pod-disruption-budget.yaml
AlwaysAllow
비정상적인 Pod 제거 정책이 설정된 PDB를 사용하면 노드를 드레이닝하고 이 PDB에서 방해하는 애플리케이션의 Pod를 제거할 수 있습니다.
추가 리소스
- 기능 게이트를 사용한 기능 활성화
- Kubernetes 문서의 비정상 Pod 제거 정책