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

适用于 Azure Kubernetes 服务 (AKS) 群集的出站网络和 FQDN 规则

本文提供了从 Azure Kubernetes 服务 (AKS) 保护出站流量的必要详细信息。 它包含基本 AKS 部署的群集要求,以及可选加载项和功能的其他要求。 可以将此信息应用于任何出站限制方法或设备。

要查看使用 Azure 防火墙的示例配置,请访问在 AKS 中使用 Azure 防火墙控制出口流量

背景

AKS 群集部署在虚拟网络上。 此网络可以由你自定义和预配置,也可以由 AKS 创建和管理。 在任一情况下,群集都对虚拟网络外部服务具有出站或流出量依赖项。

为了便于管理和操作,AKS 群集中的节点需要访问特定的端口和完全限定的域名 (FQDN)。 节点需要使用这些终结点才能与 API 服务器进行通信,或下载并安装核心 Kubernetes 群集组件和节点安全更新。 例如,群集需要从 Microsoft 工件注册表 (MAR) 拉取容器映像。

AKS 出站依赖项几乎完全是使用 FQDN 定义的,不附带任何静态地址。 缺少静态地址意味着无法使用网络安全组 (NSG) 来锁定来自 AKS 群集的出站流量。

默认情况下,AKS 群集具有不受限制的出站 Internet 访问权限。 此级别的网络访问权限允许运行的节点和服务根据需要访问外部资源。 如果希望限制出口流量,则必须限制可访问的端口和地址数量,才能维护正常的群集维护任务。

网络隔离的 AKS 群集,提供最简单和最安全的解决方案,用于为群集设置现成的出站限制。 网络隔离群集能够从连接到群集的专用 Azure 容器注册表 (ACR) 实例中拉取群集组件和加载项的映像,而不是从 MAR 拉取。 如果映像不存在,专用 ACR 会从 MAR 中拉取它们,并通过专用终结点传送它们,无需启用从群集到公共 MAR 终结点的出口。 然后,群集操作员可以针对要启用的每个方案,通过专用网络安全地设置允许的出站流量。 这样一来,群集操作员从一开始就可以完全控制如何设计来自群集的允许的出站流量,从而降低数据外泄的风险。

确保出站地址安全的另一个解决方案是使用可根据域名控制出站流量的防火墙设备。 Azure 防火墙可以根据目标的 FQDN 限制出站 HTTP 和 HTTPS 流量。 还可配置首选的防火墙和安全规则,以允许所需的端口和地址。

重要

本文档仅介绍如何锁定离开 AKS 子网的流量。 默认情况下,AKS 没有入口需求。 不支持使用网络安全组 (NSG) 和防火墙阻止内部子网流量。 要控制和阻止群集中的流量,请参阅使用 AKS 中的网络策略保护 Pod 之间的流量

AKS 群集所需的出站网络规则和 FQDN

AKS 群集需要以下网络和 FQDN/应用程序规则。 如果希望配置除 Azure 防火墙以外的解决方案,则可以使用它们。

  • IP 地址依赖项适用于非 HTTP/S 流量(TCP 和 UDP 流量)。
  • 可将 FQDN HTTP/HTTPS 终结点放在防火墙设备中。
  • 通配符 HTTP/HTTPS 终结点是可以根据许多限定符随 AKS 群集一起变化的依赖项。
  • AKS 使用准入控制器将 FQDN 作为环境变量注入到 kube-system 和 gatekeeper-system 下面的所有部署中。 这可以确保节点与 API 服务器之间的所有系统通信使用 API 服务器 FQDN 而不是 API 服务器 IP。 通过使用名为 kubernetes.azure.com/set-kube-service-host-fqdn 的注释对 Pod 规范进行批注,你可以在任何名称空间中使自己的 pod 获得相同的行为。 如果存在该注释,AKS 会将 KUBERNETES_SERVICE_HOST 变量设置为 API 服务器的域名,而不是群集内服务 IP。 如果群集出口通过第 7 层防火墙,这将非常有用。
  • 如果应用或解决方案需要与 API 服务器通信,则必须添加其他网络规则,以允许与 API 服务器 IP 的端口 443 进行 TCP 通信,或者,如果配置了第 7 层防火墙以允许流量流向 API 服务器的域名,则在 Pod 规范中设置 kubernetes.azure.com/set-kube-service-host-fqdn
  • 在极少数情况下,如果存在维护操作,API 服务器 IP 可能会发生更改。 始终会提前传达可以更改 API 服务器 IP 的计划内维护操作。
  • 你可能会注意到流向“md-*.blob.storage.azure.net”终结点的流量。 此终结点用于 Azure 托管磁盘的内部组件。 阻止从防火墙访问此终结点不应造成任何问题。
  • 你可能会注意到流向“umsa*.blob.core.windows.net”终结点的流量。 此终结点用于存储 Azure Linux VM 代理和扩展的清单,并会定期接受检查以下载新版本。 可以在 VM 扩展中找到更多详细信息。

Azure 全球的必需网络规则

目标终结点 协议 端口 用途
*:1194
Or
ServiceTag - AzureCloud.<Region>:1194
Or
区域 CIDR - RegionCIDRs:1194
Or
APIServerPublicIP:1194 (only known after cluster creation)
UDP 1194 用于节点与控制平面之间的隧道安全通信。 对于专用群集或启用了 konnectivity-agent 的群集来说,这不是必需的。
*:9000
Or
ServiceTag - AzureCloud.<Region>:9000
Or
区域 CIDR - RegionCIDRs:9000
Or
APIServerPublicIP:9000 (only known after cluster creation)
TCP 9000 用于节点与控制平面之间的隧道安全通信。 对于专用群集或启用了 konnectivity-agent 的群集,这不是必需的。
*:123ntp.ubuntu.com:123(如果使用 Azure 防火墙网络规则) UDP 123 在 Linux 节点上进行网络时间协议 (NTP) 时间同步时需要。 对于 2021 日 3 月之后预配的节点,这不是必需的。
CustomDNSIP:53 (if using custom DNS servers) UDP 53 如果使用的是自定义 DNS 服务器,必须确保群集节点可以访问这些服务器。
APIServerPublicIP:443 (if running pods/deployments that access the API Server) TCP 443 运行访问 API 服务器的 Pod/部署时需要,这些 Pod/部署将使用 API IP。 对于专用群集,此端口不是必需的。

Azure 全球的必需 FQDN/应用程序规则

目标 FQDN 端口 用途
*.hcp.<location>.azmk8s.io HTTPS:443 Node <-> API 服务器通信时需要。 将 location> 替换为部署 AKS 群集的区域。 这对于已启用 konnectivity-agent 的群集是必需的。 Konnectivity 还使用应用程序层协议协商 (ALPN) 在代理和服务器之间进行通信。 阻止或重写 ALPN 扩展将导致失败。 对于专用群集,这不是必需的。
mcr.microsoft.com HTTPS:443 访问 Microsoft 容器注册表 (MCR) 中的映像时需要。 此注册表包含第一方映像/图表(例如 coreDNS 等)。 这些映像是正确创建和正常运行群集所必需的,包括缩放和升级操作。
*.data.mcr.microsoft.commcr-0001.mcr-msedge.net HTTPS:443 对于 Azure 内容分发网络 (CDN) 支持的 MCR 存储是必需的。
management.azure.com HTTPS:443 对于针对 Azure API 的 Kubernetes 操作是必需的。
login.microsoftonline.com HTTPS:443 Microsoft Entra 身份验证需要此项。
packages.microsoft.com HTTPS:443 Microsoft 包存储库使用此地址缓存 apt-get 操作。 示例包包括 Moby、PowerShell 和 Azure CLI。
acs-mirror.azureedge.net HTTPS:443 此地址用于下载和安装所需二进制文件(如 kubenet 和 Azure CNI)所需的存储库。

21Vianet 运营的 Microsoft Azure 需要的网络规则

