Azure Arc 网络要求启用的 AKS
适用于:Azure Stack HCI 版本 23H2
本文介绍由 Azure Arc 启用的 AKS 中 VM 和应用程序的核心网络概念。本文还介绍了创建 Kubernetes 群集所需的网络先决条件。 我们建议你与网络管理员合作,提供和设置部署由 Arc 启用的 AKS 所需的网络参数。
在本概念性文章中,将介绍以下关键组件。 这些组件需要静态 IP 地址,以便 AKS Arc 群集和应用程序能够成功创建和操作:
- AKS 群集 VM
- AKS 控制平面 IP
- 容器化应用程序的负载均衡器
AKS 群集 VM 的网络
Kubernetes 节点部署为 Arc 启用的 AKS 中的专用虚拟机。这些 VM 分配有 IP 地址,以启用 Kubernetes 节点之间的通信。 AKS Arc 使用 Azure Stack HCI 逻辑网络为 Kubernetes 群集的基础 VM 提供 IP 地址和网络。 有关逻辑网络的详细信息,请参阅 Azure Stack HCI 的逻辑网络。 必须在 Azure Stack HCI 环境中为每个 AKS 群集节点 VM 保留一个 IP 地址。
注意
静态 IP 是唯一支持向 AKS Arc VM 分配 IP 地址的模式。 这是因为 Kubernetes 要求分配给 Kubernetes 节点的 IP 地址在 Kubernetes 群集的整个生命周期内保持一致。 Azure Stack HCI 23H2 上的 AKS 当前不支持软件定义的虚拟网络和 SDN 相关功能。
若要对 AKS Arc 群集创建操作使用逻辑网络,需要以下参数:
逻辑网络参数 | 说明 | AKS Arc 群集的必需参数 |
---|---|---|
--address-prefixes |
网络的 AddressPrefix。 目前仅支持 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 地址分配方法。 支持的值为“Static”。 用法:--ip-allocation-method "Static" 。 |
|
--ip-pool-start |
IP 池的起始 IP 地址。 地址必须位于地址前缀的范围内。 用法:--ip-pool-start "10.220.32.18" 。 |
|
--ip-pool-end |
IP 池的结束 IP 地址。 地址必须位于地址前缀的范围内。 用法:--ip-pool-end "10.220.32.38" 。 |
|
--vm-switch-name |
VM 交换机的名称。 用法:--vm-switch-name "vm-switch-01" 。 |
控制平面 IP
Kubernetes 使用控制平面来确保 Kubernetes 群集中的每个组件都保持所需状态。 控制平面还管理和维护保存容器化应用程序的辅助角色节点。 Arc 启用的 AKS 部署 KubeVIP 负载均衡器,以确保 Kubernetes 控制平面的 API 服务器 IP 地址随时可用。 此 KubeVIP 实例需要一个不可变的“控制平面 IP 地址”才能正常工作。
注意
控制平面 IP 是创建 Kubernetes 群集所需的参数。 必须确保 Kubernetes 群集的控制平面 IP 地址不会与任何其他地址重叠,包括 Arc VM 逻辑网络、基础结构网络 IP、负载均衡器等。控制平面 IP 还必须位于逻辑网络的地址前缀的范围内,但必须在 IP 池外部。 这是因为 IP 池仅用于 VM,如果从控制平面的 IP 池中选择 IP 地址,则 IP 地址冲突可能会导致。 重叠的 IP 地址可能会导致 AKS 群集和正在使用 IP 地址的任何其他位置出现意外故障。 必须计划在你的环境中为每个 Kubernetes 群集保留一个 IP 地址。
容器化应用程序的负载均衡器 IP
负载均衡器的主要目的是在 Kubernetes 群集中的多个节点之间分配流量。 此负载均衡有助于防止停机并提高应用程序的整体性能。 AKS 支持以下选项来为 Kubernetes 群集部署负载均衡器:
- 使用 Azure Arc 扩展部署 MetalLB 负载均衡器。
- 自带第三方负载均衡器。
无论是选择 MetalLB Arc 扩展还是自带负载均衡器,都必须向负载均衡器服务提供一组 IP 地址。 你有以下选择:
- 为服务提供与 AKS Arc VM 相同的子网中的 IP 地址。
- 如果应用程序需要外部负载均衡,请使用其他网络和 IP 地址列表。
无论选择哪种选项,都必须确保分配给负载均衡器的 IP 地址不会与逻辑网络中的 IP 地址或 Kubernetes 群集的控制平面 IP 冲突。 冲突的 IP 地址可能会导致 AKS 部署和应用程序中出现意外故障。
Kubernetes 群集和应用程序的简单 IP 地址规划
在以下方案演练中,为 Kubernetes 群集和服务保留单个网络的 IP 地址。 这是 IP 地址分配的最简单简单方案。
IP 地址要求 | 最小 IP 地址数 | 如何和在哪里进行此预留 |
---|---|---|
AKS Arc VM IP | 为 Kubernetes 群集中的每个工作器节点保留一个 IP 地址。 例如,如果要在每个节点池中创建包含 3 个节点的 3 个节点池,则需要在 IP 池中有 9 个 IP 地址。 | 通过 Arc VM 逻辑网络中 IP 池为 AKS Arc VM 保留 IP 地址。 |
AKS Arc K8s 版本升级 IP | 由于 AKS Arc 执行滚动升级,因此对于 Kubernetes 版本升级操作,请为每个 AKS Arc 群集保留一个 IP 地址。 | 通过 Arc VM 逻辑网络中 IP 池保留 K8s 版本升级操作的 IP 地址。 |
控制平面 IP | 为环境中的每个 Kubernetes 群集保留一个 IP 地址。 例如,如果要总共创建 5 个群集,请保留 5 个 IP 地址,为每个 Kubernetes 群集保留一个。 | 保留与 Arc VM 逻辑网络位于同一子网中的控制平面 IP 地址,但在指定的 IP 池之外。 |
负载均衡器 IP | 保留的 IP 地址数取决于应用程序部署模型。 首先,可以为每个 Kubernetes 服务保留一个 IP 地址。 | 保留与 Arc VM 逻辑网络位于同一子网中的控制平面 IP 地址,但在指定的 IP 池之外。 |
Kubernetes 群集和应用程序的 IP 地址预留示例演练
Jane 是 IT 管理员,刚从 Azure Arc 启用的 AKS 开始。她想要在 Azure Stack HCI 群集上部署两个 Kubernetes 群集:Kubernetes 群集 A 和 Kubernetes 群集 B。 她还希望在群集 A 之上运行投票应用程序。此应用程序包含跨两个群集和一个后端数据库的一个实例运行的前端 UI 的三个实例。 她的所有 AKS 群集和服务都在具有单个子网的单个网络中运行。
- Kubernetes 群集 A 有 3 个控制平面节点和 5 个工作器节点。
- Kubernetes 群集 B 有 1 个控制平面节点和 3 个工作器节点。
- 前端 UI 的 3 个实例(端口 443)。
- 后端数据库的 1 个实例(端口 80)。
根据上表,她必须在子网中保留总共 19 个 IP 地址:
- 群集 A 中 AKS Arc 节点 VM 的 8 个 IP 地址(每个 K8s 节点 VM 一个 IP)。
- 群集 B 中 AKS Arc 节点 VM 的 4 个 IP 地址(每个 K8s 节点 VM 一个 IP)。
- 用于运行 AKS Arc 升级操作的 2 个 IP 地址(每个 AKS Arc 群集一个 IP 地址)。
- AKS Arc 控制平面的 2 个 IP 地址(每个 AKS Arc 群集一个 IP 地址)
- Kubernetes 服务的 3 个 IP 地址(每个前端 UI 实例有一个 IP 地址,因为它们都使用相同的端口。只要后端数据库使用不同的端口,后端数据库就可以使用这三个 IP 地址中的任何一个。
继续执行此示例,并将其添加到下表中,你将获得:
参数 | IP 地址数 | 如何和在哪里进行此预留 |
---|---|---|
AKS Arc VM 和 K8s 版本升级 | 保留 14 个 IP 地址 | 通过 Azure Stack HCI 逻辑网络中的 IP 池进行此预留。 |
控制平面 IP | 保留 2 个 IP 地址,一个用于 AKS Arc 群集 | 使用 controlPlaneIP 参数传递控制平面 IP 的 IP 地址。 确保此 IP 与 Arc 逻辑网络位于同一子网中,但在 Arc 逻辑网络中定义的 IP 池外部。 |
负载均衡器 IP | 适用于 Kubernetes 服务的 3 个 IP 地址,用于 Jane 的投票应用程序。 | 在群集 A 上安装负载均衡器时,会使用这些 IP 地址。可以使用 MetalLB Arc 扩展,或自带第三方负载均衡器。 确保此 IP 与 Arc 逻辑网络位于同一子网中,但在 Arc VM 逻辑网络中定义的 IP 池外部。 |
代理设置
AKS 中的代理设置继承自底层基础结构系统。 尚不支持为 Kubernetes 群集设置单个代理设置和更改代理设置的功能。
网络端口和跨 VLAN 要求
部署 Azure Stack HCI 时,会在管理网络的子网上分配至少六个静态 IP 地址的连续块,省略物理服务器已使用的地址。 Azure Stack HCI 和内部基础结构(Arc 资源桥)使用这些 IP 进行 Arc VM 管理和 AKS Arc。如果为 Arc 资源桥相关的 Azure Stack HCI 服务提供 IP 地址的管理网络与用于创建 AKS 群集的逻辑网络位于不同的 VLAN 上,则需要确保打开以下端口以成功创建和操作 AKS 群集。
Destination Port | 目标 | Source | 说明 | 跨 VLAN 网络说明 |
---|---|---|---|---|
22 | 用于 AKS Arc VM 的逻辑网络 | 管理网络中 IP 地址 | 需要收集日志才能进行故障排除。 | 如果使用单独的 VLAN,则用于 Azure Stack HCI 和 Arc 资源桥的管理网络中 IP 地址需要访问此端口上的 AKS Arc 群集 VM。 |
6443 | 用于 AKS Arc VM 的逻辑网络 | 管理网络中 IP 地址 | 与 Kubernetes API 通信所必需的。 | 如果使用单独的 VLAN,则用于 Azure Stack HCI 和 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 地址。 |
防火墙 URL 异常
有关 Azure Arc 防火墙/代理 URL 允许列表的信息,请参阅 Azure Arc 资源网桥网络要求 和 Azure Stack HCI 23H2 网络要求。
注意
如果要部署较旧的 Azure Stack HCI 版本(如 2402 及更早版本),则还必须允许 gcr.io 和 storage.googleapis.com URL。 这些 URL 已从最新的 AKS Arc 版本中删除。
URL | 端口 | 服务 | 备注 |
---|---|---|---|
https://mcr.microsoft.com *.data.mcr.microsoft.com azurearcfork8s.azurecr.io linuxgeneva-microsoft.azurecr.io pipelineagent.azurecr.io ecpacr.azurecr.io https://azurearcfork8sdev.azurecr.io https://hybridaks.azurecr.io aszk8snetworking.azurecr.io |
443 | AKS Arc | 用于官方Microsoft项目,例如容器映像。 |
docker.io |
443 | AKS Arc | 用于 Kubernetes 官方项目,例如容器基础映像。 |
hybridaksstorage.z13.web.core.windows.net |
443 | AKS Arc | Azure 存储中托管的 AKSHCI 静态网站。 |
*.blob.core.windows.net *.dl.delivery.mp.microsoft.com *.do.dsp.mp.microsoft.com |
443 | AKS Arc | 用于 AKS Arc VHD 映像下载和更新。 |
*.prod.do.dsp.mp.microsoft.com |
443 | AKS Arc | 用于 AKS Arc VHD 映像下载和更新。 |
*.login.microsoft.com |
443 | Azure | 提取和更新用于登录到 Azure 的 Azure 资源管理器令牌所必需的。 |
https://*.his.arc.azure.com |
443 | 已启用 Azure Arc 的 K8s | 用于 Arc 代理标识和访问控制。 |
https://*.dp.kubernetesconfiguration.azure.com |
443 | 已启用 Azure Arc 的 K8s | 用于 Azure Arc 配置。 |
https://*.servicebus.windows.net |
443 | 已启用 Azure Arc 的 K8s | 用于安全地连接到已启用 Azure Arc 的 Kubernetes 群集,而无需在防火墙上启用任何入站端口。 |
https://guestnotificationservice.azure.com |
443 | 已启用 Azure Arc 的 K8s | 用于来宾通知操作。 |
sts.windows.net |
443 | 已启用 Azure Arc 的 K8s | 对于群集连接和基于自定义位置的方案。 |
https://*.dp.prod.appliances.azure.com |
443 | Arc 资源网桥 | 用于资源网桥(设备)的数据平面操作。 |
*.prod.microsoftmetrics.com *.prod.hot.ingestion.msftcloudes.com dc.services.visualstudio.com *.prod.warm.ingest.monitor.core.windows.net gcs.prod.monitoring.core.windows.net https://adhs.events.data.microsoft.com https://v20.events.data.microsoft.com |
443 | 指标和运行状况监视 | 用于指标和监视遥测流量。 |
pypi.org *.pypi.org files.pythonhosted.org |
443 | Az CLI | 用于下载 Az CLI 和 Az CLI 扩展。 |
aka.ms |
443 | Azure Stack HCI | Azure Stack HCI 相关下载是必需的。 |
raw.githubusercontent.com |
443 | GitHub | 用于 GitHub。 |
www.microsoft.com |
80 | Microsoft官方网站。 | Microsoft官方网站。 |