k8s pod disruption budgets (PDB)
2024-03-22
파드의 중단에는 자발적 중단과 비자발적 중단이 있음. 자세한건 공식 문서에도 잘 나와있음.
요약하자면,
- 비자발적 중단 : 자원부족이나 오류, 장애 등의 원인
- 자발적 중단 : 사용자의 명령이나, 디플로이먼트 업데이트
비자발적 중단은 PDB 로 막을 수 없지만, 버짓은 차감된다. PDB 는 node drain 이나 deployment replica 감소로 인한 자발적 중단의 경우, 일시에 중단되는 파드의 수를 제한할 수 있다.
중요한 세가지 필드가 있음
.spec.selector
: pod selector.spec.minAvailable
: eviction 이후에도 있어야하는 pod 개수. absolute number, percentage 가능. (ex: 0% 또는 0).spec.maxUnavailable
: (k8s version >= 1.7) eviction 이후 unavailable 한 pod 개수.
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: zk-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: zookeeper