目标终结点 协议 端口 用途
*:1194
Or
ServiceTag - AzureCloud.Region:1194
Or
区域 CIDR - RegionCIDRs:1194
Or
APIServerPublicIP:1194 (only known after cluster creation)
UDP 1194 用于节点与控制平面之间的隧道安全通信。
*:9000
Or
ServiceTag - AzureCloud.<Region>:9000
Or
区域 CIDR - RegionCIDRs:9000
Or
APIServerPublicIP:9000 (only known after cluster creation)
TCP 9000 用于节点与控制平面之间的隧道安全通信。
*:22
Or
ServiceTag - AzureCloud.<Region>:22
Or
区域 CIDR - RegionCIDRs:22
Or
APIServerPublicIP:22 (only known after cluster creation)
TCP 22 用于节点与控制平面之间的隧道安全通信。
*:123ntp.ubuntu.com:123(如果使用 Azure 防火墙网络规则) UDP 123 在 Linux 节点上进行网络时间协议 (NTP) 时间同步时需要。
CustomDNSIP:53 (if using custom DNS servers) UDP 53 如果使用的是自定义 DNS 服务器,必须确保群集节点可以访问这些服务器。
APIServerPublicIP:443 (if running pods/deployments that access the API Server) TCP 443 运行访问 API 服务器的 Pod/部署时需要,这些 Pod/部署将使用 API IP。

21Vianet 运营的 Microsoft Azure 需要的 FQDN / 应用程序规则

目标 FQDN 端口 用途
*.hcp.<location>.cx.prod.service.azk8s.cn HTTPS:443 Node <-> API 服务器通信时需要。 将 location> 替换为部署 AKS 群集的区域。
*.tun.<location>.cx.prod.service.azk8s.cn HTTPS:443 Node <-> API 服务器通信时需要。 将 location> 替换为部署 AKS 群集的区域。
mcr.microsoft.com HTTPS:443 访问 Microsoft 容器注册表 (MCR) 中的映像时需要。 此注册表包含第一方映像/图表(例如 coreDNS 等)。 这些映像是正确创建和正常运行群集所必需的,包括缩放和升级操作。
.data.mcr.microsoft.com HTTPS:443 对于 Azure 内容分发网络 (CDN) 支持的 MCR 存储是必需的。
management.chinacloudapi.cn HTTPS:443 对于针对 Azure API 的 Kubernetes 操作是必需的。
login.chinacloudapi.cn HTTPS:443 Microsoft Entra 身份验证需要此项。
packages.microsoft.com HTTPS:443 Microsoft 包存储库使用此地址缓存 apt-get 操作。 示例包包括 Moby、PowerShell 和 Azure CLI。
*.azk8s.cn HTTPS:443 此地址用于下载和安装所需二进制文件(如 kubenet 和 Azure CNI)所需的存储库。

Azure 美国政府的必需网络规则

目标终结点 协议 端口 用途
*:1194
Or
ServiceTag - AzureCloud.<Region>:1194
Or
区域 CIDR - RegionCIDRs:1194
Or
APIServerPublicIP:1194 (only known after cluster creation)
UDP 1194 用于节点与控制平面之间的隧道安全通信。
*:9000
Or
ServiceTag - AzureCloud.<Region>:9000
Or
区域 CIDR - RegionCIDRs:9000
Or
APIServerPublicIP:9000 (only known after cluster creation)
TCP 9000 用于节点与控制平面之间的隧道安全通信。
*:123ntp.ubuntu.com:123(如果使用 Azure 防火墙网络规则) UDP 123 在 Linux 节点上进行网络时间协议 (NTP) 时间同步时需要。
CustomDNSIP:53 (if using custom DNS servers) UDP 53 如果使用的是自定义 DNS 服务器,必须确保群集节点可以访问这些服务器。
APIServerPublicIP:443 (if running pods/deployments that access the API Server) TCP 443 运行访问 API 服务器的 Pod/部署时需要,这些 Pod/部署将使用 API IP。

Azure 美国政府的必需 FQDN/应用程序规则

