适用于:在 Windows Server 上运行的 AKS
可以在 Windows Server 上 AKS 的网络体系结构的两个 IP 地址分配模型之间进行选择。 AKS 支持 Azure Kubernetes 服务(AKS) 的多个部署选项 :
- 静态 IP 网络:虚拟网络为 Kubernetes 群集 API 服务器、Kubernetes 节点、基础 VM、负载均衡器以及在群集之上运行的任何 Kubernetes 服务分配静态 IP 地址。
- DHCP 网络:虚拟网络使用 DHCP 服务器为 Kubernetes 节点、基础 VM 和负载均衡器分配动态 IP 地址。 Kubernetes 群集 API 服务器以及在群集之上运行的任何 Kubernetes 服务仍会分配静态 IP 地址。
注意
此处为 AKS Arc 定义的虚拟网络体系结构可能与数据中心中的基础物理网络体系结构不同。
虚拟 IP 池
虚拟 IP (VIP) 池是 AKS Arc 中任何部署都必需的一组 IP 地址。VIP 池是一组保留的 IP 地址,用于为 Kubernetes 群集 API 服务器分配 IP 地址。 它可确保 Kubernetes 服务上的应用程序始终可访问。 请记住,无论选择哪种虚拟网络模型和地址分配模型,都必须为 AKS 主机部署提供 VIP 池。
VIP 池中的 IP 地址数量取决于为部署计划的工作负荷群集和 Kubernetes 服务的数量。
根据网络模型的不同,VIP 池定义的区别如下:
- 静态 IP:如果使用静态 IP,请确保虚拟 IP 地址来自提供的同一子网。
- DHCP:如果网络配置了 DHCP,请与网络管理员协作,从用于 AKS 部署的 DHCP 范围中排除 VIP 池 IP 范围。
Kubernetes 节点 VM IP 池
Kubernetes 节点在 AKS Arc 中部署为专用虚拟机。AKS 为这些虚拟机分配 IP 地址,以启用 Kubernetes 节点之间的通信。
- 静态 IP:必须指定 Kubernetes 节点 VM IP 池范围。 此范围内的 IP 地址数量取决于计划用于跨 AKS 主机和工作负荷 Kubernetes 群集部署的 Kubernetes 节点总数。 请记住,更新期间会额外消耗一到三个 IP 地址。
- DHCP:无需指定 Kubernetes 节点 VM 池,因为 Kubernetes 节点的 IP 地址由网络上的 DHCP 服务器动态分配。
使用静态 IP 网络的虚拟网络(推荐)
此网络模型创建一个虚拟网络,从静态定义的地址池向部署中的所有对象分配 IP 地址。 使用静态 IP 网络的一个额外好处是,保证长期部署和应用程序工作负荷始终可访问。
定义具有静态 IP 配置的虚拟网络时,请指定以下参数:
重要说明
此版本的 AKS 在部署 AKS 主机或工作负荷群集后不允许任何网络配置更改。 为了更改网络设置,必须通过删除工作负荷群集并卸载 AKS 来重新开始。
名称:虚拟网络的名称。
地址前缀:用于子网的 IP 地址前缀。
网关:子网默认网关的 IP 地址。
DNS 服务器:指向要用于子网的 DNS 服务器的 IP 地址数组。 最多可提供三个服务器,至少提供一个。
Kubernetes 节点 VM 池:用于 Kubernetes 节点 VM 的连续 IP 地址范围。
虚拟 IP 池:用于 Kubernetes 群集 API 服务器和 Kubernetes 服务的连续 IP 地址范围。
注意
VIP 池必须与 Kubernetes 节点 VM 池属于同一子网。
vLAN ID:虚拟网络的 vLAN ID。 如果省略,则虚拟网络不带标记。
使用 DHCP 网络的虚拟网络
此网络模型创建一个虚拟网络,使用 DHCP 向部署中的所有对象分配 IP 地址。
定义具有静态 IP 配置的虚拟网络时,必须指定以下参数:
名称:虚拟网络的名称。
虚拟 IP 池:用于 Kubernetes 群集 API 服务器和 Kubernetes 服务的连续 IP 地址范围。
注意
VIP 池地址需要与 DHCP 范围位于同一子网,并且必须从 DHCP 范围中排除,以避免地址冲突。
vLAN ID:虚拟网络的 vLAN ID。 如果省略,则虚拟网络不带标记。
Microsoft 本地云服务
Microsoft本地云(MOC)是管理堆栈,使基于 Windows Server 的 SDDC 上的虚拟机能够在云中管理。 MOC 包括:
- 在群集中部署的高可用性
cloud agent
服务的单个实例。 此代理在 Windows Server 群集中的任意一个节点上运行,并配置为故障转移到另一个节点。 node agent
在每个物理节点上运行。
要启用与 MOC 的通信,必须提供要用于该服务的 IP 地址 CIDR。 -cloudserviceCIDR
是 Set-AksHciConfig
命令中的参数,用于将 IP 地址分配给云代理服务并启用云代理服务的高可用性。
MOC 服务的 IP 地址的选择取决于 Windows Server 上的群集部署使用的基础网络模型。
注意
MOC 服务的 IP 地址分配独立于 Kubernetes 虚拟网络模型。 IP 地址分配取决于基础物理网络,以及为数据中心中的 Windows Server 群集节点配置的 IP 地址。
具有基于 DHCP 的 IP 地址分配模式的 Windows Server 群集节点:如果群集节点是从物理网络上存在的 DHCP 服务器分配 IP 地址,则无需向 MOC 服务显式提供 IP 地址,因为 MOC 服务也会从 DHCP 服务器接收 IP 地址。
具有静态 IP 分配模型的 Windows Server 群集节点:如果群集节点分配了静态 IP 地址,则必须为 MOC 云服务显式提供 IP 地址。 MOC 服务的 IP 地址必须与 Windows Server 群集节点的 IP 地址位于同一子网中。 要显式分配 MOC 服务的 IP 地址,请在
Set-AksHciConfig
命令中使用-cloudserviceCIDR
参数。 确保以 CIDR 格式输入 IP 地址,例如:10.11.23.45/16
网络模型的比较
DHCP 和静态 IP 在 Windows Server 部署上的 AKS 上提供网络连接。 不过,这两个模型各有优缺点。 从较高层面讲,需要考虑以下因素:
DHCP - 不保证 AKS 部署中某些资源类型的长期 IP 地址。 - 如果部署规模超过最初预期,支持扩展保留的 DHCP IP 地址。
静态 IP - 保证 AKS 部署中所有资源的长期 IP 地址。 - 由于不支持 Kubernetes 节点 IP 池的自动扩展,如果 Kubernetes 节点 IP 池已耗尽,可能无法创建新群集。
下表比较了静态 IP 和 DHCP 网络模型之间的资源 IP 地址分配:
功能 | 静态 IP | DHCP |
---|---|---|
Kubernetes 群集 API 服务器 | 使用 VIP 池进行静态分配。 | 使用 VIP 池进行静态分配。 |
Kubernetes 节点(在虚拟机上) | 使用 Kubernetes 节点 IP 池分配。 | 动态分配。 |
Kubernetes 服务 | 使用 VIP 池进行静态分配。 | 使用 VIP 池进行静态分配。 |
HAProxy 负载均衡器 VM | 使用 Kubernetes 节点 IP 池分配。 | 动态分配。 |
Microsoft 本地云服务 | 取决于 Windows Server 群集节点的物理网络配置。 | 取决于 Windows Server 群集节点的物理网络配置。 |
VIP 池 | 必需 | 必需 |
Kubernetes 节点 VM IP 池 | 必需 | 不支持 |
AKS 部署的最低 IP 地址预留
无论采用何种部署模型,保留的 IP 地址数量保持不变。 本部分介绍需要根据 AKS Arc 部署模型保留的 IP 地址数量。
最小 IP 地址预留
至少应为部署保留以下数量的 IP 地址:
群集类型 | 控制平面节点 | 工作器节点 | 适用于更新操作 | 负载均衡器 |
---|---|---|---|---|
AKS 主机 | 一个 IP | 无 | 两个 IP | 无 |
工作负荷群集 | 每个节点一个 IP | 每个节点一个 IP | 5 IP | 一个 IP |
还应为 VIP 池保留以下 IP 地址数:
资源类型 | IP 地址数 |
---|---|
群集 API 服务器 | 每个群集 1 个 |
Kubernetes 服务 | 每个服务 1 个 |
应用程序服务 | 每项计划服务 1 个 |
如你所见,所需的 IP 地址数量因 AKS 部署的体系结构以及在 Kubernetes 群集上运行的服务数量而异。 我们建议为部署至少保留 256 个 IP 地址(/24 子网)。
浏览示例部署
Jane 是一名 IT 管理员,刚开始在 Windows Server 上使用 AKS。 她想要在 Windows Server 群集上部署两个 Kubernetes 群集:Kubernetes 群集 A 和 Kubernetes 群集 B。 她还希望在群集之上运行投票应用程序。 此应用程序在两个群集上运行三个前端 UI 实例和一个后端数据库实例。
- Kubernetes 群集 A 有 3 个控制平面节点和 5 个工作器节点。
- Kubernetes 群集 B 有 1 个控制平面节点和 3 个工作器节点。
- 3 个前端 UI 实例(端口 443)。
- 1 个后端数据库实例(端口 80)。
根据上表,她必须预留:
- 3 个用于 AKS 主机的 IP 地址(一个用于控制平面节点,两个用于运行更新操作)。
- 3 个用于群集 A 中控制平面节点的 IP 地址(每个控制平面节点一个 IP)。
- 5 个用于群集 A 中工作器节点的 IP 地址(每个工作器节点一个 IP)。
- 为群集 A 增加 6 个 IP 地址(5 个 IP 用于运行更新操作,1 个 IP 用于负载均衡器)。
- 1 个用于群集 B 中控制平面节点的 IP 地址(每个控制平面节点一个 IP)。
- 3 个用于群集 B 中工作器节点的 IP 地址(每个工作器节点一个 IP)。
- 群集 B 额外需要 6 个 IP 地址(五个用于运行更新操作,一个用于负载均衡器)。
- 2 个用于 Kubernetes 群集 API 服务器的 IP 地址(每个 Kubernetes 群集一个 IP)。
- 3 个用于 Kubernetes 服务的 IP 地址(每个前端 UI 实例一个 IP 地址,因为它们都使用相同的端口。后端数据库可以使用三个 IP 地址中的任意一个,只要使用不同的端口)。
如前所述,Jane 需要总共 32 个 IP 地址来部署群集。 因此,Jane 应为其虚拟网络保留/26 子网。
基于静态 IP 网络模型拆分保留的 IP 地址
虽然保留的 IP 地址总数保持不变,但部署模型决定了这些 IP 地址如何在 IP 组之间划分。 静态 IP 网络模型有两个 IP 池:
- Kubernetes 节点 VM IP 池:用于 Kubernetes 节点 VM 和负载均衡器 VM。 此 IP 池还包括运行更新操作所需的 IP 地址。
- 虚拟 IP 池:用于 Kubernetes API 服务器和 Kubernetes 服务。
在这个示例中,Jane 必须进一步在 VIP 池和 Kubernetes 节点 IP 池之间划分这些 IP 地址:
- 32 个 IP 地址中有 5 个(两个用于 Kubernetes 群集 API 服务器,三个用于 Kubernetes 服务)用于她的 VIP 池。
- 27(她的 Kubernetes 节点和基础 VM、负载均衡器 VM 和更新操作的所有 IP 地址)用于她的 Kubernetes 节点 IP 池。
基于 DHCP 网络模型拆分保留的 IP 地址
虽然保留的 IP 地址总数保持不变,但部署模型决定了这些 IP 地址如何在 IP 组之间划分。 如前一节所述,DHCP 网络模型有一个 IP 范围:
- 虚拟 IP 池:用于 Kubernetes API 服务器和 Kubernetes 服务
在前面的示例中:
- Jane 必须在其 DHCP 服务器上总共保留 32 个 IP 地址或/26 子网。
- 她必须从 32 个 IP 地址的 DHCP 范围中排除 5 个(两个用于 Kubernetes 群集 API 服务器,三个用于 Kubernetes 服务)用于她的 VIP 池。
入口控制器
在目标群集的部署过程中,会创建一个基于 HAProxy
的负载均衡器资源。 负载均衡器配置为在给定端口上将流量分发到服务中的 Pod。 负载均衡器仅在第 4 层工作,这表示该服务不了解实际应用程序;即无法进行任何额外的路由考虑。
入口控制器在第 7 层工作,能够使用更智能的规则来分发应用程序流量。 入口控制器的常见用途是基于入站 URL 将 HTTP 流量路由到不同的应用程序。
后续步骤
本文介绍在 Windows Server 上部署 AKS 节点的一些网络概念。 有关详细信息,请参阅以下文章: