我为资源组分配了以下IP地址:
az network public-ip create --resource-group myResourceGroup --name ipName --allocation-method static
现在,我想将其分配给我的AKS,所以我只是如下更改了Yaml:
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
loadBalancerIP: xx.xx.xxx.xxx <--the ip generated before
type: LoadBalancer
ports:
- port: 80
selector:
app: nginx-sgr
然后我跑:
kubectl apply -f mykube.yaml
但它似乎卡住了:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nginx LoadBalancer 10.0.77.234 <pending> 80:32320/TCP 79m
通过执行描述,我确实得到了以下信息:
Warning CreatingLoadBalancerFailed 21m (x19 over 86m) service-controller Error creating
load balancer (will retry): failed to ensure
load balancer for service default/nginx: user supplied IP Address
xx.xx.xxx.xxx was not found in resource group
MC_**myResourceGroup**_myAKSCluster_westeurope
请注意,似乎是在由我在第一个命令中指定的资源组(与kubernates相同)和其他信息组成的资源组中搜索...我在做什么错了?
答案 0 :(得分:2)
据我所知,可能的原因是,如果在另一个组中创建公共IP,则需要为AKS分配创建公共IP的资源组的权限。有关更多详细信息,请参见Use a static IP address outside of the node resource group。并且您需要添加如下注释:
apiVersion: v1
kind: Service
metadata:
annotations:
service.beta.kubernetes.io/azure-load-balancer-resource-group: myResourceGroup
name: azure-load-balancer
spec:
loadBalancerIP: 40.121.183.52
type: LoadBalancer
ports:
- port: 80
selector:
app: azure-load-balancer
或者您也可以在AKS群集节点组中创建公共IP。对于您来说,可以在您提供的错误中找到组名:MC_**myResourceGroup**_myAKSCluster_westeurope
。