Kubernetes sidecar 容器 功能旨在提供更可靠且用户友好的方法来将 sidecar 模式合并到 Kubernetes 应用程序中,提高效率、可靠性和简单性。
原生 sidecar 非常适合 Istio。 它提供了多种优势,包括简化的 Sidecar 管理、可靠性提升以及协调增强。 在原生 sidecar 模式下,sidecar 总是先于主应用程序启动。 主应用后,它还会正常关闭。 此行为减少了处理容器生命周期或 Pod 终止问题时的手动解决方法的需求。
从 Kubernetes 版本 1.29 开始,AKS 已启用 sidecar 容器功能。 通过此更改,Istio 本机 sidecar 模式可以与 AKS 的 Istio 附加产品一起使用。
从 版本 1.27 开始,原生 sidecar 模式成为 Istio 的默认设置。 基于 Istio 的 AKS 服务网格与此功能行为保持一致,对现有客户的干扰极小。
默认行为
使用预览 IstioNativeSidecarModePreview 功能标志使用 Istio 加载项的现有群集会保留其当前的本机 sidecar 状态,而不考虑群集版本或 Istio 加载项修订。
从 AKS 1.33 版本和 Istio 附加组件开始,AKS 服务网格附加组件默认使用本地边车容器作为 Envoy 代理。 此设置根据您的群集版本、ASM 加载项版本,以及加载项是新安装还是升级而应用。
| AKS 版本 | ASM 版本 | 加载项安装行为 | 升级行为 |
|---|---|---|---|
| < 1.33 | 任意 | Disabled | Disabled |
| 1.33+ | < asm-1-27 |
Disabled | Disabled |
| 1.33+ | asm-1-27 |
已启用(过渡版本) | 已禁用(升级不自动启用) |
| 1.33+ | asm-1-28+ |
已启用 | 已启用(通过网状网或群集升级到所需版本) |
新集群
使用 az aks create 命令创建新的 AKS 群集时,请选择 1.33 版本或更高版本,以及 Istio asm-1-27 版本或更高版本。 新群集已自动启用原生 sidecar 功能模块模式。
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过程中选择或更新。
现有群集
本部分介绍如何检查原生 sidecar 功能的状态或在现有集群上启用该功能。
检查功能状态
启用本机 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-proxy 容器显示为一个 init 容器。 使用以下命令检查 sidecar 注入:
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
检查先决条件
如果未启用原生 sidecar,则可能是由于未满足某个版本的先决条件。
使用 az aks show 检查 AKS 群集的 Kubernetes 控制平面版本是否为 1.33 或更高版本。
az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER --query "kubernetesVersion" -o tsv如果控制平面版本太旧,则可以 升级 Kubernetes 控制平面。
确保节点池运行版本为
1.33或更新,并且电源状态为运行。az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER --query "agentPoolProfiles[].{name:name,currentOrchestratorVersion:currentOrchestratorVersion,powerState:powerState.code}" -o table注意
默认情况下,原生 sidecar 模式需要 Kubernetes 控制平面和数据平面在版本 1.33 或更高版本上。 在启用服务网格加载项之前,请确保所有节点都是版本 1.33 或更高版本。 否则,默认情况下不会启用原生 sidecar。
如果任何节点池版本太旧, 请将节点映像升级到 版本
1.33或更高版本。如果已启用服务网格加载项,请检查已安装的对应版本:
az aks show --resource-group $RESOURCE_GROUP --name $CLUSTER --query "serviceMeshProfile.istio.revisions" -o tsv要升级到原生 sidecar 支持,将网格修订版升级到
asm-1-28或更高版本。