Condividi tramite

Azure Kubernetes 服务的支持策略

本文介绍 Azure Kubernetes 服务 (AKS) 的技术支持策略和限制。 本文还详细介绍了代理节点管理、托管控制平面组件、第三方开源组件,以及安全性或补丁管理。

服务更新和版本

AKS 中的托管功能

基本基础结构即服务(IaaS)云组件(如计算或网络组件)允许访问低级别控件和自定义选项。 相比之下,AKS 提供统包式的 Kubernetes 部署,为你的群集提供了一组所需的通用配置和功能。 作为 AKS 用户,你可选的自定义和部署选项并不完整。 但在这种情况下,你无需考虑或无需直接管理 Kubernetes 群集。

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

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

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

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

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

共担责任

创建群集时,你将定义 AKS 创建的 Kubernetes 代理节点。 你的工作负载将在这些节点上执行。

由于代理节点会执行专用代码并存储敏感数据,Azure 支持只能以受限的方式访问这些信息。 在未得到你的明确许可或者协助的情况下,Azure 支持不能登录到这些节点、在其中执行命令或查看其日志。

使用任何一种 IaaS API 直接对代理节点进行的任何修改都将导致群集不受支持。 应用于代理节点的任何修改都必须使用 kubernetes 本机机制(如 a DaemonSet) 来完成。

同样,虽然可以将任何元数据添加到群集和节点,例如标记和标签,但更改系统创建的任何元数据都会导致群集不受支持。

AKS 支持范围

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

支持的方案

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

  • 与 Kubernetes 服务提供和支持的所有 Kubernetes 组件(如 API 服务器)的连接。
  • Kubernetes 控制平面服务(例如 Kubernetes 控制平面、API 服务器 etcd 和 coreDNS)的管理、运行时间、QoS 和操作。
  • etcd 数据存储。 支持包括每 30 分钟自动对所有数据 etcd 进行透明备份,以便进行灾难规划和群集状态还原。 你或任何其他人都不可直接使用这些备份。 这些备份用于确保数据的可靠性和一致性。 按需回滚或还原功能不受支持。
  • 适用于 Azure 云提供程序驱动程序中的任何集成点。 这包括与其他 Azure 服务(例如负载均衡器、永久性卷或网络)的集成(Kubernetes 和 Azure CNI 除外),除非 BYOCNI 正在使用)。
  • 有关自定义控制平面组件(如 Kubernetes API 服务器 etcd和 coreDNS)的问题。
  • 有关网络的相关问题,如 Azure CNI、kubenet,或其他与网络访问和功能相关的问题,除非正在使用 BYOCNI。 问题可能包括 DNS 解析、数据包丢失、路由等。 Microsoft 为各种网络方案提供支持:
    • 使用托管 VNET 或自定义(自带)子网的 Kubenet 和 Azure CNI。
    • 连接到其他 Azure 服务和应用程序。
    • Azure 托管的入口控制器或负载均衡器配置。
    • 网络性能和延迟。
    • Azure 管理的网络策略组件及其功能。

Microsoft/AKS 所执行的任何群集操作都是经你同意,在内置 Kubernetes 角色 aks-service 和内置角色绑定 aks-service-rolebinding 下执行的。 此角色允许 AKS 对群集问题进行故障排除和诊断,但不能修改权限,也不能创建角色或角色绑定,或者执行其他高特权操作。 仅在具有实时 (JIT) 访问权限的活动支持票证下启用角色访问。

