Kubernetes 1.36 «Haru»: user namespaces стали stable, IPVS в kube-proxy удалён

22 апреля вышел Kubernetes v1.36 под кодовым именем ハル (Haru) — 70 доработок, 18 из них в стабильном статусе. Главная головная боль для админов: из kube-proxy окончательно вырезали режим IPVS.

DB
DBG · по материалам Kubernetes Blog
0

Kubernetes v1.36 вышел 22 апреля. Кодовое имя — ハル (Haru), японское слово, в котором одновременно слышится «весна», «ясное небо» и «далёкий горизонт»; логотип релиза отсылает к «Красной Фудзи» Хокусая. Цикл занял 15 недель, с 12 января, и это, как обычно, релиз без единой громкой фичи, зато с длинным списком вещей, которые наконец доехали до продакшн-готовности.

Всего в релизе 70 доработок: 18 перешли в stable, 25 в beta и 25 в alpha. Из того, что стало стабильным, для эксплуатации важнее всего:

  • User namespaces для подов — изоляция UID/GID контейнера от хостовых, то, чего ждали годами;
  • SELinux volume label changes — вместо рекурсивной перепометки файлов на томе метка теперь навешивается опцией монтирования. На SELinux-системах это убирает многосекундные (а на жирных томах и многоминутные) задержки старта подов;
  • fine-grained kubelet API authorization — гранулярные права на эндпоинты kubelet;
  • declarative validation, PSI-метрики (давление по CPU/памяти/IO), volume group snapshots и mixed version proxy.

А вот раздел удалений в этот раз болезненный. Из kube-proxy вырезан режим IPVS. Удалён плагин тома gitRepo — древний механизм, который клонировал репозиторий прямо в под. Плюс продолжается вывод из обращения Service ExternalIPs.

Что делать практикующему разработчику и админу. Не обновляйте прод, пока не проверили режим kube-proxy: kubectl -n kube-system get configmap kube-proxy -o yaml и смотрите поле mode. Если там ipvs — апгрейд на 1.36 сломает вам сеть сервисов, мигрировать нужно заранее, на nftables (предпочтительно) или iptables, и обязательно прогнать нагрузочный тест: профиль производительности и поведение при большом числе Service у режимов разное. Дальше — grep -r gitRepo по всем манифестам и Helm-чартам; если он где-то остался, под просто не запустится, замена — initContainer с git clone в emptyDir. Обходного пути через feature gate ни для IPVS, ни для gitRepo нет: код удалён, а не отключён. И приятный бонус: если вы живёте на SELinux-хостах и мирились с медленным стартом подов на больших PVC — после апгрейда эта боль уходит сама, без изменений в манифестах.

Комментарии

Kubernetes 1.36 «Haru»: user namespaces стали stable, IPVS в kube-proxy удалён | DBG