Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как установить дополнение сетевой сетки на базе Istio для кластера Azure Kubernetes Service (AKS).
Для получения дополнительной информации о Istio и дополнении для сервисной сетки см. дополнение для сервисной сетки на основе Istio для службы Kubernetes в Azure.
Подсказка
Вы можете использовать Microsoft Copilot в Azure для развертывания Istio в кластерах AKS на портале Azure. Дополнительные сведения см. в статье "Работа с кластерами AKS эффективно с помощью Microsoft Copilot в Azure".
Перед началом
Для надстройки требуется установка Azure CLI версии 2.57.0 или более поздней. Чтобы проверить версию, можно запустить
az --version
. Чтобы выполнить установку или обновление, см. сведения в статье Установка Azure CLI.Чтобы найти информацию о том, какие версии дополнений Istio доступны в регионе и их совместимость с версиями кластеров AKS, используйте команду
az aks mesh get-revisions
:az aks mesh get-revisions --location <location> -o table
В некоторых случаях CRD Istio от предыдущих установок могут не удаляться автоматически при деинсталляции. Убедитесь, что существующие CRD-файлы Istio удаляются:
kubectl delete crd $(kubectl get crd -A | grep "istio.io" | awk '{print $1}')
Рекомендуется также очистить другие ресурсы от самостоятельно управляемых установок Istio, таких как ClusterRoles, MutatingWebhookConfigurations и ValidatingWebhookConfigurations.
Обратите внимание, что если вы решили использовать какие-либо
istioctl
команды CLI, необходимо включить флаг, чтобы указать на установку надстройки Istio:--istioNamespace aks-istio-system
Настройка переменных среды
export CLUSTER=<cluster-name>
export RESOURCE_GROUP=<resource-group-name>
export LOCATION=<location>
Установить дополнение Istio
В этом разделе описано, как установить надстройку Istio во время создания кластера или включить для существующего кластера с помощью Azure CLI. Если вы хотите установить дополнение с помощью Bicep, обратитесь к руководству по установке кластера AKS с дополнением сетки службы Istio с помощью Bicep. Чтобы получить подробную информацию об определении ресурсов Bicep для кластера AKS, см. справочник по Bicep managedCluster.
Примечание.
Если вам нужны istiod
модули pod шлюза и входящего трафика, запланированные на определенные узлы, можно использовать системные узлы AKS или azureservicemesh/istio.replica.preferred
метку узла. Pod имеют привязанности к узлам с взвешанным предпочтением 100
для системных узлов AKS, помеченных kubernetes.azure.com/mode: system
, и взвешанным предпочтением 50
для узлов, помеченных azureservicemesh/istio.replica.preferred: true
.
Выбор ревизии
Если надстройка включена без указания редакции, для вас устанавливается поддерживаемая по умолчанию редакция.
Чтобы указать исправление, выполните следующие шаги.
-
az aks mesh get-revisions
Используйте команду, чтобы проверить, какие редакции доступны для разных версий кластера AKS в регионе. - На основании доступных ревизий вы можете включить флаг
--revision asm-X-Y
(например,--revision asm-1-24
) в команду включения, используемую для установки сетки.
Установка сетки во время создания кластера
Чтобы установить надстройку Istio при создании кластера, используйте --enable-azure-service-mesh
или--enable-asm
параметр.
az group create --name ${RESOURCE_GROUP} --location ${LOCATION}
az aks create \
--resource-group ${RESOURCE_GROUP} \
--name ${CLUSTER} \
--enable-asm \
--generate-ssh-keys
Установка сетки для существующего кластера
Следующий пример включает надстройку Istio для существующего кластера AKS:
Внимание
Невозможно включить надстройку Istio в существующем кластере, если надстройка OSM уже находится в кластере. Удалите надстройку OSM перед установкой надстройки Istio. Дополнительные сведения см. в статье об удалении надстройки OSM из кластера AKS. Надстройка Istio может быть включена только в кластерах AKS версии >= 1.23.
az aks mesh enable --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Проверка установки
Чтобы проверить установку надстройки Istio в кластере, выполните следующую команду:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.mode'
Подтвердите, что отображается Istio
.
Используйте az aks get-credentials
для работы с учетными данными вашего кластера AKS.
az aks get-credentials --resource-group ${RESOURCE_GROUP} --name ${CLUSTER}
Используйте kubectl
, чтобы убедиться, что поды istiod
(контрольной плоскости Istio) успешно работают:
kubectl get pods -n aks-istio-system
Убедитесь, что модуль istiod
pod имеет состояние Running
. Например:
NAME READY STATUS RESTARTS AGE
istiod-asm-1-24-74f7f7c46c-xfdtl 1/1 Running 0 2m
istiod-asm-1-24-74f7f7c46c-4nt2v 1/1 Running 0 2m
Включение внедрения сайдкара
Чтобы автоматически установить контейнер-сайдкар в любые новые pods, необходимо добавить аннотацию к пространствам имен с меткой редакции, соответствующей версии плоскости управления, установленной в настоящее время.
Если вы не уверены, какая редакция установлена, используйте:
az aks show --resource-group ${RESOURCE_GROUP} --name ${CLUSTER} --query 'serviceMeshProfile.istio.revisions'
Примените метку редакции:
kubectl label namespace default istio.io/rev=asm-X-Y
Внимание
Явное управление версиями, соответствующее редакции плоскости управления (например, istio.io/rev=asm-1-24
) требуется.
Значение по умолчанию istio-injection=enabled
не будет работать и вызовет пропуск пространственной области при внедрении побочного модуля для добавки.
Для ручного внедрения сайдкара с помощью istioctl kube-inject
, необходимо указать дополнительные параметры для istioNamespace
(-i
) и revision
(-r
). Например:
kubectl apply -f <(istioctl kube-inject -f sample.yaml -i aks-istio-system -r asm-X-Y) -n foo
Триггерная инъекция сайдкара
Вы можете развернуть предоставленное для тестирования пример приложения или активировать внедрение сайдкара для существующих рабочих нагрузок.
Существующие приложения
Если у вас есть приложения, которые нужно добавить в сеть, убедитесь, что их пространства имен разметлены, как на предыдущем шаге, а затем перезапустите их внедрение, чтобы активировать внедрение сайдкара.
kubectl rollout restart -n <namespace> <deployment name>
Убедитесь, что внедрение сайдкара прошло успешно, убедившись, что все контейнеры готовы и проверьте наличие контейнера в выводе istio-proxy
, например:
kubectl describe pod -n namespace <pod name>
Контейнер istio-proxy
является сайдкаром Envoy. Теперь приложение является частью плоскости данных.
Разверните примерное приложение
Используйте kubectl apply
для развертывания примера приложения в кластере:
kubectl apply -f https://raw.githubusercontent.com/istio/istio/release-1.24/samples/bookinfo/platform/kube/bookinfo.yaml
Примечание.
Кластерам, использующим HTTP прокси-сервер для доступа в Интернет по исходящему трафику, потребуется настроить Service Entry. Для получения инструкций по настройке см. поддержку прокси-сервера HTTP в Службе Azure Kubernetes
Убедитесь, что в вашем кластере имеются несколько развертываний и служб. Например:
service/details created
serviceaccount/bookinfo-details created
deployment.apps/details-v1 created
service/ratings created
serviceaccount/bookinfo-ratings created
deployment.apps/ratings-v1 created
service/reviews created
serviceaccount/bookinfo-reviews created
deployment.apps/reviews-v1 created
deployment.apps/reviews-v2 created
deployment.apps/reviews-v3 created
service/productpage created
serviceaccount/bookinfo-productpage created
deployment.apps/productpage-v1 created
Используйте kubectl get services
для проверки успешности создания служб:
kubectl get services
Убедитесь, что развернуты следующие службы:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
details ClusterIP 10.0.180.193 <none> 9080/TCP 87s
kubernetes ClusterIP 10.0.0.1 <none> 443/TCP 15m
productpage ClusterIP 10.0.112.238 <none> 9080/TCP 86s
ratings ClusterIP 10.0.15.201 <none> 9080/TCP 86s
reviews ClusterIP 10.0.73.95 <none> 9080/TCP 86s
kubectl get pods
NAME READY STATUS RESTARTS AGE
details-v1-558b8b4b76-2llld 2/2 Running 0 2m41s
productpage-v1-6987489c74-lpkgl 2/2 Running 0 2m40s
ratings-v1-7dc98c7588-vzftc 2/2 Running 0 2m41s
reviews-v1-7f99cc4496-gdxfn 2/2 Running 0 2m41s
reviews-v2-7d79d5bd5d-8zzqd 2/2 Running 0 2m41s
reviews-v3-7dbcdcbc56-m8dph 2/2 Running 0 2m41s
Подтвердите, что все поды имеют статус Running
с двумя контейнерами в колонке READY
. Второй контейнер (istio-proxy
), добавленный к каждому поду, — это сайдкар Envoy, внедренный Istio, а другой — контейнер приложения.
Чтобы протестировать этот пример приложения на основе входящего трафика, перейдите к следующему шагу next-steps.
Следующие шаги
Azure Kubernetes Service