本文档仅介绍如何锁定离开 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 的计划内维护操作。
你可能会注意到流向“umsa*.blob.core.windows.net”终结点的流量。 此终结点用于存储 Azure Linux VM 代理和扩展的清单,并会定期接受检查以下载新版本。
Azure 全球的必需网络规则
目标终结点
*:1194
Or
ServiceTag
-
AzureCloud.<Region>:1194
Or
区域 CIDR
-
RegionCIDRs:1194
Or
APIServerPublicIP:1194
(only known after cluster creation)
用于节点与控制平面之间的隧道安全通信。 对于
专用群集
或启用了
konnectivity-agent
的群集来说,这不是必需的。
*:9000
Or
ServiceTag
-
AzureCloud.<Region>:9000
Or
区域 CIDR
-
RegionCIDRs:9000
Or
APIServerPublicIP:9000
(only known after cluster creation)
用于节点与控制平面之间的隧道安全通信。 对于
专用群集
或启用了
konnectivity-agent
的群集,这不是必需的。
*:123
或
ntp.ubuntu.com:123
(如果使用 Azure 防火墙网络规则)
在 Linux 节点上进行网络时间协议 (NTP) 时间同步时需要。 对于 2021 日 3 月之后预配的节点,这不是必需的。
CustomDNSIP:53
(if using custom DNS servers)
如果使用的是自定义 DNS 服务器,必须确保群集节点可以访问这些服务器。
APIServerPublicIP:443
(if running pods/deployments that access the API Server)
运行访问 API 服务器的 Pod/部署时需要,这些 Pod/部署将使用 API IP。 对于
专用群集
,此端口不是必需的。
目标终结点
*:1194
Or
ServiceTag
-
AzureCloud.Region:1194
Or
区域 CIDR
-
RegionCIDRs:1194
Or
APIServerPublicIP:1194
(only known after cluster creation)
用于节点与控制平面之间的隧道安全通信。
*:9000
Or
ServiceTag
-
AzureCloud.<Region>:9000
Or
区域 CIDR
-
RegionCIDRs:9000
Or
APIServerPublicIP:9000
(only known after cluster creation)
用于节点与控制平面之间的隧道安全通信。
*:22
Or
ServiceTag
-
AzureCloud.<Region>:22
Or
区域 CIDR
-
RegionCIDRs:22
Or
APIServerPublicIP:22
(only known after cluster creation)
用于节点与控制平面之间的隧道安全通信。
*:123
或
ntp.ubuntu.com:123
(如果使用 Azure 防火墙网络规则)
在 Linux 节点上进行网络时间协议 (NTP) 时间同步时需要。
CustomDNSIP:53
(if using custom DNS servers)
如果使用的是自定义 DNS 服务器,必须确保群集节点可以访问这些服务器。
APIServerPublicIP:443
(if running pods/deployments that access the API Server)
运行访问 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)
用于节点与控制平面之间的隧道安全通信。
*:9000
Or
ServiceTag
-
AzureCloud.<Region>:9000
Or
区域 CIDR
-
RegionCIDRs:9000
Or
APIServerPublicIP:9000
(only known after cluster creation)
用于节点与控制平面之间的隧道安全通信。
*:123
或
ntp.ubuntu.com:123
(如果使用 Azure 防火墙网络规则)
在 Linux 节点上进行网络时间协议 (NTP) 时间同步时需要。
CustomDNSIP:53
(if using custom DNS servers)
如果使用的是自定义 DNS 服务器,必须确保群集节点可以访问这些服务器。
APIServerPublicIP:443
(if running pods/deployments that access the API Server)
运行访问 API 服务器的 Pod/部署时需要,这些 Pod/部署将使用 API IP。