Windows Server 上的 AKS 的系统要求

适用于:Windows Server 2022、Windows Server 2019

本文介绍在 Windows Server 上设置 Azure Kubernetes 服务(AKS)的要求。 有关 Windows Server 上的 AKS 的概述,请参阅 AKS 概述

硬件要求

Microsoft建议从合作伙伴购买经过验证的 Windows Server 硬件/软件解决方案。 这些解决方案经过设计、汇编和验证,可运行我们的参考体系结构并检查兼容性和可靠性,以便快速启动并运行。 应检查所使用的系统、组件、设备和驱动程序是否根据 Windows Server 目录通过了 Windows Server 认证。

重要

生产部署的主机系统必须为物理硬件。 不支持嵌套虚拟化,其特征为在虚拟机中部署 Windows Server 并安装 AKS。

支持的最大硬件规格

不支持超过以下规范的 Windows Server 上的 AKS 部署:

资源 Maximum
每个群集的物理服务器数 8 (Windows Server)
VM 总数 200

计算要求

最低内存要求

可以按以下方式设置 AKS 群集,以在内存有限的单节点 Windows Server 上运行 AKS:

群集类型 控制平面 VM 大小 工作器节点 适用于更新操作 负载均衡器
AKS 主机 Standard_A4_v2 虚拟机大小 = 8GB 不适用 - AKS 主机没有工作器节点。 8GB N/A - AKS 主机使用 kubevip 进行负载均衡。
工作负荷群集 Standard_A4_v2 虚拟机大小 = 8GB 1 个工作器节点的 Standard_K8S3_v1 = 6GB 可为工作负荷群集升级重复使用此预留的 8GB。 如果 kubevip 用于负载均衡(而不是默认 的 HAProxy 负载均衡器),则为 N/A。

总最低要求:30 GB RAM

此最低要求适用于具有一个用于运行容器化应用程序的工作器节点的 AKS 部署。 如果选择添加工作器节点或 HAProxy 负载均衡器,最终内存要求将相应变化。

环境 每台服务器的 CPU 核心数 内存 (RAM)
Windows Server 故障转移群集 32 256 GB
单节点 Windows Server 16 128 GB

对于生产环境,最终大小调整取决于计划部署在 Windows Server 群集上的应用程序和工作器节点数。 如果选择在单节点 Windows Server 上运行 AKS,则不会获得在 Windows Server 故障转移群集上运行 AKS 所需的高可用性等功能。

必须在群集中的每台服务器上安装相同的操作系统。 在 Windows Server Datacenter 中,群集中每个服务器上的 OS 和版本必须相同。 每个操作系统必须使用 en-us 区域和语言选择。 安装后无法更改这些设置。

存储要求

Windows Server 上的 AKS 支持以下存储实现:

名称 存储类型 所需容量
Windows Server Datacenter 故障转移群集 群集共享卷 1 TB(兆字节)
单节点 Windows Server Datacenter 直连存储 500 GB

对于 Windows Server 群集,有两种受支持的存储配置可用于运行虚拟机工作负荷:

  • 混合存储使用闪存存储和硬盘驱动器 (HDD) 平衡性能和容量。
  • 全闪存存储使用固态硬盘 (SSD) 或 NVMe 最大化性能。

Kubernetes 使用 etcd 存储群集状态。 etcd 存储正在运行的 Pod 的配置、规范和状态。 此外,Kubernetes 使用存储进行服务发现。 作为 Kubernetes 及其支持的工作负荷操作的协调组件,etcd 的延迟和吞吐量至关重要。 必须在 SSD 上运行 AKS。 有关更多信息,请参阅性能