目标 FQDN 端口 用途
*.hcp.<location>.cx.aks.containerservice.azure.us HTTPS:443 Node <-> API 服务器通信时需要。 将 location> 替换为部署 AKS 群集的区域。
mcr.microsoft.com HTTPS:443 访问 Microsoft 容器注册表 (MCR) 中的映像时需要。 此注册表包含第一方映像/图表(例如 coreDNS 等)。 这些映像是正确创建和正常运行群集所必需的,包括缩放和升级操作。
*.data.mcr.microsoft.com HTTPS:443 对于 Azure 内容分发网络 (CDN) 支持的 MCR 存储是必需的。
management.usgovcloudapi.net HTTPS:443 对于针对 Azure API 的 Kubernetes 操作是必需的。
login.microsoftonline.us HTTPS:443 Microsoft Entra 身份验证需要此项。
packages.microsoft.com HTTPS:443 Microsoft 包存储库使用此地址缓存 apt-get 操作。 示例包包括 Moby、PowerShell 和 Azure CLI。
acs-mirror.azureedge.net HTTPS:443 此地址用于安装所需二进制文件(如 kubenet 和 Azure CNI)所需的存储库。

以下 FQDN/应用程序规则不是必需的,但建议用于 AKS 群集:

目标 FQDN 端口 用途
security.ubuntu.comazure.archive.ubuntu.comchangelogs.ubuntu.com HTTP:80 此地址允许 Linux 群集节点下载必需的安全修补程序和更新。
snapshot.ubuntu.com HTTPS:443 此地址允许 Linux 群集节点从 ubuntu 快照服务下载所需的安全修补程序和更新。

如果选择阻止/不允许这些 FQDN,则仅当进行节点映像升级群集升级时,节点才会接收 OS 更新。 请记住,节点映像升级还附带更新的包,其中包括安全修补程序。

已启用 GPU 的 AKS 群集需要 FQDN/应用程序规则

目标 FQDN 端口 用途
nvidia.github.io HTTPS:443 此地址用于在基于 GPU 的节点上进行正确的驱动程序安装和操作。
us.download.nvidia.com HTTPS:443 此地址用于在基于 GPU 的节点上进行正确的驱动程序安装和操作。
download.docker.com HTTPS:443 此地址用于在基于 GPU 的节点上进行正确的驱动程序安装和操作。

基于 Windows Server 的节点池需要 FQDN/应用程序规则

目标 FQDN 端口 用途
onegetcdn.azureedge.net, go.microsoft.com HTTPS:443 安装与 windows 相关的二进制文件
*.mp.microsoft.com, www.msftconnecttest.com, ctldl.windowsupdate.com HTTP:80 安装与 windows 相关的二进制文件

如果选择阻止/不允许这些 FQDN,则仅当进行节点映像升级群集升级时,节点才会接收 OS 更新。 请记住,节点映像升级还附带更新的包,其中包括安全修补程序。

AKS 功能、加载项和集成

工作负载标识

必需的 FQDN/应用程序规则

目标 FQDN 端口 使用
login.microsoftonline.comlogin.chinacloudapi.cnlogin.microsoftonline.us HTTPS:443 Microsoft Entra 身份验证需要此项。

适用于容器的 Microsoft Defender

必需的 FQDN/应用程序规则

FQDN 端口 使用
login.microsoftonline.com
login.microsoftonline.us(Azure 政府)
login.microsoftonline.cn(21Vianet 运营的 Azure)
HTTPS:443 Microsoft Entra 身份验证需要此项。
*.ods.opinsights.azure.com
*.ods.opinsights.azure.us(Azure 政府)
*.ods.opinsights.azure.cn(21Vianet 运营的 Azure)
HTTPS:443 Microsoft Defender 需要该规则才能将安全事件上传到云。
*.oms.opinsights.azure.com
*.oms.opinsights.azure.us(Azure 政府)
*.oms.opinsights.azure.cn(21Vianet 运营的 Azure)
HTTPS:443 通过 Log Analytics 工作区进行身份验证时需要此项。

适用于 Secrets Store CSI 驱动程序的 Azure 密钥保管库提供程序

如果使用网络隔离群集,建议设置专用终结点以访问 Azure Key Vault

如果你的群集具有出站类型用户定义的路由和 Azure 防火墙,则以下网络规则和应用程序规则适用:

必需的 FQDN/应用程序规则

FQDN 端口 用途
vault.azure.net HTTPS:443 CSI 机密存储加载项 pod 需要使用此端口来与 Azure 密钥保管库服务器通信。
*.vault.usgovcloudapi.net HTTPS:443 CSI 机密存储加载项 Pod 需要该项以与 Azure 政府中的 Azure Key Vault 服务器通信。

Azure Monitor - 托管的 Prometheus 和 Container Insights

如果使用网络隔离群集,建议设置基于专用终结点的引入,该引入支持托管 Prometheus(Azure Monitor 工作区)和 Container insights(Log Analytics 工作区)。

如果你的群集具有出站类型用户定义的路由和 Azure 防火墙,则以下网络规则和应用程序规则适用:

必需的网络规则

目标终结点 协议 端口 用途
ServiceTag - AzureMonitor:443 TCP 443 此终结点用于将指标数据和日志发送到 Azure Monitor 和 Log Analytics。

Azure 公有云所需的 FQDN / 应用程序规则

终结点 目的 端口
*.ods.opinsights.azure.com 443
*.oms.opinsights.azure.com 443
dc.services.visualstudio.com 443
*.monitoring.azure.com 443
login.microsoftonline.com 443
global.handler.control.monitor.azure.com 访问控制服务 443
*.ingest.monitor.azure.com 容器见解 - 日志引入终结点 (DCE) 443
*.metrics.ingest.monitor.azure.com 适用于 Prometheus 的 Azure Monitor 托管服务 - 指标引入终结点 (DCE) 443
<cluster-region-name>.handler.control.monitor.azure.com 提取特定群集的数据收集规则 443

由世纪互联云运营的 Microsoft Azure 需要的 FQDN / 应用程序规则

终结点 目的 端口
*.ods.opinsights.azure.cn 数据引入 443
*.oms.opinsights.azure.cn 加入 Azure Monitor 代理 (AMA) 443
dc.services.visualstudio.com 用于使用 Azure 公有云 Application Insights 的代理遥测 443
global.handler.control.monitor.azure.cn 访问控制服务 443
<cluster-region-name>.handler.control.monitor.azure.cn 提取特定群集的数据收集规则 443
*.ingest.monitor.azure.cn 容器见解 - 日志引入终结点 (DCE) 443
*.metrics.ingest.monitor.azure.cn 适用于 Prometheus 的 Azure Monitor 托管服务 - 指标引入终结点 (DCE) 443

Azure 政府云需要的 FQDN / 应用程序规则

终结点 目的 端口
*.ods.opinsights.azure.us 数据引入 443
*.oms.opinsights.azure.us 加入 Azure Monitor 代理 (AMA) 443
dc.services.visualstudio.com 用于使用 Azure 公有云 Application Insights 的代理遥测 443
global.handler.control.monitor.azure.us 访问控制服务 443
<cluster-region-name>.handler.control.monitor.azure.us 提取特定群集的数据收集规则 443
*.ingest.monitor.azure.us 容器见解 - 日志引入终结点 (DCE) 443
*.metrics.ingest.monitor.azure.us 适用于 Prometheus 的 Azure Monitor 托管服务 - 指标引入终结点 (DCE) 443

Azure Policy

必需的 FQDN/应用程序规则

FQDN 端口 用途
data.policy.core.windows.net HTTPS:443 此地址用于拉取 Kubernetes 策略,并向策略服务报告群集合规性状态。
store.policy.core.windows.net HTTPS:443 此地址用于拉取内置策略的 Gatekeeper 项目。
dc.services.visualstudio.com HTTPS:443 Azure Policy 加载项,用于向应用程序见解终结点发送遥测数据。

21Vianet 运营的 Microsoft Azure 需要的 FQDN / 应用程序规则

FQDN 端口 用途
data.policy.azure.cn HTTPS:443 此地址用于拉取 Kubernetes 策略,并向策略服务报告群集合规性状态。
store.policy.azure.cn HTTPS:443 此地址用于拉取内置策略的 Gatekeeper 项目。

Azure 美国政府的必需 FQDN/应用程序规则

