如何获取 azure kubernetes 集群出站 ip 地址
how to get hold of the azure kubernetes cluster outbound ip address
我们有一个基本的 AKS 集群设置,我们需要在我们的一项服务中将此 AKS 出站 IP 地址列入白名单,我在 Azure 门户中扫描了 AKS 集群设置,我找不到任何出站 IP 地址。
我们如何获取出站IP?
谢谢-Nen
您可以定义 AKS 以通过负载均衡器路由出口流量(这也是默认行为)。这也有助于您在多个节点上“使用”相同的传出 IP。
有更多详细信息 here。
如果您使用的是带有 标准 SKU 负载均衡器 的 AKS 群集,即
$ az aks show -g $RG -n akstest --query networkProfile.loadBalancerSku -o tsv
Standard
并且 outboundType
设置为 loadBalancer
即
$ az aks show -g $RG -n akstest --query networkProfile.outboundType -o tsv
loadBalancer
那么您应该能够获取 AKS 群集的出站 IP 地址,例如:
$ az aks show -g $RG -n akstest --query networkProfile.loadBalancerProfile.effectiveOutboundIps[].id
[
"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MC_xxxxxx_xxxxxx_xxxxx/providers/Microsoft.Network/publicIPAddresses/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
]
# Using $PUBLIC_IP_RESOURCE_ID obtained from the last step
$ az network public-ip show --ids $PUBLIC_IP_RESOURCE_ID --query ipAddress -o tsv
xxx.xxx.xxx.xxx
更多信息请查看Use a public Standard Load Balancer in Azure Kubernetes Service (AKS)
如果您使用带有 基本 SKU 负载均衡器 的 AKS 群集,即
$ az aks show -g $RG -n akstest --query networkProfile.loadBalancerSku -o tsv
Basic
并且 outboundType
设置为 loadBalancer
即
$ az aks show -g $RG -n akstest --query networkProfile.outboundType -o tsv
loadBalancer
当多个 (public) IP 前端是出站流的候选者时,Load Balancer Basic 选择一个前端用于出站流。此选择不可配置,您应该考虑选择算法 随机。此 public IP 地址仅在该资源的生命周期内有效。如果删除 Kubernetes LoadBalancer
服务,关联的负载均衡器和 IP 地址也会被删除。如果你想为重新部署的 Kubernetes 服务分配一个特定的 IP 地址或保留一个 IP 地址,你可以 create and use a static public IP address,正如@nico-meisenzahl 提到的。
只有当您在 AKS 群集上有一个服务(使用基本负载均衡器)时,静态 IP 地址才有效。当在 Azure 负载均衡器上配置多个地址时,这些 public 个 IP 地址中的任何一个都是出站流量的候选地址,并且会随机选择一个。因此,每次添加服务时,您都必须将相应的 IP 地址添加到白名单中,这不是很可扩展。 [Reference]
在后一种情况下,我们建议在创建 AKS 群集时将 outBoundType
设置为 userDefinedRouting
。如果设置 userDefinedRouting
,AKS 将不会自动配置出口路径。出口设置必须由您完成。
必须将 AKS 群集部署到具有先前配置的子网的现有虚拟网络中,因为在不使用标准负载平衡器 (SLB) 体系结构时,您必须建立显式出口。因此,此架构需要明确地将出口流量发送到防火墙、网关、代理等设备,或者允许网络地址转换 (NAT) 由分配给标准负载均衡器或设备的 public IP 完成。
使用 userDefinedRouting 创建负载平衡器
仅当部署第一个 'loadBalancer' 类型的 Kubernetes 服务时,具有出站类型 UDR 的 AKS 群集才会收到标准负载均衡器 (SLB)。负载均衡器配置了一个用于入站请求的 public IP 地址和一个用于 入站 请求的后端池。入站规则由 Azure 云提供商配置,但由于具有出站类型的 UDR,因此未配置 出站 public IP 地址或出站规则 。您的 UDR 仍将是出口流量的唯一来源。
Azure 负载平衡器 don't incur a charge until a rule is placed。
[!!重要提示:使用出站类型是一种高级网络方案,需要适当的网络配置。]
这是 Deploy a cluster with outbound type of UDR and Azure Firewall
的说明
我们有一个基本的 AKS 集群设置,我们需要在我们的一项服务中将此 AKS 出站 IP 地址列入白名单,我在 Azure 门户中扫描了 AKS 集群设置,我找不到任何出站 IP 地址。
我们如何获取出站IP?
谢谢-Nen
您可以定义 AKS 以通过负载均衡器路由出口流量(这也是默认行为)。这也有助于您在多个节点上“使用”相同的传出 IP。
有更多详细信息 here。
如果您使用的是带有 标准 SKU 负载均衡器 的 AKS 群集,即
$ az aks show -g $RG -n akstest --query networkProfile.loadBalancerSku -o tsv
Standard
并且 outboundType
设置为 loadBalancer
即
$ az aks show -g $RG -n akstest --query networkProfile.outboundType -o tsv
loadBalancer
那么您应该能够获取 AKS 群集的出站 IP 地址,例如:
$ az aks show -g $RG -n akstest --query networkProfile.loadBalancerProfile.effectiveOutboundIps[].id
[
"/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/MC_xxxxxx_xxxxxx_xxxxx/providers/Microsoft.Network/publicIPAddresses/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
]
# Using $PUBLIC_IP_RESOURCE_ID obtained from the last step
$ az network public-ip show --ids $PUBLIC_IP_RESOURCE_ID --query ipAddress -o tsv
xxx.xxx.xxx.xxx
更多信息请查看Use a public Standard Load Balancer in Azure Kubernetes Service (AKS)
如果您使用带有 基本 SKU 负载均衡器 的 AKS 群集,即
$ az aks show -g $RG -n akstest --query networkProfile.loadBalancerSku -o tsv
Basic
并且 outboundType
设置为 loadBalancer
即
$ az aks show -g $RG -n akstest --query networkProfile.outboundType -o tsv
loadBalancer
当多个 (public) IP 前端是出站流的候选者时,Load Balancer Basic 选择一个前端用于出站流。此选择不可配置,您应该考虑选择算法 随机。此 public IP 地址仅在该资源的生命周期内有效。如果删除 Kubernetes LoadBalancer
服务,关联的负载均衡器和 IP 地址也会被删除。如果你想为重新部署的 Kubernetes 服务分配一个特定的 IP 地址或保留一个 IP 地址,你可以 create and use a static public IP address,正如@nico-meisenzahl 提到的。
只有当您在 AKS 群集上有一个服务(使用基本负载均衡器)时,静态 IP 地址才有效。当在 Azure 负载均衡器上配置多个地址时,这些 public 个 IP 地址中的任何一个都是出站流量的候选地址,并且会随机选择一个。因此,每次添加服务时,您都必须将相应的 IP 地址添加到白名单中,这不是很可扩展。 [Reference]
在后一种情况下,我们建议在创建 AKS 群集时将 outBoundType
设置为 userDefinedRouting
。如果设置 userDefinedRouting
,AKS 将不会自动配置出口路径。出口设置必须由您完成。
必须将 AKS 群集部署到具有先前配置的子网的现有虚拟网络中,因为在不使用标准负载平衡器 (SLB) 体系结构时,您必须建立显式出口。因此,此架构需要明确地将出口流量发送到防火墙、网关、代理等设备,或者允许网络地址转换 (NAT) 由分配给标准负载均衡器或设备的 public IP 完成。
使用 userDefinedRouting 创建负载平衡器
仅当部署第一个 'loadBalancer' 类型的 Kubernetes 服务时,具有出站类型 UDR 的 AKS 群集才会收到标准负载均衡器 (SLB)。负载均衡器配置了一个用于入站请求的 public IP 地址和一个用于 入站 请求的后端池。入站规则由 Azure 云提供商配置,但由于具有出站类型的 UDR,因此未配置 出站 public IP 地址或出站规则 。您的 UDR 仍将是出口流量的唯一来源。
Azure 负载平衡器 don't incur a charge until a rule is placed。
[!!重要提示:使用出站类型是一种高级网络方案,需要适当的网络配置。]
这是 Deploy a cluster with outbound type of UDR and Azure Firewall
的说明