对于基于 Windows Server Datacenter 的群集,可以使用本地存储或基于 SAN 的存储进行部署。 对于本地存储,建议使用内置的存储空间直通或等效的经过认证的虚拟 SAN 解决方案来创建超融合基础结构,该基础结构提供群集共享卷供工作负荷使用。 对于存储空间直通,要求存储要么是平衡性能和容量的混合存储(闪存 + HDD),要么是最大化性能的全闪存存储(SSD、NVMe)。 如果选择使用基于 SAN 的存储进行部署,请确保 SAN 存储能够提供足够的性能来运行多个虚拟机工作负荷。 较旧的基于 HDD 的 SAN 存储可能无法提供运行多个虚拟机工作负荷所需的性能水平,可能会遇到性能问题和超时。

对于使用本地存储的单节点 Windows Server 部署,强烈建议使用全闪存存储(SSD、NVMe)以提供在单个物理主机上托管多个虚拟机所需的性能。 没有闪存存储时,HDD 上较低的性能水平可能导致部署问题和超时。

网络要求

以下要求适用于 Windows Server Datacenter 群集。

  • 如果使用的是 Windows Admin Center,请验证是否已配置现有的外部虚拟交换机。 对于 Windows Server 群集,此交换机及其名称在所有群集节点中必须相同。
  • 验证是否在所有网络适配器上禁用了 IPv6。
  • 若要成功部署,Windows Server 群集节点和 Kubernetes 群集 VM 必须具有外部 Internet 连接。
  • 确保为群集定义的所有子网彼此之间以及与 Internet 之间可路由。
  • 确保 Windows Server 主机和租户 VM 之间存在网络连接。
  • 所有节点必须能够相互通信,这需要 DNS 名称解析。
  • (建议)在 DNS 环境中启用动态 DNS 更新,以允许 AKS 在 DNS 系统中注册云代理通用群集名称以进行发现。

IP 地址分配

在 Windows Server 上的 AKS 中,虚拟网络用于将 IP 地址分配给需要它们的 Kubernetes 资源,如前所述。 根据所需的 AKS 网络体系结构,有两种网络模型可供选择。

注意

此处为 AKS 部署定义的虚拟网络体系结构不同于数据中心中的基础物理网络体系结构。

  • 静态 IP 网络:虚拟网络为 Kubernetes 群集 API 服务器、Kubernetes 节点、基础虚拟机、负载均衡器以及在群集之上运行的任何 Kubernetes 服务分配静态 IP 地址。
  • DHCP 网络:虚拟网络使用 DHCP 服务器为 Kubernetes 节点、基础虚拟机和负载均衡器分配动态 IP 地址。 Kubernetes 群集 API 服务器和在群集之上运行的任何 Kubernetes 服务仍分配静态 IP 地址。

最小 IP 地址预留

至少应为部署保留以下数量的 IP 地址:

群集类型 控制平面节点 工作器节点 适用于更新操作 负载均衡器
AKS 主机 1 IP 暂无 2 IP 暂无
工作负荷群集 每个节点 1 个 IP 每个节点 1 个 IP 5 IP 1 IP

还应为 VIP 池保留以下 IP 地址数:

资源类型 IP 地址数
群集 API 服务器 每个群集 1 个
Kubernetes 服务 每个服务 1 个

如你所见,所需的 IP 地址数量因 AKS 体系结构和在 Kubernetes 群集上运行的服务数量而异。 建议为部署总共预留 256 个 IP 地址(/24 子网)。

有关网络要求的详细信息,请参阅 AKS 中的节点网络概念和 AKS 中的容器网络概念。

网络端口和 URL 要求

Windows Server 上的 AKS 系统要求

创建 Kubernetes 群集时,会在群集中的每个服务器上自动打开以下防火墙端口。

如果物理群集节点和 Azure Kubernetes 群集 VM 位于两个隔离 vlan 上,则必须在它们之间的防火墙中打开这些端口:

