【问题标题】:how to get hold of the azure kubernetes cluster outbound ip address如何获取 azure kubernetes 集群出站 IP 地址
【发布时间】:2021-11-26 15:45:23
【问题描述】:

我们有一个基本的 AKS 群集设置,我们需要在我们的一项服务中将此 AKS 出站 IP 地址列入白名单,我在 Azure 门户中扫描了 AKS 群集设置,但找不到任何出站 IpAddress。

我们如何获得出站IP?

谢谢-嫩

【问题讨论】:

    标签: azure kubernetes azure-aks


    【解决方案1】:

    如果您使用具有标准 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
    

    当多个(公共)IP 前端是出站流的候选对象时,Load Balancer Basic 会选择一个前端用于出站流。此选择不可配置,您应该将选择算法视为 随机。此公共 IP 地址仅在该资源的生命周期内有效。如果删除 Kubernetes LoadBalancer 服务,关联的负载均衡器和 IP 地址也会被删除。如果你想为重新部署的 Kubernetes 服务分配一个特定的 IP 地址或保留一个 IP 地址,你可以create and use a static public IP address,正如@nico-meisenzahl 提到的那样。

    仅当您在 AKS 群集上拥有一项服务(使用基本负载均衡器)时,静态 IP 地址才有效。在 Azure 负载均衡器上配置多个地址时,这些公共 IP 地址中的任何一个都是出站流的候选地址,并且会随机选择一个。因此,每次添加服务时,您都必须将相应的 IP 地址添加到白名单中,这不是非常可扩展的。 [Reference]


    在后一种情况下,我们建议在创建 AKS 群集时将 outBoundType 设置为 userDefinedRouting。如果设置了userDefinedRouting,AKS 将不会自动配置出口路径。出口设置必须由您完成。

    必须将 AKS 群集部署到具有先前配置的子网的现有虚拟网络中,因为在不使用标准负载平衡器 (SLB) 体系结构时,您必须建立显式出口。因此,此架构需要将出口流量显式发送到防火墙、网关、代理等设备,或者允许网络地址转换 (NAT) 由分配给标准负载均衡器或设备的公共 IP 完成。

    使用 userDefinedRouting 创建负载均衡器

    只有在部署第一个“loadBalancer”类型的 Kubernetes 服务时,具有出站类型 UDR 的 AKS 集群才会收到标准负载平衡器 (SLB)。负载均衡器配置了一个用于入站请求的公共 IP 地址和一个用于 入站 请求的后端池。入站规则由 Azure 云提供商配置,但由于具有出站类型的 UDR,没有配置出站公共 IP 地址或出站规则。您的 UDR 仍将是出口流量的唯一来源。

    Azure 负载平衡器don't incur a charge until a rule is placed

    [!!重要提示: 使用出站类型是一种高级网络方案,需要正确的网络配置。]

    这里是给Deploy a cluster with outbound type of UDR and Azure Firewall的说明

    【讨论】:

    • 谢谢,我唯一需要做的小改动,obutboundIps 中的字母“p”是大写的“P” $ az aks show -g $RG -n akstest --query networkProfile .loadBalancerProfile.effectiveOutboundIPs
    【解决方案2】:

    您可以定义 AKS 以通过负载平衡器路由出口流量(这也是默认行为)。这也有助于您在多个节点上“使用”相同的传出 IP。

    更多详情请见here

    【讨论】:

    • 只有在 AKS 群集上有一项服务(使用基本负载均衡器)时,这才有效。在 Azure 负载均衡器上配置多个地址时,这些公共 IP 地址中的任何一个都是出站流的候选地址,并且会随机选择一个。因此,每次添加服务时,您都必须将相应的 IP 地址添加到白名单中,这不是非常可扩展的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 2021-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-25
    相关资源
    最近更新 更多