Post

PDB(PodDisruptionBudget)

Pod가 의도된 중단에서도 안정적으로 유지되도록 보장하는 정책

개념 설명:

A PDB limits the number of Pods of a replicated application that are down simultaneously from voluntary disruptions.
공식문서
PDB는 Kubernetes에서 의도적인 중단(eviction) 중에도 일정 수의 Pod가 항상 실행되도록 보장하는 리소스입니다. 이는 클러스터 유지보수, 노드 재시작, 롤링 업데이트 등의 작업 중에도 서비스 가용성을 확보하는 데 사용됨.

  • 사용이 적합한 환경:
    • 롤링 업데이트, 클러스터 유지보수, 노드 교체 등으로 Pod가 일시적으로 중단될 수 있는 환경
    • 특히 서비스가 중단되면 안 되는 프로덕션 환경
  • 사용 방법:
    • PodDisruptionBudget 리소스를 정의해서 minAvailable 또는 maxUnavailable 중 하나를 설정합니다.
    1
    2
    3
    4
    5
    6
    7
    8
    9
    
    apiVersion: policy/v1
    kind: PodDisruptionBudget
    metadata:
      name: enginrect-pdb
    spec:
      minAvailable: 2
      selector:
        matchLabels:
          app: enginrect-api
    
    • 위 예시는 app=enginrect-api인 Pod 중 최소 2개는 항상 살아있도록 보장함.
  • 참고 팁:
    • minAvailablemaxUnavailable동시에 쓸 수 없음.
    • PDB는 Deployment, StatefulSet, ReplicaSet 등에 적용 가능.
    • eviction webhook이나 kubectl drain 시에도 이 설정이 반영되어 Pod 중단이 거부될 수 있음.
This post is licensed under CC BY 4.0 by the author.