Port 来源 说明 防火墙说明
22 AKS VM 使用 Get-AksHciLogs 时收集日志所需。 如果使用单独的 VLAN,物理 Hyper-V 主机必须通过此端口访问 AKS 虚拟机。
6443 AKS VM 与 Kubernetes API 通信时需要。 如果使用单独的 VLAN,物理 Hyper-V 主机必须通过此端口访问 AKS 虚拟机。
45000 物理 Hyper-V 主机 wssdAgent gRPC 服务器。 不需要跨 VLAN 规则。
45001 物理 Hyper-V 主机 wssdAgent gRPC 身份验证。 不需要跨 VLAN 规则。
46000 AKS VM wssdCloudAgent 到 lbagent。 如果使用单独的 VLAN,物理 Hyper-V 主机必须通过此端口访问 AKS 虚拟机。
55000 群集资源 (-CloudServiceCIDR) 云代理 gRPC 服务器。 如果使用单独的 VLAN,AKS 虚拟机必须通过此端口访问群集资源的 IP。
65000 群集资源 (-CloudServiceCIDR) 云代理 gRPC 身份验证。 如果使用单独的 VLAN,AKS 虚拟机必须通过此端口访问群集资源的 IP。

如果网络需要使用代理服务器连接到 Internet,请参阅在 AKS 上使用代理服务器设置

必须将以下 URL 添加到允许列表:

网址 Port 备注
msk8s.api.cdp.microsoft.com 443 从 SFS 下载 Windows Server 上的 AKS 产品目录、产品位和 OS 映像时使用。 运行 Set-AksHciConfig 以及从 SFS 下载时发生。
msk8s.b.tlu.dl.delivery.mp.microsoft.com
msk8s.f.tlu.dl.delivery.mp.microsoft.com
80 在从 SFS 下载 AKS on Windows Server 产品目录、产品组件和操作系统映像时使用。 运行 Set-AksHciConfig 以及从 SFS 下载时发生。
login.microsoftonline.com
login.windows.net
management.azure.com
msft.sts.microsoft.com
graph.windows.net
443 运行 Set-AksHciRegistration 时用于登录到 Azure。
ecpacr.azurecr.io
mcr.microsoft.com
*.mcr.microsoft.com
*.data.mcr.microsoft.com
*.blob.core.windows.net
US endpoint: wus2replica*.blob.core.windows.net
443 运行 Install-AksHci 时拉取容器映像需要此 URL。
<region>.dp.kubernetesconfiguration.azure.com 443 需要将 Windows Server 群集上的 AKS 载入 Azure Arc。
gbl.his.arc.azure.com 443 需要用于获取区域终结点,以便拉取系统分配的托管标识证书。
*.his.arc.azure.com 443 拉取系统分配的托管标识证书时必需。
k8connecthelm.download.prss.microsoft.com 443 已启用 Arc 的 Kubernetes 使用 Helm 3 在 Windows Server 管理群集上的 AKS 上部署 Azure Arc 代理。 Helm 客户端下载需要此终结点来帮助部署代理 helm 图表。
*.arc.azure.net 443 管理 Azure 门户中的 AKS Arc 群集是必需的。
dl.k8s.io 443 下载和更新 Azure Arc 的 Kubernetes 二进制文件时需要此 URL。
akshci.azurefd.net 443 运行 Install-AksHci 时 Windows Server 上的 AKS 计费需要此 URL。
v20.events.data.microsoft.com
gcs.prod.monitoring.core.windows.net
443 用于定期从 Windows Server 主机发送Microsoft所需的诊断数据。

注意

Windows Server 上的 AKS 存储和处理客户数据。 默认情况下,客户数据保留在客户部署服务实例的区域内。 此数据存储在区域内 Microsoft 运营的数据中心内。 对于有数据驻留要求的区域,客户数据始终保留在同一区域内。

Azure Arc 功能的其他 URL 要求

前面的 URL 列表涵盖了将 AKS 服务连接到 Azure 进行计费所需的最低 URL。 如果想在 AKS 工作负荷群集上使用群集连接、自定义位置、Azure RBAC 和其他 Azure 服务(如 Azure Monitor 等),则必须允许其他 URL。 有关 Arc URL 的完整列表,请参阅启用 Azure Arc 的 Kubernetes 网络要求

