目錄
最近看代碼時,老是在代碼中能看到PDB 是什麼呢?Pod Disruption Budget (pod 中斷 預算),含義其實是 終止pod前 通過labelSelector機制獲取正常運行的pod數目的限制,目的是對主動驅逐的保護措施。
場景
- 節點維護或升級時(kubectl drain)
- 對應用的自動縮容操作(autoscaling down)
- 由於節點不可用(not ready)導致的Pod驅逐就不能稱之爲主動
特性
- PDB指定一個pod集合在一段時間內存活的最小實例數量或者百分比
- 作用於一組被同一個控制器管理的pod。例如:RC或者statefulapp
- 使用PodDisruptionBudget控制器本身無法真正保障指定數量或者百分比的pod存活,PodDisruptionBudget控制器只能保證POD主動逃離的情況下業務不中斷或者業務SLA不降級
- 場景侷限於:主動驅逐
主動驅逐的場景,用用如果能夠保持存活pod數量,將會非常有用。通過使用Pod Disruption Budget 對象,應用可以保證那些主動移除pod的集羣操作永遠不會同一時間停掉太多pod,導致服務中斷或者服務降級。
kubectl drain 操作時遵循PDB對象的設定,如果在該節點上運行了屬於統一服務的多個pod,則爲了保證最少存活數量,系統會確保每終止一個pod就會在健康的node上啓動新的pod後,再繼續終止下一個pod容器。