PodDisruptionBudget(PDB)

IMKUNYOUNG·2025년 4월 3일
0

1. PodDisruptionBudget(PDB)란?

PodDisruptionBudget(PDB)은 Kubernetes에서 애플리케이션의 가용성을 보장하기 위해 사용되는 정책 리소스입니다. 이를 통해 관리자는 계획된 중단(예: 노드 유지보수, 롤링 업데이트 등) 중에도 최소한의 파드 개수를 유지하여 서비스 가용성을 보호할 수 있습니다.

2. PDB의 주요 기능

  • 최소 가용 개수(minAvailable) 설정을 통해 항상 유지해야 하는 파드 개수 지정 가능
  • 최대 중단 개수(maxUnavailable) 설정을 통해 한 번에 중단될 수 있는 파드 개수 제한 가능
  • 클러스터 내 계획된 중단 발생 시(예: kubectl drain 실행) 정책을 적용하여 가용성 유지
  • 강제 중단(unplanned disruptions)(예: 노드 장애)에는 영향을 미치지 않음

3. PDB의 동작 방식

  1. 클러스터 관리자가 노드 유지보수를 위해 kubectl drain 명령을 실행하면, Kubernetes는 해당 노드의 파드를 종료하기 전 PDB 정책을 확인합니다.
  2. 정의된 minAvailable 또는 maxUnavailable 조건을 충족하는 한도 내에서만 파드 종료가 진행됩니다.
  3. 조건을 위반하게 되는 경우, 추가적인 파드 종료가 차단됩니다.

4. PodDisruptionBudget YAML 예제

최소 가용 개수(minAvailable) 설정 예제
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: my-app-pdb
spec:
  minAvailable: 2
  selector:
    matchLabels:
      app: my-app

위 설정은 app: my-app 라벨이 있는 파드 중 최소 2개가 항상 실행되어야 함을 의미합니다.

최대 중단 개수(maxUnavailable) 설정 예제
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
  name: my-app-pdb
spec:
  maxUnavailable: 1
  selector:
    matchLabels:
      app: my-app

위 설정은 app: my-app 라벨이 있는 파드 중 한 번에 최대 1개만 중단될 수 있도록 제한합니다.

5. PDB 활용 사례

  • 무중단 서비스 운영: 데이터베이스, API 서버 등 중요한 서비스의 가용성 유지
  • 안정적인 롤링 업데이트: 노드 유지보수나 업그레이드 시 서비스 중단 방지
  • 멀티 AZ 배포 환경 최적화: 파드가 가용 영역별로 분산되어 실행되도록 보장

6. 주의 사항

  • PDB는 Deployment, StatefulSet, ReplicaSet과 함께 사용해야 효과적
  • 단일 파드만 존재하는 경우 PDB를 설정해도 유지보수 시 중단을 피할 수 없음
  • 너무 엄격한 설정(minAvailable이 전체 파드 개수와 동일 등)은 운영을 어렵게 만들 수 있음

7. 마치며

PodDisruptionBudget(PDB)은 Kubernetes에서 계획된 중단에 대비해 서비스의 안정성을 유지하는 중요한 도구입니다. 적절한 PDB 설정을 통해 유지보수 중에도 중요한 애플리케이션이 중단되지 않도록 보호할 수 있습니다. 클러스터 운영 중 지속적인 가용성을 보장하려면 PDB를 적극 활용하는 것이 좋습니다.

kubernetes.io

0개의 댓글