我在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