Azure Kubernetes 服务(AKS)管理多个遵循不同版本控制策略和修补策略的组件。 了解这些组件的版本控制如何帮助你规划升级、跟踪安全修补程序以及有效地管理群集生命周期。
本文介绍不同类别 AKS 组件的版本控制方法及其随时间推移的维护方式。
AKS 组件概述
AKS 由多个组件组成,每个组件都有不同的版本控制模式:
由 AKS 托管的 Kubernetes 群集控制平面:包括托管的 Kubernetes API 服务器、etcd 及其他群集控制平面组件。
节点映像:操作系统、容器运行时和核心 Kubernetes 节点组件。 有关在节点映像中打包哪些组件的详细信息,请参阅 AKS GitHub 存储库下的虚拟硬盘(VHD)备注文件夹。
工作负荷:AKS 托管功能/加载项/扩展可以在以下两类中包含组件:
-
独立插件/功能/扩展Pod:这些AKS的功能/插件/扩展在客户托管的节点上运行独立Pod(从部署或守护进程集合中)。 示例包括
istiod、azure-cns和coredns。 - 客户工作负载 Pod 中的 AKS 组件:某些 AKS 功能/加载项/扩展可能具有在右侧所示的用户 Pod 中运行的边车。 例如,Istio 将 Sidecar 代理注入到客户工作负载的 Pod 中。
下表总结了如何为每个 AKS 组件类别管理版本控制和更新:
-
独立插件/功能/扩展Pod:这些AKS的功能/插件/扩展在客户托管的节点上运行独立Pod(从部署或守护进程集合中)。 示例包括
| 控制平面 | 节点映像 | 独立加载项/功能/扩展模块 | 客户工作负荷 Pod 内的 AKS 组件 | |
|---|---|---|---|---|
| 什么是被版本化的? | Kubernetes API 服务器,etcd,控制器 | 操作系统、容器运行时和核心 Kubernetes 节点组件 | 运行独立 Pod 的 AKS 功能、组件或扩展(例如:istiod) | 由附加组件/扩展注入的 Sidecar 容器或辅助容器 |
| 版本控制模型 | 遵循上游 Kubernetes 语义版本控制(主版本.次版本.PATCH)。 AKS 提供社区和长期支持(LTS)模型。 有关详细信息,请参阅 AKS 版本支持策略文档 | 节点映像版本以及 随 AKS 版本发布的 VHD 说明。 | 加载项/功能/扩展的次要版本与 AKS 的次要版本一对一绑定 | Sidecar 版本必须与附加控制平面兼容 |
| Update 方法 | 客户可以控制要升级到的版本 MAJOR.MINOR.PATCH 。 手动(az aks upgrade)或自动使用 自动升级通道 |
客户可以升级到最新支持的节点映像版本。 手动(az aks nodepool upgrade)或自动使用 自动升级通道 |
- 升级控制平面次要版本时升级的次要版本( Istio 除外;请参阅 Istio 升级文档) - AKS 发布自动升级补丁版本 |
客户需要手动更新工作负载以兼容的 sidecar 版本,这包括重启那些具有附加容器的工作负载,具体步骤请参阅加载项/功能/扩展中的文档。 |
版本管理最佳做法
安全注意事项:启用自动修补更新,以确保尽快应用安全修补程序。 选择最适合群集要求和风险容忍度的自动升级通道。 手动或自动:选择最符合作要求的更新策略。 自动更新提供及时的安全修补程序并减少运营开销,而手动更新提供对时间安排和变更管理的精确控制。 使用 计划内维护时段 来控制何时应用自动升级,确保更新在群集的批准时间范围内进行。 监视和准备更改:使用 AKS 发行说明 和 AKS 发布跟踪器随时了解即将发布的更新和新版本的可用性。 在升级生产环境之前,在非生产环境中验证升级。
-
对于生产群集:
- 考虑自动更新补丁,以便及时修复安全漏洞
- 根据作需求在自动或手动次要版本升级之间进行选择
- 首先测试暂存环境中的所有更改
- 对于开发集群:
- 中断性变更:监视 AKS 发布跟踪器 并查看 Kubernetes 弃用策略 ,以随时了解 AKS 和上游 Kubernetes 中的 API 弃用和中断性变更。
- 预升级验证:在升级生产群集之前,请在预生产群集上测试应用程序、自定义资源和第三方集成,以确保与新的 Kubernetes 版本和更新的 AKS 组件兼容。
使用 AKS 组件洞察(预览版)查看 AKS 组件版本
AKS Component Insights (Preview) 提供对 Azure Kubernetes 服务群集中运行的所有组件的确切版本的详细可见性。 此功能可帮助你了解群集的当前状态、计划升级并确定潜在的兼容性问题。
重要
AKS 预览功能可在自助服务和自愿选择的基础上启用。 预览版按“现状”和“视供应情况”提供,它们不包括在服务级别协议和有限保证范围内。 AKS 预览功能是由客户支持尽最大努力部分覆盖。 因此,这些功能并不适合用于生产。 有关详细信息,请参阅以下支持文章:
先决条件
| 先决条件 | 注释 |
|---|---|
| Azure CLI |
2.74.0 或更高版本。 若要查找版本,请运行 az --version。 如果需要安装或升级,请参阅 [安装 Azure CLI][install-azure-cli]。 |
Azure CLI aks-preview 扩展 |
18.0.0b19 或更高版本。 若要查找版本,请运行 az --version。 如果需要安装或升级,请参阅[管理 Azure CLI 扩展][azure-cli-extensions]。 |
可以使用以下命令安装或更新到最新的可用 aks-preview Azure CLI 扩展:
# Install the aks-preview extension
az extension add --name aks-preview
# Update to the latest version if already installed
az extension update --name aks-preview
使用 Azure CLI 查看组件版本
az aks get-upgrades使用命令查看组件版本:
az aks get-upgrades --resource-group myResourceGroup --name myAKSCluster
组件信息在 componentsByReleases 节中返回。 预期输出将类似于以下内容(此处仅显示 componentByReleases 的部分,以便简洁):
{
"componentsByReleases": [
{
"components": [
{
"hasBreakingChanges": false,
"name": "cloud-provider-node-manager-linux",
"version": "v1.32.5"
},
{
"hasBreakingChanges": false,
"name": "cloud-provider-node-manager-windows",
"version": "v1.32.5"
},
{
"hasBreakingChanges": false,
"name": "health-probe-proxy",
"version": "v1.29.1"
},
{
"hasBreakingChanges": false,
"name": "kubelet-serving-csr-approver",
"version": "v0.0.7"
},
{
"hasBreakingChanges": false,
"name": "coredns",
"version": "v1.11.3-8"
},
{
"hasBreakingChanges": false,
"name": "metrics-server",
"version": "v0.7.2-7"
}
],
"kubernetesVersion": "1.32"
}
]
}
显示的实际组件可能因群集配置、启用的加载项和 Kubernetes 版本而异。
az aks get-upgrades使用命令查看特定群集组件的完整列表。
每个组件条目包括:
- 名称:组件标识符
- 版本:群集上安装的组件的确切版本
- hasBreakingChanges:此组件版本是否引入了中断性变更
小窍门
除了使用 Azure CLI 查询组件版本信息之外,还可以使用 GET upgradeProfiles API 预览版 AKS API(2025-05-04-preview 或更高版本)以编程方式检索详细的组件版本数据。
后续步骤
- 计划升级: 配置自动群集升级 或 计划手动升级
- 保持了解:监视 AKS 版本 以获取更新和重大更改
- 了解支持: 查看 Kubernetes 版本支持策略