使用 Azure CLI 获取 Kubernetes Load Balancer 的公共 IP



我在Azure上运行Kubernetes,它使用负载平衡器。Azure已经为这个负载均衡器分配了一个公共IP地址,为了通过Azure CLI设置应用程序网关,我希望使用Azure CLI获得k8s负载均衡器的IP地址。

我可以使用…获取负载均衡器资源

az resource list --resource-group $k8sResourceGroup --query "[?type=='Microsoft.Network/loadBalancers']"

我从该响应中获得id并将其传递给…

az network lb show --id $loadBalancer.id --output json | convertfrom-json).frontendIpConfigurations

frontendIpConfigurations数组包含两个对象:入站IP地址(资源)和出站IP地址(资源)。我向下过滤到入站IP资源,如下所示…

az network lb show --id $loadBalancer.id --output json | convertfrom-json).frontendIpConfigurations | where-object { $null -ne $_.loadBalancingRules }).loadBalancingRules[0].id

然后我有一些看起来很像IP地址资源ID的东西-它与我在Azure门户中看到的相匹配。但是如果我随后请求资源本身,使用…

az network public-ip show --ids $loadBalancingRuleId --query "{fqdn: dnsSettings.fqdn, address: ipAddress}"

…我得到…

ResourceNotFoundError: The Resource 'Microsoft. error。找不到资源组"[我的资源组名]"下的Network/publicicipaddresses/kubernetes。欲了解更多详情,请访问https://aka.ms/ARMResourceNotFoundFix

是否有一个直接的方法获得一个AKS负载均衡器的公共入站IP地址?

试试这个(假设您的LB只有一个入站IP地址)。否则$pipId是一个数组)

$pipId = $(az network lb show --id $loadBalancer.id --query "frontendIpConfigurations | [?loadBalancingRules != null].publicIpAddress.id" -o tsv)
$ip = (az network public-ip show --ids $pipId --query "ipAddress" -o tsv)

是否有获得AKS负载均衡器的直接方法公网入站IP地址?

AKS的负载均衡器关联的公网IP均为入方向IP,除出方向IP外。所有入站ip都是AKS中服务的公共ip。这意味着如果您知道有多少服务具有负载平衡器类型,那么您将知道有多少公共入站ip与AKS的负载平衡器相关联。

根据这种认知,你只需要获得服务的公共IP地址,然后你可以通过Azure CLI获得这个公共IP的资源ID:

az network public-ip list --query "[?ipAddress=='publicIPAddress'].id" -o tsv

相关内容

  • 没有找到相关文章

最新更新