不支持的方案

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

  • 有关 Kubernetes 用法的问题。 例如,Azure 支持部门不提供有关如何创建自定义入口控制器、使用应用程序工作负荷,或者应用第三方/开源软件包或工具的建议。

    Azure 支持部门可以提供有关 AKS 群集功能、自定义和优化的建议(例如 Kubernetes 操作问题和过程)。

  • 不是作为 Kubernetes 控制平面的一部分提供的,或者不是在 AKS 群集中部署的第三方开源项目。 这些项目可能包括 Istio、Helm、Envoy 等等。

    Azure 可以为 Helm 等第三方开源项目提供最佳支持。 当第三方开源工具与 Kubernetes 集成时,如果出现了特定于 Azure 云提供商或其他 AKS 的 bug,Microsoft 会为来自 Microsoft 文档的示例和应用程序提供支持。

  • 第三方闭源软件。 此类软件可能包括安全扫描工具以及网络设备或软件。

  • 配置 AKS 群集中运行的第三方应用程序或工具的应用程序特定代码或行为,或排查相关问题。 这包括与 AKS 平台本身无关的应用程序部署问题。

  • AKS 上运行的应用程序的证书颁发、续签或管理。

  • AKS 文档中未列出的网络自定义。 例如,Microsoft支持部门无法配置旨在为 AKS 群集(例如 VPN 或防火墙)提供 出站流量 的设备或虚拟设备。

    尽最大努力,Microsoft支持部门可能会就 Azure 防火墙 所需的配置 提供建议,但不适用于其他第三方设备。

  • BYOCNI 模式下使用的自定义或第三方 CNI 插件。

  • 配置非 Azure 托管的网络策略或对其进行故障排除。 支持使用网络策略时,Microsoft支持部门无法调查源自自定义网络策略配置的问题。

  • 配置或排查非 Azure 托管入口控制器(例如nginxkongtraefik等)的问题。这包括解决 AKS 特定作后出现的功能问题,例如入口控制器在 Kubernetes 版本升级后停止工作。 此类问题可能源于入口控制器版本与新的 Kubernetes 版本之间的不兼容。 对于完全受支持的选项,请考虑使用 Azure 管理的入口控制器选项

  • 配置或故障排除 DaemonSet (包括用于自定义节点配置的脚本)。 尽管建议使用 DaemonSet 的方法在 配置文件参数 不足时在群集代理节点上优化、修改或安装第三方软件,但Microsoft支持无法解决因自定义性质而使用的 DaemonSet 自定义脚本引起的问题。

  • 备用方案和主动方案。 Microsoft 支持部门提供被动支持,帮助及时、专业地解决当前问题。 但是,无法提供用以帮助您消除操作风险、提高可用性和优化性能的备用或主动支持。 符合条件的客户可以联系其帐户团队,获得 Azure 事件管理服务的提名。 这是一项由 Microsoft 支持工程师提供的付费服务,包括事件期间的主动解决方案风险评估和采取行动。

  • 供应商发布修复时间不到 30 天的漏洞/CVE。 只要运行的是更新的 VHD,就不应使用 30 天以上的供应商修复程序运行任何容器映像漏洞/CVE。 客户负责更新 VHD 并提供筛选后的列表给 Microsoft 支持。 更新 VHD 后,客户有责任筛选漏洞/CVE 报告,并提供仅包含 30 天以上供应商修复的漏洞/CVE 的列表。 如果是这种情况,Microsoft 支持将确保进行内部协调,并对30天前发布的供应商修补程序进行实施,以解决组件问题。 此外,Microsoft仅为 Azure 托管组件提供与漏洞/CVE 相关的支持。 例如,AKS 节点映像,以及在群集创建期间或通过安装托管插件时部署的应用程序所使用的托管容器映像。 有关 AKS 漏洞管理的更多详细信息,请访问 Azure Kubernetes 服务的漏洞管理(AKS)。

  • 自定义代码示例或脚本。 虽然Microsoft支持 部门可以在 支持案例中提供小型代码示例和小代码示例的评审,以演示如何使用Microsoft产品的功能,但Microsoft支持 部门无法 提供特定于环境或应用程序的自定义代码示例。

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

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

Azure 对 AKS 代理节点的责任

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

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

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

客户对 AKS 代理节点的责任

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

同样,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 容器,可以在群集代理节点上优化/修改或安装第三方软件。 此类自定义的示例包括添加自定义安全扫描软件或更新 sysctl 设置。

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

安全问题和修补

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

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

节点维护和访问

尽管可以登录并更改代理节点,但不建议这样做,因为更改可能会导致群集不受支持。

网络端口、访问和 NSG

只能在自定义子网上自定义 NSG。 可能无法在托管子网或代理节点的 NIC 级别自定义 NSG。 AKS 对特定终结点有流出量要求,目的是控制流出量并确保必要的连接性,请参阅限制出口流量。 对于流入,要求是基于您部署到群集的应用程序。

已停止、取消分配和“未就绪”节点

如果不需要 AKS 工作负载持续运行,可以 停止 AKS 群集,这会停止所有节点池和控制平面。 可以在需要时将其再次启动。 使用 az aks stop 命令停止群集时,群集状态会保留长达 12 个月。 12 个月后,群集状态及其所有资源都会被删除。

不支持从 IaaS API、Azure CLI 或 Azure 门户手动解除分配所有群集节点以停止 AKS 群集或节点池。 群集将被视为不受支持,并将由 AKS 在 30 天后停止。 然后,群集会受到与正确停止的群集相同的 12 个月保留策略的约束。

30 天后,具有 0 个“就绪”节点(或所有为“未就绪”节点)的群集和 0 个正在运行的 VM 将被停止。

对于已配置了“停止支持”规则以将支持期限延长至等于或超过 30 天的控制平面,AKS 保留了将其存档的权利。 AKS 维护群集 etcd 元数据的备份,并可以轻松重新分配群集。 此重新分配由任意 PUT 操作发起,使群集重新得到支持,例如通过升级或扩展到活跃的代理节点。

已暂停订阅中的所有群集将立即停止,并在 90 天后删除。 已删除订阅中的所有群集将立即删除。

不受支持的 alpha 和 beta Kubernetes 功能

AKS 仅支持上游 Kubernetes 项目中的稳定和 beta 版功能。 除非另有说明,否则 AKS 不支持上游 Kubernetes 项目中提供的任何 alpha 功能。

预览功能或功能标志

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

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

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

上游 bug 和问题

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

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

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