Azure Kubernetes 服务的支持策略

本文介绍 Azure Kubernetes 服务 (AKS) 的技术支持策略和限制。 它还详细介绍了代理节点管理、托管的控制平面组件、非Microsoft开源组件以及安全或修补程序管理。

服务更新和版本

AKS 中的管理特性

AKS 是基础结构即服务(IaaS)和平台即服务(PaaS)的组合。 基本 IaaS 云组件(如计算或网络组件)提供对低级别控件和自定义选项的访问权限。 相比之下,AKS 提供统包式的 Kubernetes 部署,为你的群集提供了一组所需的通用配置和功能。 作为 AKS 用户,自定义和部署选项有限,并且不直接管理 Kubernetes 群集。

借助 AKS,可以获取一个完全托管的控制平面。 该控制平面包含执行操作并向最终用户提供 Kubernetes 群集所需的所有组件和服务。 所有 Kubernetes 组件都由 Azure 维护和操作。

Azure 通过控制平面管理和监视以下组件:

  • Kubernetes API 服务器和 kubelet
  • etcd 或兼容的键值存储,提供服务质量(QoS)、可伸缩性和运行时。
  • 像 CoreDNS 这样的 DNS 服务。
  • kube-proxy 和集群网络,除非使用 BYOCNI
  • 在 kube-system 命名空间中运行的任何其他加载项或系统组件。

某些组件(如代理节点)负有 共同的责任,其中必须帮助维护 AKS 群集。 例如,必须提供用户输入才能应用代理节点操作系统 (OS) 安全补丁。

服务是托管型的,Azure 和 AKS 团队将部署、操作并负责服务的可用性和功能。 客户无法改动这些托管组件。 为确保一致且可缩放的用户体验,Azure 将限制自定义。

共担责任

创建群集时,定义 AKS 创建的 Kubernetes 代理节点。 您的工作负载在这些节点上运行。 请记住以下代理节点约束:

  • Microsoft 支持部门的访问权限有限。 由于代理节点运行专用代码并存储敏感数据,因此Microsoft 支持部门无法在未经你明确权限或协助的情况下登录、运行命令或查看这些节点的日志。
  • 使用 Kubernetes 原生机制进行变更。 通过 IaaS API 直接对代理节点所做的任何修改都使群集不可支持。 使用 Kubernetes 原生机制(如 DaemonSet)来应用更改。
  • 不要更改系统创建的元数据。 可以添加标记和标签等元数据,但更改任何系统创建的元数据都会导致群集不受支持。

责任划分

以下矩阵总结了跨 AKS 群集的支持责任,并将 AKS 与在本地运行的自管理 Kubernetes 形成对比。 在 AKS 中,Microsoft管理控制平面和核心平台。 可以管理节点配置、工作负载、网络配置和数据。 共享区域是Microsoft提供和维护功能并启用、配置或计划该功能的地方。 使用矩阵作为概览指南,然后查看以下详细部分以获取支持详细信息。

使用以下键读取矩阵:

符号 Meaning
🔵 客户 你拥有和管理此区域。
🟣 共享 Microsoft提供和维护功能;启用、配置或计划该功能。
🟢Microsoft Microsoft拥有和管理此区域。
⚠️ 不支持 不受支持,或仅提供尽力支持。 有关详细信息,请参阅 不支持的方案
不適用 此功能不适用于自行管理的本地部署 Kubernetes。
责任区域 本地部署 Kubernetes AKS (Azure)
物理和基础结构
物理数据中心和网络 🔵 客户 🟢Microsoft
物理主机(服务器和 VM) 🔵 客户 🟢Microsoft
控制平面
Kubernetes 控制平面(API 服务器、etcd调度器、控制器) 🔵 客户 🟢Microsoft
控制平面高可用性和 SLA 🔵 客户 🟢Microsoft
etcd 备份(自动,每 30 分钟) 🔵 客户 🟢Microsoft
Kubernetes 版本升级(控制平面) 🔵 客户 🟣 共享
节点和操作系统
工作器节点预配和缩放 🔵 客户 🟣 共享
节点操作系统镜像和补丁更新 🔵 客户 🟣 共享
节点自动修复 不適用 🟢Microsoft
节点池配置(VM 大小、计数、标签、污点) 🔵 客户 🔵 客户
受管理的加载项和组件
AKS 托管加载项(CoreDNS、指标服务器、Azure 策略、CSI 驱动程序) 🔵 客户 🟣 共享
容器运行时 (containerd 🔵 客户 🟢Microsoft
kubeletkube-proxy 🔵 客户 🟢Microsoft
网络
由 Azure 管理的 CNI(Azure CNI、Cilium、kubenet) 🔵 客户 🟣 共享
自备 CNI 插件(BYOCNI 🔵 客户 🔵 客户 ⚠️ 不受支持
VNet、子网、NSG、UDR 🔵 客户 🔵 客户
Azure托管的入口控制器和负载均衡器 🔵 客户 🟣 共享
非Microsoft入口控制器 (nginxkongtraefik 🔵 客户 🔵 客户 ⚠️ 不受支持
网络策略(Pod 到 Pod 流量) 🔵 客户 🔵 客户
安全性
Kubernetes RBAC 和集群角色 🔵 客户 🔵 客户
Microsoft Entra ID 集成 🔵 客户 🟣 共享
机密管理 🔵 客户 🔵 客户
Pod 安全性(安全上下文、Pod 安全标准) 🔵 客户 🔵 客户
映像安全和漏洞扫描 🔵 客户 🟣 共享
托管容器映像的安全补丁更新 不適用 🟢Microsoft
工作负载
应用部署(Pod、Deployment、StatefulSet) 🔵 客户 🔵 客户
应用程序代码和容器映像 🔵 客户 🔵 客户
永久性存储(磁盘、文件共享) 🔵 客户 🟣 共享
非Microsoft或开源工具(Istio、Helm 图表) 🔵 客户 🔵 客户 ⚠️ 不受支持
DaemonSet 用于节点自定义的对象 🔵 客户 🔵 客户 ⚠️ 不受支持
数据和符合性
客户数据 🔵 客户 🔵 客户
标识和访问管理 🔵 客户 🔵 客户
法规合规性和治理 🔵 客户 🔵 客户
可观察性
平台监控(控制平面日志和指标) 🔵 客户 🟣 共享
工作负荷监视和警报 🔵 客户 🔵 客户
灾难恢复
群集备份和灾难恢复 🔵 客户 🔵 客户

对于以下矩阵中的共享区域,该表显示Microsoft提供的内容以及你负责的内容:

共担责任 Microsoft提供 客户提供
Kubernetes 版本升级 支持的版本和弃用时间表 触发并安排升级
节点操作系统补丁更新 更新的节点映像 选择自动升级通道,或手动应用
工作器节点缩放 群集自动缩放器和 Karpenter 配置策略、最小值/最大值和优先级
托管加载项 发布并修补加载项版本 启用、禁用和配置它们
CNI 插件 维护 Azure CNI 和 Cilium 选择插件、CIDR 范围和调优
Microsoft Entra ID 集成 提供集成功能 配置组、角色和条件访问
持久性存储 CSI 驱动程序和 Azure 磁盘和文件存储 配置存储类、PVC 和备份
平台监控 生成控制平面日志和指标 启用诊断设置并生成警报
图像漏洞扫描 扫描并修补受管容器映像 更新 VHD;自行管理应用程序映像

注意

本文介绍在 Azure 中运行的 AKS 群集的责任划分。

AKS 技术支持服务范围

以下部分介绍 AKS 技术支持中支持的场景和不支持的场景。

支持的方案

Azure 为以下示例提供技术支持:

区域 Microsoft支持的内容
控制平面连通性 连接到 AKS 提供并支持的所有 Kubernetes 组件,例如 API 服务器。
控制层面操作 Kubernetes 控制平面服务(如控制平面、API 服务器、etcd 和 CoreDNS)的管理、正常运行时间、QoS 和运维。
etcd 数据存储库 每隔 30 分钟自动对所有数据 etcd 进行透明备份,以便进行灾难规划和群集状态还原。 备份不直接可供你或其他人使用。 按需回滚或还原功能不受支持。
Azure云提供商集成 Azure 云提供程序驱动程序中的集成点,例如负载均衡器、持久卷和网络(Kubernetes 和 Azure CNI),但在使用 BYOCNI 时除外。
控制平面自定义 有关自定义控制平面组件(如 Kubernetes API 服务器 etcd和 CoreDNS)的问题。
网络 网络访问和功能问题(除 BYOCNI 外),例如 DNS 解析、数据包丢失和路由。 支持的场景包括:使用托管或自定义(自有)子网的 kubenet 和 Azure CNI;与其他 Azure 服务和应用程序的连接;Azure 托管的入口控制器和负载均衡器配置;网络性能和延迟;以及 Azure 托管的 网络策略
代理节点组件 代理节点上的 kubeletkube-proxycontainerd 和网络隧道的自动修复。 有关详细信息,请参阅 Microsoft 对 AKS 代理节点的责任

Microsoft 或 AKS 执行的任何群集操作,均是在征得您同意的情况下,通过内置的 Kubernetes 角色 aks-service 和内置角色绑定 aks-service-rolebinding 执行的;该绑定会将该角色绑定到 aks-support Microsoft 支持部门 服务标识。 此角色使 AKS 能够排查和诊断群集问题,但无法修改权限或创建角色或角色绑定,或者执行其他高特权操作。 仅在具有实时 (JIT) 访问权限的活动支持票证下启用角色访问。

不支持的方案

Azure 不为以下方案提供技术支持:

Scenario 不支持
如何使用 Kubernetes 常规 Kubernetes 使用建议,例如如何创建自定义入口控制器或应用非Microsoft软件。
非Microsoft开源项目 不属于控制平面或不随 AKS 一起部署的项目,如 Istio、Helm 或 Envoy。
非Microsoft闭源软件 安全扫描工具和网络设备或软件。
特定于应用程序的代码 配置或排查特定于应用程序的代码或非Microsoft应用程序或工具在 AKS 群集中运行的行为,包括与 AKS 平台本身无关的应用程序部署问题。
应用程序证书 AKS 上运行的应用程序的证书颁发、续签或管理。
网络自定义 AKS 文档以外的网络自定义,例如 VPN 或非Microsoft防火墙。
BYO CNI 插件 BYOCNI 模式下使用的自定义或非 Microsoft CNI 插件。
非Microsoft网络策略 配置非 Azure 托管的网络策略或对其进行故障排除。 支持使用网络策略,但Microsoft 支持部门无法调查源自自定义网络策略配置的问题。
非Microsoft入口控制器 入口控制器,例如 nginxkongtraefik
自定义 DaemonSet 脚本 DaemonSet 用于自定义节点配置的脚本。
备用和主动支持 主动或备用支持以减少操作风险。 Microsoft仅提供反应式支持。
发布时间不足 30 天的 CVE 供应商修复的漏洞和 CVE 不到 30 天。
自定义代码示例 特定于环境或应用程序的自定义代码示例或脚本。
自定义 Azure Policy 逻辑 自定义 Azure Policy 逻辑的详细故障排查,包括基于 Rego 的策略。

其中一些情况更细致地说明了微软仍然可以提供哪些帮助。 有关详细信息,请参阅 有关不受支持的方案的详细信息

有关不支持的方案的详细信息

几个不受支持的情况进一步细化说明了微软仍可提供哪些帮助:

  • 如何使用 Kubernetes。 Microsoft 支持部门不提供有关如何创建自定义入口控制器、使用应用程序工作负载或应用非Microsoft或开源软件包或工具的建议。 Microsoft 支持部门可以就 AKS 群集功能、自定义和优化(例如 Kubernetes 操作问题和过程)提供建议。
  • 非Microsoft开源项目。 这些项目未作为 Kubernetes 控制平面的一部分提供,也不随 AKS 群集一起部署,可能包括 Istio、Helm、Envoy 或其他项目。 Microsoft可以为 Helm 等项目提供最努力的支持。 如果该工具与适用于 Kubernetes 的 Azure 云提供程序集成,或者存在其他 AKS 特有的问题,Microsoft 会为 Microsoft 文档中的示例和应用程序提供支持。
  • 网络自定义。 对于AKS 文档中所列内容之外的自定义,Microsoft 支持部门 无法配置用于为群集提供出站流量的设备或虚拟设备,例如 VPN 或防火墙。 尽最大努力,Microsoft 支持部门可能会就Azure 防火墙所需的配置提供建议,但不适用于其他非Microsoft设备。
  • 非 Microsoft 入口控制器。 对于控制器(例如 nginxkong或者 traefik),这包括在特定于 AKS 的操作后出现的功能问题,例如入口控制器在 Kubernetes 版本升级后停止工作,这可能源于入口控制器版本与新的 Kubernetes 版本之间的不兼容。 对于完全受支持的选项,请考虑使用Azure管理的入口控制器选项
  • 自定义 DaemonSet 脚本。 尽管建议在DaemonSet配置文件参数不足时在代理节点上优化、修改或安装非Microsoft软件,但Microsoft 支持部门无法解决由于自定义脚本的自定义性质而导致的问题。
  • 备用和主动支持。 Microsoft 支持部门提供被动支持来解决主动问题。 未涵盖备用或主动支持来消除操作风险、提高可用性和优化性能。 符合条件的客户可以联系其帐户团队,以获取Azure事件管理服务的提名,该服务是一项付费服务,其中包括活动期间的主动解决方案风险评估和覆盖范围。
  • 30 天以下的 CVE。 只要运行更新后的 VHD,容器镜像中就不应存在任何其供应商修复发布时间已超过 30 天的 CVE。 你需要更新 VHD,然后筛选 CVE 报告,并向 Microsoft 支持部门提供一份仅包含供应商修复发布时间已超过 30 天的 CVE 列表。 然后,Microsoft 会在内部着手处理那些其供应商修复程序已于 30 多天前发布的组件。 Microsoft 仅为 Azure 托管的组件提供与 CVE 相关的支持,例如 AKS 节点映像,以及在集群创建期间或通过托管附加组件部署的托管容器映像。 有关详细信息,请参阅Azure Kubernetes 服务 (AKS)的漏洞管理
  • 自定义代码示例。 Microsoft 支持部门可以在支持案例中提供和查看小型代码示例,以演示如何使用Microsoft产品的功能,但不能提供特定于环境或应用程序的自定义代码示例。
  • 自定义 Azure Policy 逻辑。 Microsoft 支持部门可以提供有关如何在 AKS 中应用和评估自定义Azure Policy定义的一般指导。 客户创作的策略逻辑(包括基于 Rego 的策略)的详细故障排除,例如特定策略允许或拒绝工作负荷的原因,通常超出了支持范围。

自带 CNI 的支持范围

使用 --network-plugin none 以自带 CNI (BYOCNI) 的方式部署群集时,Microsoft 支持无法为与 CNI 相关的问题提供帮助。 你负责 CNI 插件生命周期,应该寻求 CNI 插件供应商的支持。 Microsoft仍支持与 CNI 无关的问题。

Microsoft支持 Microsoft不支持
节点预配、控制平面和其他非 CNI 问题 大多数东西部(pod 到 pod)流量问题
Kubernetes API 服务器、etcd 和调度器 kubectl proxy 和类似的命令
节点操作系统和 kubelet CNI 插件安装、配置和故障排除
Azure负载均衡器和托管组件 Pod IP 地址管理 (IPAM)

有关更多信息,请参阅自带 CNI(BYOCNI)

针对代理节点的 AKS 支持范围

以下部分介绍了 Microsoft 和客户在 AKS 代理节点上的责任。

下表汇总了代理节点职责。 以下各节提供详细信息。

方面 Microsoft 客户
包含监控和网络代理程序的基础操作系统映像 提供 不適用
节点上的控制平面组件(kubeletkube-proxycontainerd、网络隧道) 自动修复 不適用
异常节点自动修复 自动 不適用
节点操作系统补丁和映像(每周) 发布 请在90天内申请(手动或自动升级)
Kubernetes 版本货币 发布修补程序和版本 使群集保持受支持的版本
节点自定义 不適用 使用 DaemonSet(如果会导致节点损坏,则不支持)
IaaS 级节点修改 不適用 不支持;会导致集群无法获得支持

Azure 对 AKS 代理节点的责任

在以下情况下,由 Azure 和你共同承担 Kubernetes 代理节点的责任:

  • 基础 OS 映像包括必要的组件,例如监控和网络代理程序。
  • 代理节点自动收到了 OS 补丁。
  • 系统会自动修正在代理节点上运行的 Kubernetes 控制平面组件的问题。 这些组件包括以下项:
    • kube-proxy
    • 提供 Kubernetes 控制平面通信路径的网络隧道
    • kubelet
    • containerd

如果代理节点无法运行,AKS 可能会重启单个组件或整个代理节点。 这些重启操作是自动化的,并为常见问题提供自动修复。 若要了解有关自动护理机制的详细信息,请参阅 Node 自动修复

客户对 AKS 代理节点的责任

Azure 每周为映像节点提供修补程序和新映像。 若要使代理节点 OS 和运行时组件保持最新状态,应定期手动或自动应用这些修补程序和更新。 Azure不支持超过 90 天的节点映像。 有关详细信息,请参见:

同样,AKS 会定期发布新的 Kubernetes 修补程序和次要版本。 这些更新可能包含 Kubernetes 的安全或功能改进。 你负责确保群集的 Kubernetes 版本保持更新,并确保符合 AKS Kubernetes 支持版本策略

代理节点的用户自定义

注意

AKS 代理节点在 Azure 门户中显示为标准 Azure IaaS 资源。 但是,这些虚拟机被部署到自定义 Azure 资源组(前缀为 MC_)中。 不能更改基本 OS 映像,也不能使用 IaaS API 或资源对这些节点进行任何直接自定义。 未通过 AKS API 执行的任何自定义更改在升级、缩放、更新或重启后都不会保留。 此外,对节点的扩展 CustomScriptExtension 所做的任何更改都可能导致意外行为,应被禁止。 除非 Azure 支持指示你进行更改,否则请避免更改代理节点。

AKS 代表你管理代理节点的生命周期和操作,不支持修改与该代理节点关联的 IaaS 资源。 不支持的操作的一个示例是通过 Azure 门户或 API 手动更改配置来自定义节点池的虚拟机规模集。

对于特定于工作负荷的配置或包,AKS 建议使用 Kubernetes DaemonSet

使用 Kubernetes 特权DaemonSetinit容器可以在群集代理节点上优化/修改或安装非Microsoft软件。 此类自定义的示例包括添加自定义安全扫描软件或更新 sysctl 设置。

如果上述要求适用,建议使用此路径,但 AKS 的工程团队和支持团队无法协助排查或诊断由于自定义部署导致节点不可用的 DaemonSet修改。

安全问题和修补

如果在 AKS 的一个或多个托管的组件中发现了安全缺陷,则 AKS 团队会修补所有受影响的群集以缓解此问题。 或者,AKS 团队会提供升级指南。

对于受安全缺陷影响的代理节点,Azure 会将有关影响的详细信息以及解决或缓解安全问题的步骤以通知的形式告知你。

节点维护和访问

虽然可以登录到代理节点并更改它们,但不要执行此操作。 更改会使群集不可支持。

网络端口、访问和网络安全组(NSG)

只能在自定义子网上自定义网络安全组(NSG)。 下表显示了可在何处自定义 NSG:

网络范围 可以自定义 NSG 吗?
自定义子网 Yes
托管子网 No
代理节点 NIC 级别 No

AKS 对特定终结点具有出口要求。 若要控制出口并确保必要的连接,请参阅 限制出口流量。 对于 Ingress,其要求取决于你部署到集群中的应用程序。

已停止、解除分配和未就绪节点

下表汇总了 AKS 群集在每个生命周期状态下会发生的情况以及相应的时间线:

Scenario Behavior 日程表
集群因 az aks stop 已停止 状态保留,然后删除 保留 12 个月
手动解除分配所有节点(通过 IaaS API、Azure CLI 或门户) 被视为不再受支持,被 AKS 停止,然后正常保留 30 天后停止
没有 就绪 节点,也没有 运行中 的虚拟机 集群已停止 30 天后
暂停的订阅 群集立即停止,然后删除 90 天后删除
已删除的订阅 立即删除群集 立刻

如果不需要 AKS 工作负载连续运行, 请停止 AKS 群集,这会停止所有节点池和控制平面,并在需要时再次启动它。 通过使用 IaaS API、Azure CLI 或 Azure 门户手动解除分配节点,不是停止群集的受支持方式。

AKS 保留将连续 30 天或更长时间未按支持准则配置的控制平面存档的权利。 AKS 会保留群集 etcd 元数据的备份,并且在任何可使其重新回到受支持状态的 PUT 操作期间,都可以重新分配该群集,例如升级或扩缩容到活动代理节点。

** 不支持的 Kubernetes alpha 和 beta 功能

AKS 支持上游 Kubernetes 项目中的稳定和 beta 功能,但不支持 alpha 功能,除非另有说明。 下表汇总了功能类型支持:

功能类型 Supported? 备注
稳定的 Kubernetes 上游特性 Yes 完全支持。
上游 Kubernetes 测试版特性 Yes 除非另有说明,否则受支持。
上游 Kubernetes Alpha 阶段特性 No 除非另有说明,否则不受支持。
AKS 预览功能和功能标记 最大努力 不用于生产。 仅提供工作时间支持。 请参阅 预览功能或功能标志

预览功能或功能标志

对于需要扩展测试和用户反馈的功能,Azure 会发布新的预览功能或在采用了功能标志的情况下发布功能。 请将这些功能视为预发行版或 beta 功能。

预览功能或功能标志功能不适用于生产环境。 API 和行为的不断变化、bug 修复和其他更改可能会导致群集不稳定和停机。

公共预览版中的功能受 尽最大努力 支持,因为这些功能处于预览状态,不适用于生产。 AKS 技术支持团队仅在工作时间提供支持。 有关详细信息,请参阅 Azure 支持常见问题解答

上游错误和问题

由于上游 Kubernetes 项目的开发速度,不可避免地会出现 bug。 其中的某些 bug 无法在 AKS 系统内部得到修补或解决。 相反,bug 修复需要为上游项目(例如 Kubernetes、节点或代理操作系统和内核)提供较大的修补程序。 对于 Azure 拥有的组件(如 Azure 云提供商),AKS 和 Azure 人员致力于解决社区上游的问题。

如果某个技术支持问题的根本原因是一个或多个上游 bug,则 AKS 支持和工程团队会采取以下措施:

  • 识别上游 bug 并关联相关支持详细信息,以帮助解释为何此问题会影响您的集群或工作负载。 客户会收到指向所需存储库的链接,以便他们可以监视问题,并查看新版本何时提供修补程序。
  • 提供可能的解决方法或缓解措施。 如果可以缓解此问题,则会在 AKS 存储库中存档一个已知问题。 已知问题报告中说明:
    • 该问题,包括上游错误的链接。
    • 解决方法,以及有关解决方案升级或其他持久化措施的详细信息。
    • 该问题纳入的大致时间线,根据上游发布的时间节奏提供。