AKS 中的拉伸群集

延伸群集概述中所述,不支持使用 Windows 拉伸群集在 Windows Server 上部署 AKS。 建议为数据中心运营连续性采用备份和灾难恢复方法。 有关详细信息,请参阅在 Windows Server 上使用 Velero 和 Azure Blob 存储执行工作负荷群集备份或还原,并使用 GitOps 和 Flux v2 在 AksHci 上部署配置 ,实现应用程序连续性。

Windows Admin Center 要求

Windows Admin Center 是用于在 Windows Server 上创建和管理 AKS 的用户界面。 若要将 Windows Admin Center 与 Windows Server 上的 AKS 配合使用,必须满足以下列表中的所有条件。

这些是运行 Windows Admin Center 网关的计算机的要求:

  • Windows 10 或 Windows Server。
  • 已向 Azure 注册
  • 与 Windows Server Datacenter 群集位于同一域中。
  • 拥有所有者权限的 Azure 订阅。 可以通过导航到订阅并在 Azure 门户左侧选择“访问控制 (IAM)”,然后选择“查看我的访问权限”来检查访问级别。

Azure 要求

必须连接到 Azure 帐户。

Azure 帐户和订阅

如果尚无 Azure 帐户,请创建一个。 可以使用任何类型的现有订阅:

  • 学生Visual Studio 订阅者提供 Azure 积分的免费帐户。
  • 使用信用卡的“即用即付”订阅。
  • 通过企业协议 (EA) 获得的订阅。
  • 通过云解决方案提供商 (CSP) 计划获得的订阅。

Microsoft Entra 权限、角色和访问级别

你必须具有足够的权限,才能向你的 Microsoft Entra 租户注册应用程序。

要检查是否有足够的权限,请按照以下信息操作:

  • 转到 Azure 门户,选择 Microsoft Entra ID 下面的角色和管理员以检查你的角色。
  • 如果你的角色是用户,则必须确保非管理员可注册应用程序。
  • 要检查你是否可以注册应用程序,请转到 Microsoft Entra 服务下的用户设置,检查你是否有权注册应用程序。

如果应用注册设置设置为,则只有具有管理员角色的用户才能注册这些类型的应用程序。 要了解可用的管理员角色以及 Microsoft Entra ID 中赋予每个角色的特定权限,请参阅 Microsoft Entra 内置角色。 如果你的帐户被分配了用户角色,但应用注册设置仅限于管理员用户,请要求管理员为你分配一个可以创建和管理应用注册各个方面的管理员角色,或者允许用户注册应用。

如果没有足够的权限注册应用程序且管理员无法授予这些权限,部署 AKS 最简单的方法是请 Azure 管理员创建具有相应权限的服务主体。 管理员可以查看以下部分以了解如何创建服务主体。

Azure 订阅角色和访问级别

要检查访问级别,请导航到订阅,在 Azure 门户左侧选择“访问控制 (IAM)”,然后选择“查看我的访问权限”

  • 如果使用 Windows Admin Center 部署 AKS 主机或 AKS 工作负荷群集,必须拥有作为所有者的 Azure 订阅。
  • 如果使用 PowerShell 部署 AKS 主机或 AKS 工作负荷群集,注册群集的用户必须至少具备以下条件之一:
    • 具有内置所有者 角色的用户帐户。
    • 具有以下访问级别之一的服务主体:

如果 Azure 订阅通过企业协议 (EA) 或云解决方案提供商 (CSP) 获得,部署 AKS 最简单的方法是请 Azure 管理员创建具有相应权限的服务主体。 管理员可以查看以下关于如何创建服务主体的部分。

可选:创建新服务主体

运行以下步骤以创建具有内置所有者角色的新服务主体。 只有订阅所有者可以创建具有正确角色分配的服务主体。 可以通过导航到订阅,在 Azure 门户左侧选择“访问控制 (IAM)”,然后选择“查看我的访问权限”来检查访问级别。

