你当前正在访问 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 定义,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 服务器通信,则必须添加 一个额外的 网络规则,以允许 TCP 通信到 API 服务器的 IP 端口 443 或者,如果配置了第 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

ServiceTag - AzureCloud.<Region>:1194

区域CIDR - RegionCIDRs:1194

APIServerPublicIP:1194(only known after cluster creation)
UDP 1194 用于节点与控制平面之间的隧道安全通信。 专用 群集或启用了 konnectivity-agent 的群集不需要这样做。
*:9000

ServiceTag - AzureCloud.<Region>:9000

区域CIDR - RegionCIDRs:9000

APIServerPublicIP:9000(only known after cluster creation)
TCP 九千 用于节点与控制平面之间的隧道安全通信。 专用 群集或启用了 konnectivity-agent 的群集不需要这样做。
*:123 或者 ntp.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, like Ingress Controller, that access the API Server) TCP 443 运行访问 API 服务器的 Pod/部署(如入口控制器)时需要,这些 Pod/部署将使用 API IP。 专用群集不需要此端口。

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

目标 FQDN 港口 用途
*.hcp.<location>.azmk8s.io HTTPS:443 Node <-> API 服务器通信时需要。 将位置<替换为>部署 AKS 群集的区域。 启用 konnectivity-agent 的群集需要这样做。 Konnectivity 还使用 Application-Layer 协议协商 (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 此地址是用于缓存 apt-get 操作的 Microsoft 包存储库。 示例包包括 Moby、PowerShell 和 Azure CLI。
acs-mirror.azureedge.net HTTPS:443 此地址适用于下载和安装所需的二进制文件(如 kubenet 和 Azure CNI)所需的存储库。
packages.aks.azure.com HTTPS:443 此地址将在将来替换 acs-mirror.azureedge.net ,并用于下载和安装所需的 Kubernetes 和 Azure CNI 二进制文件。

世纪互联运营的 Microsoft Azure 的必需网络规则

目标终结点 协议 港口 用途
*:1194

ServiceTag - AzureCloud.Region:1194

区域CIDR - RegionCIDRs:1194

APIServerPublicIP:1194(only known after cluster creation)
UDP 1194 用于节点与控制平面之间的隧道安全通信。
*:9000

ServiceTag - AzureCloud.<Region>:9000

区域CIDR - RegionCIDRs:9000

APIServerPublicIP:9000(only known after cluster creation)
TCP 九千 用于节点与控制平面之间的隧道安全通信。
*:22

ServiceTag - AzureCloud.<Region>:22

区域CIDR - RegionCIDRs:22

APIServerPublicIP:22(only known after cluster creation)
TCP 22 用于节点与控制平面之间的隧道安全通信。
*:123 或者 ntp.ubuntu.com:123 (如果使用 Azure 防火墙网络规则) UDP 123 Linux 节点上的网络时间协议 (NTP) 时间同步是必需的。
CustomDNSIP:53(if using custom DNS servers) UDP 53 如果使用自定义 DNS 服务器,则必须确保群集节点可以访问它们。
APIServerPublicIP:443(if running pods/deployments, like Ingress Controller, that access the API Server) TCP 443 运行访问 API 服务器的 Pod/部署(如入口控制器)时需要,这些 Pod/部署将使用 API IP。

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

目标 FQDN 港口 用途
*.hcp.<location>.cx.prod.service.azk8s.cn HTTPS:443 Node <-> API 服务器通信时需要。 将位置<替换为>部署 AKS 群集的区域。
*.tun.<location>.cx.prod.service.azk8s.cn HTTPS:443 Node <-> API 服务器通信时需要。 将位置<替换为>部署 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 此地址是用于缓存 apt-get 操作的 Microsoft 包存储库。 示例包包括 Moby、PowerShell 和 Azure CLI。
*.azk8s.cn HTTPS:443 此地址适用于下载和安装所需的二进制文件(如 kubenet 和 Azure CNI)所需的存储库。
mcr.azure.cn*.data.mcr.azure.cn HTTPS:443 在中国云 (Mooncake) 中访问 Microsoft 容器注册表 (MCR) 中的映像时需要。 此注册表用作提高可靠性和性能的 mcr.microsoft.com 的缓存。

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

目标终结点 协议 港口 用途
*:1194

ServiceTag - AzureCloud.<Region>:1194

区域CIDR - RegionCIDRs:1194

APIServerPublicIP:1194(only known after cluster creation)
UDP 1194 用于节点与控制平面之间的隧道安全通信。
*:9000

ServiceTag - AzureCloud.<Region>:9000

区域CIDR - RegionCIDRs:9000

APIServerPublicIP:9000(only known after cluster creation)
TCP 九千 用于节点与控制平面之间的隧道安全通信。
*:123 或者 ntp.ubuntu.com:123 (如果使用 Azure 防火墙网络规则) UDP 123 Linux 节点上的网络时间协议 (NTP) 时间同步是必需的。
CustomDNSIP:53(if using custom DNS servers) UDP 53 如果使用自定义 DNS 服务器,则必须确保群集节点可以访问它们。
APIServerPublicIP:443(if running pods/deployments, like Ingress Controller, 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 服务器通信时需要。 将位置<替换为>部署 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 此地址是用于缓存 apt-get 操作的 Microsoft 包存储库。 示例包包括 Moby、PowerShell 和 Azure CLI。
acs-mirror.azureedge.net HTTPS:443 此地址适用于安装所需的二进制文件(如 kubenet 和 Azure CNI)所需的存储库。
packages.aks.azure.com HTTPS:443 此地址将在将来替换 acs-mirror.azureedge.net ,并用于下载和安装所需的 Kubernetes 和 Azure CNI 二进制文件。

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

目标 FQDN 港口 用途
security.ubuntu.comazure.archive.ubuntu.com、、 changelogs.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 容器防护盾

所需的 FQDN/应用程序规则

FQDN 港口 用途
login.microsoftonline.com
login.microsoftonline.us(Azure 政府)
login.microsoftonline.cn(由世纪互联运营的 Azure)
HTTPS:443 用于 Microsoft Entra 身份验证。
*.ods.opinsights.azure.com
*.ods.opinsights.azure.us(Azure 政府)
*.ods.opinsights.azure.cn(由世纪互联运营的 Azure)
HTTPS:443 需要 Microsoft Defender 才能将安全事件上传到云。
*.oms.opinsights.azure.com
*.oms.opinsights.azure.us(Azure 政府)
*.oms.opinsights.azure.cn(由世纪互联运营的 Azure)
HTTPS:443 需要使用 Log Analytics 工作区进行身份验证。

机密存储 CSI 驱动程序的 Azure Key Vault 提供程序

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

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

所需的 FQDN/应用程序规则

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

Azure Monitor - 托管 Prometheus、容器见解和 Azure Monitor Application Insights 自动检测

如果使用网络隔离群集,建议设置基于专用终结点的引入,该功能支持托管 Prometheus(Azure Monitor 工作区)、容器见解(Log Analytics 工作区)和 Azure Monitor Application Insights 自动检测(Application Insights 资源)。

如果群集具有出站类型用户定义路由和 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
*.in.applicationinsights.azure.com Application Insights 自动检测。 若要限制范围,可以更改为仅允许连接字符串中有关目标资源的终结点。 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
*.in.applicationinsights.azure.com 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
*.in.applicationinsights.azure.com 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 插件将遥测数据发送到 Application Insights 终结点。

世纪互联运营的 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(由世纪互联运营的 Azure)
HTTPS:443 对于针对 Azure API 的 Kubernetes 操作是必需的。
login.microsoftonline.com
login.microsoftonline.us(Azure 政府)
login.microsoftonline.cn(由世纪互联运营的 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,或者如果你正在设置安全入口网关,那么对于这些功能,Secrets Store CSI 驱动程序的 Azure Key Vault 提供程序是必需的。 可在此处找到适用于机密存储 CSI 驱动程序的 Azure 密钥保管库提供程序的出站网络要求。

应用程序路由加载项

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

后续步骤

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

如果要限制 Pod 在自身之间通信的方式和 East-West 群集中的流量限制,请参阅 使用 AKS 中的网络策略保护 Pod 之间的流量