Как работают k8s пробы, если внутри пода будет несколько контейнеров?

Категория: k8s

Просмотров: 39

Ответ:

Когда внутри пода один из контейнеров становится готовым (проходит свои readinessProbe), но другие контейнеры ещё не готовы (не прошли свои пробы), под в целом не считается готовым. В Kubernetes состояние пода определяется на основе состояния всех его контейнеров, особенно тех, у которых определены readinessProbe.

Технически Kubernetes работает следующим образом:

  • Под считается готовым только тогда, когда все контейнеры внутри него, у которых определены readinessProbe, успешно проходят свои проверки.

  • Сервисы (Service) в Kubernetes направляют трафик только на те поды, которые находятся в состоянии "Ready" (готовы).

  • Если хотя бы один контейнер в поде с readinessProbe не прошёл проверку и не готов, под не будет получать трафик через сервис.

Как это происходит на практике:

  1. Инициализация пода:

    • Все контейнеры внутри пода запускаются параллельно.
    • Kubernetes начинает отслеживать состояние каждого контейнера.
  2. Проверка готовности контейнеров:

    • Для каждого контейнера с readinessProbe Kubernetes периодически выполняет проверки.
    • Контейнеры без readinessProbe считаются готовыми сразу после запуска.
  3. Определение состояния пода:

    • Под считается готовым только тогда, когда все контейнеры с readinessProbe находятся в состоянии "Ready".
    • Если хотя бы один контейнер не готов, под в целом не готов.
  4. Маршрутизация трафика через сервис:

    • Сервисы Kubernetes используют метки (labels) и селекторы (selectors) для определения, на какие поды направлять трафик.
    • Трафик направляется только на поды, которые в состоянии "Ready".