你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure Kubernetes 服务 (AKS)(预览版)中为基于 Istio 的服务网格附加产品启用本机 Sidecar 模式
Kubernetes 本机 sidecar 旨在提供一种更可靠且用户友好的方式将 sidecar 模式合并到 Kubernetes 应用程序中,从而提高效率、可靠性和简单性。
本机 sidecar 非常适合 Istio。 它提供多种优势,例如简化的 sidecar 管理。 此外,它还提高了可靠性和协调性。 它也可以优化资源并提高运营效率。
从 Kubernetes 版本 1.29 开始,AKS 已启用 sidecar 容器功能。 通过此更改,Istio 本机 sidecar 模式可以与 AKS 的 Istio 附加产品一起使用。
本文介绍如何在 AKS 上为基于 Istio 的服务网格启用本机 sidecar 模式。
通过 az feature register 注册
IstioNativeSidecarModePreview
功能标志。az feature register --namespace Microsoft.ContainerService --name IstioNativeSidecarModePreview
通过 az feature show 验证注册状态。
az feature show --namespace Microsoft.ContainerService --name IstioNativeSidecarModePreview
需要花费几分钟时间,状态才会显示为
Registered
。当状态反映“已注册”时,通过 az provider register 来刷新
Microsoft.ContainerService
资源提供程序的注册。az provider register --namespace Microsoft.ContainerService
使用 az aks show 检查 AKS 群集的 Kubernetes 控制平面版本是否为 1.29 或更高版本。
az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER -o json | jq ".kubernetesVersion"
如果控制平面版本过低,请升级 Kubernetes 控制平面。
确保节点池运行
1.29
或更高版本,并且电源状态为正在运行。az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER -o json | jq ".agentPoolProfiles[] | { currentOrchestratorVersion, powerState}"
注意
本机 sidecar 模式需要 Kubernetes 控制平面和数据平面均为 1.29 及更高版本。 在启用本机 sidecar 模式之前,请确保所有节点都已升级到 1.29。 否则,sidecar 将无法按预期工作。
如果任何节点池版本过低,请将节点映像升级到
1.29
或更高版本。请确保 Istio 附加产品为
asm-1-20
或更高版本。az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER -o json | jq ".serviceMeshProfile.istio.revisions"
如果
istiod
版本过低,请按照 Istio 升级中的步骤升级到asm-1-20
或更高版本。
需要使用 az aks update 命令协调 AKS 群集。
az aks update --resource-group $RESOURCE_GROUP --name $CLUSTER
启用本机 sidecar 模式后,将在 Istio 的控制平面 Pod 模板中显示环境变量 ENABLE_NATIVE_SIDECARS
,值为 true
。 使用以下命令检查 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 控制平面准备就绪后,请滚动重启工作负载,让 istiod
注入本机 sidecar。
for ns in $(kubectl get ns -l istio.io/rev -o=jsonpath='{.items[0].metadata.name}'); do
kubectl rollout restart deployments -n $ns
done
对于使用 istioctl kube-inject 注入 istio sidecar 的部署,需要重新注入 sidecar。
如果成功启用本机端模式,istio-proxy
容器将显示为 init 容器。 使用以下命令检查 sidecar 注入:
kubectl get pods -o "custom-columns=NAME:.metadata.name,INIT:.spec.initContainers[*].name,CONTAINERS:.spec.containers[*].name"
istio-proxy
容器应显示为 Init 容器。
NAME INIT CONTAINERS
sleep-7656cf8794-5b5j4 istio-init,istio-proxy sleep
使用 az aks create 命令创建新的 AKS 群集时,请选择版本 1.29
或更高版本、istio asm-1-20
或更高版本。 新群集应自动启用本机 sidecar 模式。
az aks create \
--resource-group $RESOURCE_GROUP \
--name $CLUSTER \
--enable-asm \
--kubernetes-version 1.29 \
--revision asm-1-20 \
--generate-ssh-keys
...