05 февраля 2026

Случайным образом отваливаются пробы в GKE после установки Cilium и Istio Ambient

 Устанавливал в GKE (Google Kubernetes Engine) кластер Cilium с Istio в режиме ambient и столкнулся со случайными ошибками readiness/liveness проб. Версия GKE 1.34.3, Cilium 1.18.4 и Istio 1.26.3 - не самые свежайшие версии, но работают в других окружениях.

Факты таковы:

  • из десятка подов которые разворачиваются в тестовом окружении один или несколько не проходит readiness/liveness пробу
  • внутри пода и с соседнего пода можно запросить нужный URL который используют пробы
  • если вручную удалить этот под, то он начинает работать нормально
  • автоматический рестарт из-за liveness не исправляет ситуацию

Я уже сталкивался с "отвалившимися" пробами после включения Istio Ambient, но тогда пробы не работали в 100% случаев, а здесь это происходит случайным образом. Исправление удалением пода намекает на проблемы связанные с работой CNI.

Сейчас Cilium и Istio Ambient настроены следующим образом

Cilium
ipam:
  mode: kubernetes # https://docs.cilium.io/en/latest/network/concepts/ipam/gke/#configuration

cni:
  binPath: /home/kubernetes/bin # https://github.com/cilium/cilium/issues/35336
  exclusive: false
Istio CNI
global:
  platform: gke

profile: ambient

Смотрел логи Hubble, но там нет заблокированных соединений. Неймспейсы, в которых разворачиваются приложения, не включены в Istio Ambient и в логах ztunnel только сообщения об игнорировании подов из этих неймспейсов.

В процессе исследования этой проблемы нашёл в кластере забытый ip-masq-agent и удалил его. После сделал ротацию всех нод и сейчас наблюдаю вернётся ли эта проблема.

На следующий день проблема никуда не делась и в этот раз попробовал задать taint на нодах с приложениями чтобы они не могли выполниться до конфигурации нод cilium агентом. Чтобы это работало вместе с cluster autoscaler нужно задать taint вида startup-taint.cluster-autoscaler.kubernetes.io/cilium-not-ready (важна именно выделенная часть) и определить его же в конфигурации cilium.

agentNotReadyTaintKey: "startup-taint.cluster-autoscaler.kubernetes.io/cilium-not-ready"

Перезапуск нод ничего нового не принёс, но я смог надёжно воспроизводить проблему. Для этого нужно за короткий промежуток времени создать 20-30 подов и несколько из них не будут проходить пробы.

Пока решил полностью удалить Cilium и поднять отдельную копию кластера для экспериментов.


Вы можете следить за обновлениями блога с помощью Atom/RSS и Telegram.

Комментариев нет:

Отправить комментарий