Найти в Дзене
2 подписчика

Hands-on experience


Решил запилить нормальный CI/CD в свой кубер, вместо ручного деплоя. Столкнулся с тем, что за долгое время без внимания, кластер оброс какими-то проблемами. А я вообще забыл, что там и как, пришлось много читать и пробовать.

Во-первых, полно подов с ошибкой disk-pressure: смотрю kubectl describe nodes - все с диском ок. Так я начал освежать тему:

- Taints and tolerations
На ноде можно выставлять taints, чтобы ограничить, какие поды на ней могут работать. Если есть taint, в спеке пода должен быть соответствующий toleration, disk-pressure - один из них, на ноду он накидывается динамически.

Я использую capsule, который заложил для потенциального развития кластера. И он использует еще одну тему:

- Admission controllers
Это инструмент, позволяющий проверять мутирующие запросы к Kube API и не дать им выполниться (после аутентификации и авторизации).

У меня какое-то время назад возникали проблемы с диском и я их решил его увеличением. А про taint не подумал. Taint disk-pressure накинулся, многие "системные" поды поотвалились, в том числе capsule admission webhook.

Возникло что-то типа дедлока: когда решились проблемы с диском, taint убраться не смог, потому что он не мог достучаться до упавшего capsule admission webhook pod'а, которй не мог заschedule'иться из-за taint'а disk-pressure.

Пришлось делать kubectl patch с добавлением toleration disk-pressure на deployment вебхуков capsule.
После этого под поднялся, я смог снять taint disk pressure (с помощью kubectl taint) и все остальные поды тоже ожили.

Очередной раз понял, что без регулярного практического опыта, знания выпадают из головы. Восстанавливать их чуть проще, чем просто изучать с нуля, но все равно затратно.
1 минута