🛠️ kubectl drain не проходит из-за PodDisruptionBudget

Deployment имеет 3 replicas.

PDB:

minAvailable: 2

Кажется:

один Pod всегда можно evict’ить.

Не всегда.

Если все три healthy:

currentHealthy: 3 desiredHealthy: 2 disruptionsAllowed: 1

Но если один Pod уже NotReady:

currentHealthy: 2 desiredHealthy: 2 disruptionsAllowed: 0

Реплик всё ещё три.

Но запас availability уже исчерпан.

Следующая voluntary eviction нарушит budget.

Что проверить:

kubectl get pdb -A kubectl describe pdb -n

Смотрите:

— minAvailable / maxUnavailable; — currentHealthy; — desiredHealthy; — disruptionsAllowed; — expectedPods.

И отдельно — какие Pod реально Ready=True.

PDB регулирует voluntary disruptions.

kubectl drain учитывает его через eviction-механику.

Но PDB не защищает от всех involuntary failures.

Ещё один вопрос:

есть ли capacity для replacement Pod?

Если новый Pod остаётся Pending, budget может не восстановиться.

Также проверьте:

unhealthyPodEvictionPolicy

Default — IfHealthyBudget.

AlwaysAllow может упростить eviction unhealthy running Pod, но это не универсальная production-настройка.

Не начинайте с удаления PDB и не используйте --disable-eviction как стандартный обход.

Диагностический порядок:

drain error → PDB → currentHealthy → desiredHealthy → disruptionsAllowed → Ready Pod → capacity → unhealthyPodEvictionPolicy

Сохраните проверку PDB перед maintenance и обновлением worker nodes.

🔹🔹🔹🔹

🛠️ kubectl drain не проходит из-за PodDisruptionBudget
Deployment имеет 3 replicas.
PDB:
minAvailable: 2
Кажется:
один Pod всегда можно evict’ить.
Не всегда | Сетка — социальная сеть от hh.ru