在 PowerShell 管理员窗口中设置以下 PowerShell 变量。 验证此订阅和租户是否是你想要用于注册 AKS 主机以进行计费的订阅和租户。

$subscriptionID = "<Your Azure subscrption ID>"
$tenantID = "<Your Azure tenant ID>"

安装并导入 AKS PowerShell 模块:

Install-Module -Name AksHci

使用 Connect-AzAccount PowerShell 命令登录到 Azure:

Connect-AzAccount -tenant $tenantID

通过运行 Set-AzContext 命令,将想要用于注册 AKS 主机进行计费的订阅设置为默认订阅:

Set-AzContext -Subscription $subscriptionID

通过运行 Get-AzContext PowerShell 命令,验证登录上下文是否正确。 验证订阅、租户和帐户是否是想要用于注册 AKS 主机进行计费的:

Get-AzContext
Name                                     Account                      SubscriptionName             Environment                  TenantId
----                                     -------                      ----------------             -----------                  --------
myAzureSubscription (92391anf-...        user@contoso.com             myAzureSubscription          AzureCloud                   xxxxxx-xxxx-xxxx-xxxxxx

通过运行 New-AzADServicePrincipal PowerShell 命令创建服务主体。 此命令创建具有所有者角色的服务主体,并将范围设置为订阅级别。 有关创建服务主体的详细信息,请参阅使用 Azure PowerShell 创建 Azure 服务主体

$sp = New-AzADServicePrincipal -role "Owner" -scope /subscriptions/$subscriptionID

通过运行以下命令检索服务主体的密码。 请注意,此命令仅适用于 Az.Accounts 2.6.0 或更低版本。 安装 AksHci PowerShell 模块时,我们会自动下载 Az.Accounts 2.6.0 模块:

$secret = $sp.PasswordCredentials[0].SecretText
Write-Host "Application ID: $($sp.ApplicationId)"
Write-Host "App Secret: $secret"

从之前的输出中,现在在部署 AKS 时拥有应用程序 ID机密。 应该记录这些项并安全存储。 创建完成后,在 Azure 门户中,依次转到“订阅”、“访问控制”和“角色分配”,应该会看到新的服务主体。

Azure 资源组

注册前,必须在澳大利亚东部、美国东部、东南亚或西欧 Azure 区域中拥有可用的 Azure 资源组。

Azure 区域

警告

AKS Arc 当前仅支持在以下指定的 Azure 区域内创建群集。 如果尝试在此列表之外的区域中部署,则会发生部署失败。

AKS Arc 服务用于注册、计费和管理。 目前在以下区域中受支持:

  • 美国东部
  • 美国中南部
  • 西欧

Active Directory 要求

为了让具有 2 个或更多个物理节点的 AKS 故障转移群集在 Active Directory 环境中以最佳方式运行,请确保满足以下要求:

注意

单节点 Windows Server 部署不需要 Active Directory。

  • 设置时间同步,确保所有群集节点和域控制器之间的时间偏差不超过 2 分钟。 有关设置时间同步的信息,请参阅 Windows 时间服务
  • 确保用于添加、更新和管理 AKS 或 Windows Server Datacenter 群集的用户帐户在 Active Directory 中具有正确的权限。 如果使用组织单位 (OU) 管理服务器和服务的组策略,用户帐户需要对 OU 中的所有对象具有列表、读取、修改和删除权限。
  • 为 AKS 或 Windows Server Datacenter 群集的服务器和服务使用单独的组织单位 (OU)。 使用单独的 OU 可更精细地控制访问和权限。
  • 如果在 Active Directory 中的容器上使用 GPO 模板,请确保在 Windows Server 上部署 AKS 时不受策略限制。

后续步骤

满足所有这些先决条件后,就可以使用以下方法设置 AKS 主机: