你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

适用于 Azure Kubernetes 服务 (AKS) 上的 Windows 容器的最佳做法

在 AKS 中,你可以创建在节点上运行 Linux 或 Windows Server 作为操作系统 (OS) 的节点池。 Windows Server 节点可以运行本机 Windows 容器应用程序,例如 .NET Framework。 Linux 操作系统和 Windows 操作系统具有不同的容器支持和配置注意事项。 有关详细信息,请参阅Kubernetes 中的 Windows 容器注意事项。 若要详细了解各个行业如何使用 AKS 上的 Windows 容器,请参阅 Windows AKS 客户案例

本文概述了在 AKS 上运行 Windows 容器的最佳做法。

使用 Linux 和 Windows 节点池创建 AKS 群集

创建新的 AKS 群集时,Azure 平台默认创建 Linux 节点池。 此节点池包含系统服务,群集需要这些服务才能正常工作。 Azure 还创建和管理从用户抽象出来的控制平面,这意味着你不会暴露于托管主要控制平面组件的节点的底层操作系统。 建议在默认 Linux 节点池上运行至少两个节点,以确保群集的可靠性和性能。 除非删除整个群集,否则将无法删除默认的 Linux 节点池。

在某些情况下,如果计划在 AKS 群集上运行基于 Windows 的工作负载,应考虑部署 Linux 节点池,例如:

  • 如果要运行 Linux 和 Windows 工作负载,可以在同一群集中部署 Linux 节点池和 Windows 节点池。
  • 如果要部署基于 Linux 的基础设施相关组件(例如 NGINX),则需要一个 Linux 节点池和 Windows 节点池。 对于开发和测试场景,可以使用控制平面节点。 对于生产工作负载,建议部署单独的 Linux 节点池以确保可靠性和性能。

使用 AKS 上的 Windows 实现现有应用程序的现代化

你可能希望将现有应用程序容器化并使用 AKS 上的 Windows 运行它们。 在开始容器化过程之前,请务必了解应用程序的体系结构和依赖项。 有关详细信息,请参阅使用 Windows 容器容器化现有应用程序

Windows OS 版本

最佳实践指南

Windows Server 2022 提供更高的安全性和性能,是建议用于 AKS 上 Windows 节点池的操作系统。 AKS 使用 Windows Server 2022 作为主机操作系统版本,并且仅支持进程隔离。

AKS 支持 Windows Server 操作系统的两个选项:长期服务渠道版本和适用于容器的 Windows Server 年度通道。

  1. AKS 支持长期服务渠道版本,包括 Windows Server 2022 和 Windows Server 2019。 此渠道每三年发布一次,支持五年。 使用长期支持的客户应使用 Windows Server 2022。

    AKS 使用 Windows Server 2019 和 Windows Server 2022 作为主机 OS 版本,并且仅支持进程隔离。 AKS 不支持其他版本的 Windows Server 构建的容器映像。 有关详细信息,请参阅 Windows 容器版本兼容性

    Windows Server 2022 是 Kubernetes 1.25 及更高版本的默认操作系统。 在 Kubernetes 版本 1.32 达到生命周期终点后,Windows Server 2019 将停用。 在 Kubernetes 版本 1.34 达到生命周期终点后,Windows Server 2022 将停用。 有关详细信息,请参阅 AKS 发行说明。 若要了解最新的 Windows Server OS 版本,并了解有关 AKS 上计划支持的路线图的详细信息,请参阅我们的 AKS 公共路线图

  2. AKS 支持适用于容器的 Windows Server 年度渠道(预览版)。 此渠道每年发布一次,支持 2 年。 此渠道适用于需要增加创新周期和可迁移性的客户。 可迁移性功能使基于 Windows Server 2022 的容器映像操作系统能够在较新版本的 Windows Server 主机操作系统上运行,例如新的年度渠道版本。

    Windows 年度渠道版本基于节点池的 Kubernetes 版本。 若要从一个年度渠道版本升级到下一个,升级到支持下一个年度渠道版本的 Kubernetes 版本。 有关详细信息,请参阅 AKS 上的容器的 Windows Server 年度渠道

网络

网络模式

最佳实践指南

具有 Windows 节点池的 AKS 群集仅支持 Azure 容器网络接口 (Azure CNI),并默认使用它。

Windows 不支持 kubenet 网络。 具有 Windows 节点池的 AKS 群集必须使用 Azure CNI。 有关详细信息,请参阅 AKS 中应用程序的网络概念

Azure CNI 根据工作负载要求提供两种网络模式:

  • Azure CNI 覆盖是类似于 kubenet 的覆盖网络。 通过覆盖网络,可以为节点使用虚拟网络 (VNet) IP,以及可在群集中重复使用的 Pod 的专用地址空间。 Azure CNI 覆盖是推荐的网络模式。 它提供简化的网络配置和管理以及 AKS 网络的最佳可伸缩性。
  • 具有动态 IP 分配的 Azure CNI 需要对 IP 地址管理进行额外的规划和考虑。 此模式为节点 Pod 提供 VNet IP。 此配置允许你直接访问 Pod IP。 但是,它具有更高的复杂性和可伸缩性。

若要帮助你确定要使用的网络模式,请参阅选择网络模型

网络策略

最佳实践指南

使用网络策略保护 Pod 之间的流量。 Windows 支持 Azure 网络策略管理器和 Calico 网络策略。 有关详细信息,请参阅网络策略引擎之间的差异:Cilium、Azure NPM 和 Calico

管理 Pod 之间的流量时,应该应用最低特权原则。 可以通过 Kubernetes 中的网络策略功能定义和强制集群中 Pod 之间的流入量和流出量规则。 有关详细信息,请参阅在 AKS 中使用网络策略保护 Pod 之间的流量

使用 Calico 网络策略的 AKS 群集上的 Windows Pod 默认启用浮动 IP。

升级和更新

请务必使 Windows 环境保持最新状态,以确保系统具有最新的安全更新、功能集和合规性要求。 在 AKS 等 Kubernetes 环境中,需要维护 Kubernetes 版本、Windows 节点以及 Windows 容器映像和 Pod。

Kubernetes 版本升级

作为托管 Kubernetes 服务,AKS 提供了将群集升级到最新 Kubernetes 版本所需的工具。 有关详细信息,请参阅升级 AKS 群集

Windows 节点每月更新

AKS 上的 Windows 节点遵循每月更新计划。 每个月,AKS 都会创建一个新的 VHD,其中包含 Windows 节点池的最新可用更新。 VHD 包括主机映像、最新的 Nano Server 映像、最新的服务器核心映像和容器。 建议对 Windows 节点池执行每月更新,以确保节点具有最新的安全修补程序。 有关详细信息,请参阅升级 AKS 节点映像

注意

Windows 系统上的升级包括 OS 版本升级和每月节点 OS 更新。

可以使用 AKS 发布跟踪器AKS 发行说明及时了解每月发布的可用情况。

Windows 节点 OS 版本升级

Windows 按照一定的节奏发布新版本操作系统,包括 Windows Server 2019 和 Windows Server 2022。 升级 Windows 节点 OS 版本时,请确保 Windows 容器映像版本与 Windows 容器主机版本匹配,并且节点池只有一个版本的 Windows Server。

若要升级 Windows 节点 OS 版本,需要完成以下步骤:

  1. 使用新的 Windows Server 版本创建新的节点池。
  2. 使用新的 Windows 容器映像将工作负载部署到新的节点池。
  3. 解除旧节点池的授权。

有关详细信息,请参阅升级 AKS上的 Windows Server 工作负载

注意

Windows 宣布推出新的Windows Server 容器年度通道,该通道支持 Windows 节点和容器的可移植性和混合版本。 AKS 尚不支持此功能。

若要跟踪 AKS 功能计划,请参阅公共 AKS 路线图

后续步骤

若要详细了解 AKS 上的 Windows 容器,请参阅以下资源: