Устранение неполадок плагина Istio CNI
Лог
Лог плагина Istio CNI предоставляет информацию о том, как плагин настраивает перенаправление трафика приложений в подах на основе PodSpec.
Плагин работает в пространстве процесса контейнерного рантайма, поэтому записи лога CNI можно увидеть в логе kubelet.
Для упрощения отладки плагин CNI также отправляет свой лог в DaemonSet istio-cni-node.
Уровень логирования по умолчанию для плагина CNI — info. Чтобы получить более подробный вывод лога, можно изменить уровень, отредактировав cni.values.logLevel в конфигурации компонента ServiceMesh для istioCNI.
Лог пода DaemonSet Istio CNI также содержит информацию об установке плагина CNI и устранении гонок.
Готовность DaemonSet
Готовность DaemonSet CNI указывает на то, что плагин Istio CNI корректно установлен и настроен.
Если DaemonSet Istio CNI не готов, это свидетельствует о проблемах. Для диагностики смотрите логи DaemonSet istio-cni-node.
Устранение гонок
По умолчанию в DaemonSet Istio CNI включено устранение гонок, которое эвакуирует под, запущенный до того, как плагин CNI стал готов. Чтобы понять, какие поды были эвакуированы, ищите в логах строки вида:
Диагностика ошибки запуска пода
Распространённая проблема с плагином CNI — это сбой запуска пода из-за ошибки настройки сетевого окружения контейнера. Обычно причина сбоя записывается в события пода и видна в описании пода:
Если под постоянно получает ошибку инициализации, проверьте лог init-контейнера istio-validation на наличие ошибок «connection refused», например:
Init-контейнер istio-validation запускает локальный dummy-сервер, который слушает порты перенаправления трафика inbound/outbound и проверяет, может ли тестовый трафик быть перенаправлен на dummy-сервер.
Если перенаправление трафика пода настроено некорректно плагином CNI, init-контейнер istio-validation блокирует запуск пода, чтобы предотвратить обход трафика.
Чтобы проверить наличие ошибок или неожиданных сетевых настроек, ищите ID пода в логах istio-cni-node.
Другим симптомом некорректной работы плагина CNI является постоянная эвакуация пода при запуске. Обычно это происходит из-за неправильной установки плагина, из-за чего перенаправление трафика пода не может быть настроено. Логика CNI устранения гонок считает под «сломавшимся» из-за гонки и постоянно эвакуирует его. При возникновении этой проблемы проверьте лог DaemonSet CNI, чтобы узнать, почему плагин не удалось корректно установить.
При использовании Multus для объединения нескольких провайдеров CNI, например Kube-OVN, может возникнуть ситуация, когда плагин Istio CNI устанавливает конфигурацию несколько раз (как в Multus, так и в Kube-OVN), что приводит к циклической цепочке CNI и невозможности настроить сеть для пода.
Для решения этой проблемы можно явно указать cni.values.cniConfFileName с именем конфигурационного файла Multus.
Также рекомендуется вручную проверить все конфигурации CNI, чтобы убедиться в отсутствии дублирующихся настроек.