适用于:Azure Local 上的 AKS
本文介绍由 Azure Arc 启用的 AKS 中 VM 和应用程序的核心网络概念。本文还介绍了创建 Kubernetes 群集所需的网络先决条件。 我们建议你与网络管理员合作,提供并设置部署由 Arc 启用的 AKS 所需的网络参数。
这篇概念性文章介绍了以下关键组件。 这些组件需要静态 IP 地址,以便 AKS Arc 群集和应用程序能够成功创建和运行:
- AKS Arc VM 和控制平面 IP 的逻辑网络
- 容器化应用程序的负载均衡器
AKS Arc VM 和控制平面 IP 的逻辑网络
Kubernetes 节点被部署为 Arc 启用的 AKS 中的专用虚拟机。这些 VM 被分配了 IP 地址,以实现 Kubernetes 节点之间的通信。 AKS Arc 使用 Azure Local 逻辑网络为 Kubernetes 群集的基础 VM 提供 IP 地址和网络。 有关逻辑网络的详细信息,请参阅 Azure Local 的逻辑网络。 必须计划在 Azure Local 环境中为每个 AKS 群集节点 VM 预留一个 IP 地址。
注释
静态 IP 是为 AKS Arc VM 分配 IP 地址的唯一支持模式。 这是因为 Kubernetes 要求分配给 Kubernetes 节点的 IP 地址在 Kubernetes 群集的整个生命周期内保持一致。 Azure Local 上的 AKS 目前不支持软件定义的虚拟网络和 SDN 相关功能。
若要使用逻辑网络进行 AKS Arc 群集创建操作,需要以下参数:
| Az CLI 逻辑网络参数 | DESCRIPTION | AKS Arc 群集的必需参数 |
|---|---|---|
--address-prefixes |
网络的地址前缀。 目前仅支持 1 个地址前缀。 用法:--address-prefixes "10.220.32.16/24"。 |
|
--dns-servers |
DNS 服务器 IP 地址的空间分隔列表。 用法:--dns-servers 10.220.32.16 10.220.32.17。 |
|
--gateway |
网关。 网关 IP 地址必须位于地址前缀的范围内。 用法:--gateway 10.220.32.16。 |
|
--ip-allocation-method |
IP 地址分配方法。 受支持的值为“静态”。 用法:--ip-allocation-method "Static"。 |
|
--vm-switch-name |
VM 交换机的名称。 用法:--vm-switch-name "vm-switch-01"。 |
|
--ip-pool-start |
如果在 L2/ARP 模式下使用 MetalLB 或任何其他第三方负载均衡器,我们强烈建议使用 IP 池将 AKS Arc IP 要求与负载均衡器 IP 分开。 此建议有助于避免可能导致意外和难以诊断的故障的 IP 地址冲突。 此值是 IP 池的起始 IP 地址。 地址必须在地址前缀的范围内。 用法:--ip-pool-start "10.220.32.18"。 |
可选,但强烈建议。 |
--ip-pool-end |
如果在 L2/ARP 模式下使用 MetalLB 或任何其他第三方负载均衡器,我们强烈建议使用 IP 池将 AKS Arc IP 要求与负载均衡器 IP 分开。 此建议有助于避免可能导致意外和难以诊断的故障的 IP 地址冲突。 此值是 IP 池的结束 IP 地址。 地址必须在地址前缀的范围内。 用法:--ip-pool-end "10.220.32.38"。 |
可选,但强烈建议。 |
控制平面 IP
Kubernetes 使用控制平面来确保 Kubernetes 群集中的每个组件都保持所需状态。 控制平面还管理和维护保存容器化应用程序的工作器节点。 Arc 启用的 AKS 部署 KubeVIP 负载均衡器,以确保 Kubernetes 控制平面的 API 服务器 IP 地址始终可用。 此 KubeVIP 实例需要一个不可变的“控制平面 IP 地址”才能正常工作。 AKS Arc 会从 Kubernetes 群集创建操作期间传递的逻辑网络中为你自动选择一个控制平面 IP 地址。
还可以选择传递控制平面 IP。 在这种情况下,控制平面 IP 必须在逻辑网络的地址前缀范围内。 必须确保控制平面 IP 地址不会与任何其他地址重叠,包括 Arc VM 逻辑网络、基础结构网络 IP、负载均衡器等。重叠的 IP 地址可能会导致 AKS 群集和正在使用 IP 地址的任何其他位置出现意外故障。 必须计划在环境中为每个 Kubernetes 群集预留一个 IP 地址。
容器化应用程序的负载均衡器 IP
负载均衡器的主要目的是在 Kubernetes 群集中的多个节点之间分配流量。 这种负载均衡可以帮助防止停机并提高应用程序的整体性能。 AKS 支持以下选项为 Kubernetes 群集部署负载均衡器:
- 为 Azure Arc 启用的 Kubernetes 群集部署 MetalLB 扩展。
- 自带第三方负载均衡器。
无论你是为 MetalLB 选择 Arc 扩展,还是自带负载均衡器,都必须向负载均衡器服务提供一组 IP 地址。 你有以下选择:
- 从 AKS Arc VM 所在的相同子网为你的服务提供 IP 地址。
- 如果应用程序需要外部负载均衡,请使用其他网络和 IP 地址列表。
无论你选择哪种选项,都必须确保分配给负载均衡器的 IP 地址不会与逻辑网络中的 IP 地址冲突。 IP 地址冲突可能会导致 AKS 部署和应用程序出现意外故障。
代理设置
AKS 中的代理设置是从底层基础结构系统继承的。 尚不支持为 Kubernetes 群集设置单个代理设置和更改代理设置的功能。 有关如何正确设置代理的详细信息,请参阅 Azure Local 的代理要求。
警告
部署 Azure Local 后,无法更新不正确的代理设置。 如果代理配置错误,则必须重新部署 Azure Local。
防火墙 URL 例外
AKS 的防火墙要求已与 Azure Local 防火墙要求整合。 有关成功部署 AKS 所需的 URL 列表,请参阅 Azure Local 防火墙要求。
DNS 服务器设置
需要确保逻辑网络的 DNS 服务器能够解析 Azure Local 群集的 FQDN。 所有 Azure Local 节点都需要 DNS 名称解析才能与 AKS VM 节点通信。
网络端口和跨 VLAN 要求
部署 Azure Local 时,会在管理网络的子网上分配至少六个静态 IP 地址的连续块,忽略物理计算机已经使用的地址。 这些 IP 由 Azure Local 基础结构和内部基础结构(Arc 资源网桥)用于 Arc VM 管理和 AKS Arc。如果为 Arc 资源网桥相关的 Azure Local 服务提供 IP 地址的管理网络与用于创建 AKS 群集的逻辑网络位于不同的 VLAN 上,则需要确保打开以下端口以成功创建和操作 AKS 群集。
| 目标端口 | 目的地 | 来源 | DESCRIPTION | 双向跨 VLAN 网络连接说明 |
|---|---|---|---|---|
| 22 | 用于 AKS Arc VM 的逻辑网络 | 管理网络中的 IP 地址 | 需要收集日志才能进行故障排除。 | 如果使用单独的 VLAN,则用于 Azure 本地和 Arc 资源桥的管理网络中 IP 地址需要访问此端口上的 AKS Arc 群集 VM,反之亦然。 |
| 6443 | 用于 AKS Arc VM 的逻辑网络 | 管理网络中的 IP 地址 | 与 Kubernetes API 通信时需要。 | 如果使用单独的 VLAN,则用于 Azure 本地和 Arc 资源桥的管理网络中 IP 地址需要访问此端口上的 AKS Arc 群集 VM,反之亦然。 |
| 55000 | 群集 IP 地址 | 用于 AKS Arc VM 的逻辑网络 | 云代理 gRPC 服务器 | 如果使用单独的 VLAN,AKS Arc VM 需要访问管理网络中用于此端口上的云代理 IP 和群集 IP 的 IP 地址,反之亦然。 |
| 65000 | 群集 IP 地址 | 用于 AKS Arc VM 的逻辑网络 | 云代理 gRPC 身份验证 | 如果使用单独的 VLAN,AKS Arc VM 需要访问管理网络中用于此端口上的云代理 IP 和群集 IP 的 IP 地址,反之亦然。 |
将 Azure Arc 网关(预览版)与 Azure 本地配合使用
如果使用 Arc 网关 部署 Azure 本地群集基础结构,请确保端口 40343 上允许 AKS 子网与群集 IP 之间的连接,如下所示:
| 目标端口 | 目的地 | 来源 | DESCRIPTION | 双向跨 VLAN 网络连接说明 |
|---|---|---|---|---|
| 40343 | 群集 IP 地址 | 用于 AKS Arc VM 的逻辑网络 | 仅当为 Azure 本地群集配置 Arc 网关以建立出站连接时才是必需的。 | 如果使用单独的 VLAN 或子网,请确保 AKS Arc VM 可以访问端口 40343 上的 Azure 本地群集 IP 地址,反之亦然。 |
检索 Azure 本地群集 IP 地址
可以在群集上运行以下 PowerShell 命令以获取 Azure 本地群集的 IP 地址:
Get-ClusterResource -Name "Cluster IP Address" | Get-ClusterParameter -Name Address | Select-Object -Property Value