Собственный режим сайдкара для дополнения сервисной сетки на основе Istio в Azure Kubernetes Service (AKS)

Функция побочных контейнеров Kubernetes призвана обеспечить более надежный и удобный способ внедрения шаблонов побочных контейнеров в приложения Kubernetes, улучшая эффективность, надежность и простоту.

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

Начиная с Kubernetes версии 1.29, функция контейнеров боковика включена для AKS. При этом изменении режим машинного автомобиля Istio можно использовать с надстройкой Istio для AKS. Собственный режим бокового автомобиля стал стандартным для Istio начиная с версии 1.27. Сетевой сервис на основе Istio в AKS соответствует этому поведению с минимальными перебоями для существующих клиентов.

Поведение по умолчанию

Существующие кластеры с аддоном Istio, использующие флаг функции предварительного просмотра IstioNativeSidecarModePreview, сохраняют текущее независимое состояние сайдкара независимо от версии кластера или версии аддона Istio.

Начиная с AKS 1.33 и надстройки Istio, надстройка сетки служб AKS использует родной сайдкар для прокси-сервера Envoy по умолчанию для всех кластеров. asm-1-29До этого этот параметр применяется в зависимости от версии кластера, редакции надстройки сетки служб Azure и того, была ли надстройка установлена или обновлена.

Версия AKS Редакция ASM Поведение установки плагина Поведение обновления
< 1.33 Любое Disabled Disabled
1.33+ < asm-1-27 Disabled Disabled
1.33+ asm-1-27 Включено (переходный выпуск) Отключен (обновление не включает автоматическое включение)
1.33+ asm-1-28 Включено (переходный выпуск) Отключен (обновление не включает автоматическое включение)
1.33+ asm-1-29+ Включен Включен (по сетке или обновлению кластера до необходимых версий)

Новые кластеры

При создании нового кластера AKS с помощью команды az aks create выберите версию 1.33 или новее и Istio asm-1-27 или новее. В новом кластере автоматически включен изначальный режим сайдкара.

az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER \
    --enable-asm \
    --kubernetes-version 1.33 \
    --revision asm-1-27 \
    --generate-ssh-keys    
    ...

Для новой установки сервисной сетки в уже существующем кластере версии AKS 1.33 или более новой версии выберите > во время asm-1-27.

Существующие кластеры

В этом разделе описывается, как проверить состояние нативного функционала сайдкара.

Проверка состояния функции

Если включен собственный режим бокового автомобиля, переменная ENABLE_NATIVE_SIDECARS среды отображается со значением true в шаблоне pod уровня управления Istio. Чтобы проверить istiod развертывание, используйте следующую команду.

kubectl get deployment -l app=istiod -n aks-istio-system -o json | jq '.items[].spec.template.spec.containers[].env[] | select(.name=="ENABLE_NATIVE_SIDECARS")'

Если собственный режим бокового автомобиля успешно включен, istio-proxy контейнер отображается как контейнер инициализации. Используйте следующую команду, чтобы проверить внедрение боковой кареты:

kubectl get pods -o "custom-columns=NAME:.metadata.name,INIT:.spec.initContainers[*].name,CONTAINERS:.spec.containers[*].name"

Контейнер istio-proxy должен отображаться как контейнер инициализации.

NAME                     INIT                     CONTAINERS
sleep-7656cf8794-5b5j4   istio-init,istio-proxy   sleep

Проверка предварительных условий

Если функция "native sidecar" не включена, скорее всего, не выполнено одно из предварительных требований версии.

  1. Убедитесь, что версия уровня управления Kubernetes кластера AKS — 1.33 или выше с помощью az aks show.

    az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER --query "kubernetesVersion" -o tsv
    

    Если версия контрольной плоскости слишком старая, можно обновить контрольный план Kubernetes.

  2. Убедитесь, что пулы узлов используют версию 1.33, или более новую, и состояние питания установлено как 'работающее'.

    az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER --query "agentPoolProfiles[].{name:name,currentOrchestratorVersion:currentOrchestratorVersion,powerState:powerState.code}" -o table
    

    Внимание

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

    Если версия пула узлов слишком старая, обновите образ узла до версии 1.33 или более поздней.

  3. Если надстройка сетки служб включена, проверьте установленную версию:

    az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER --query "serviceMeshProfile.istio.revisions" -o tsv
    

    Просмотрите таблицу по умолчанию, чтобы определить, соответствует ли изменение предварительным требованиям.

Следующие шаги