FQDN 端口 用途
data.policy.azure.us HTTPS:443 此地址用于拉取 Kubernetes 策略,并向策略服务报告群集合规性状态。
store.policy.azure.us HTTPS:443 此地址用于拉取内置策略的 Gatekeeper 项目。

AKS 成本分析加载项

必需的 FQDN/应用程序规则

FQDN 端口 使用
management.azure.com
management.usgovcloudapi.net(Azure 政府)
management.chinacloudapi.cn(21Vianet 运营的 Azure)
HTTPS:443 对于针对 Azure API 的 Kubernetes 操作是必需的。
login.microsoftonline.com
login.microsoftonline.us(Azure 政府)
login.microsoftonline.cn(21Vianet 运营的 Azure)
HTTPS:443 Microsoft Entra ID 身份验证需要此项。

群集扩展

必需的 FQDN/应用程序规则

FQDN 端口 使用
<region>.dp.kubernetesconfiguration.azure.com HTTPS:443 此地址用于从群集扩展服务获取配置信息,并将扩展状态报告给服务。
mcr.microsoft.com, *.data.mcr.microsoft.com HTTPS:443 需要此地址才能请求容器映像,以便在 AKS 群集上安装群集扩展代理。
arcmktplaceprod.azurecr.io HTTPS:443 需要使用此地址才能拉取容器映像,以便在 AKS 群集上安装商城扩展。
arcmktplaceprod.centralindia.data.azurecr.io HTTPS:443 此地址适用于印度中部区域数据终结点,需要拉取容器映像才能在 AKS 群集上安装市场扩展。
arcmktplaceprod.japaneast.data.azurecr.io HTTPS:443 此地址适用于日本东部区域数据终结点,需要拉取容器映像才能在 AKS 群集上安装市场扩展。
arcmktplaceprod.westus2.data.azurecr.io HTTPS:443 此地址适用于美国西部 2 区域数据终结点,需要拉取容器映像才能在 AKS 群集上安装市场扩展。
arcmktplaceprod.westeurope.data.azurecr.io HTTPS:443 此地址适用于欧洲西部区域数据终结点,需要拉取容器映像才能在 AKS 群集上安装市场扩展。
arcmktplaceprod.eastus.data.azurecr.io HTTPS:443 此地址适用于美国东部区域数据终结点,需要拉取容器映像才能在 AKS 群集上安装市场扩展。
*.ingestion.msftcloudes.com, *.microsoftmetrics.com HTTPS:443 此地址用于将代理指标数据发送到 Azure。
marketplaceapi.microsoft.com HTTPS: 443 此地址用于将基于自定义计量的使用情况发送到商业计量 API。

Azure 美国政府的必需 FQDN/应用程序规则

FQDN 端口 用途
<region>.dp.kubernetesconfiguration.azure.us HTTPS:443 此地址用于从群集扩展服务获取配置信息,并将扩展状态报告给服务。
mcr.microsoft.com, *.data.mcr.microsoft.com HTTPS:443 需要此地址才能请求容器映像,以便在 AKS 群集上安装群集扩展代理。

注意

核心要求涵盖了此处未明确说明的任何加载项。

基于 Istio 的服务网格加载项

在基于 Istio 的服务网格加载项中,如果使用插件证书颁发机构 (CA) 设置 istiod,或者要设置安全入口网关,则这些功能需要使用适用于机密存储 CSI 驱动程序的 Azure Key Vault 提供程序。 可在此处找到适用于机密存储 CSI 驱动程序的 Azure Key Vault 提供程序的出站网络要求。

应用程序路由附加产品

应用程序路由加载项支持使用 Azure Key Vault 中存储的证书在入口处进行 SSL 终止。 可在此处找到适用于机密存储 CSI 驱动程序的 Azure Key Vault 提供程序的出站网络要求。

后续步骤

通过学习这篇文章,了解了要限制群集的出口流量时可以使用的端口和地址。

如果想要限制 Pod 在彼此之间如何通信以及群集内的东-西流量限制,请参阅在 AKS 中使用网络策略保护 Pod 之间的流量