我在AKS集群上具有正确的工作设置,在该集群中,我遵循了MS文档到use a static IP to create an ingress controller。我现在只是尝试在同一集群的单独命名空间中创建类似的设置,但是新的负载均衡器EXTERNAL-IP
仍然是<pending>
。
检查服务时,我看到:
警告CreatingLoadBalancerFailed 3m29s(x16超过53m)服务控制器失败创建负载均衡器时出错(将重试):无法确保服务的负载均衡器ingress-dev / dev-ingress-nginx-ingress-controller:等待该条件超时
我看到了How to fix "failed to ensure lb" error for Nginx ingress,但是所有资源(静态IP地址)都与群集位于相同的资源组和区域中。正在运行的LB的现有静态IP也已分配给相同的RG和群集。
答案 0 :(得分:4)
我相当确定这是由于服务主体配置错误而引起的,您可以这样做:kubectl get events --all-namespaces
,看看是否可以找到与入口服务相关的任何内容,这些内容会抱怨auth \凭据错误?或者,您也可以reset service principal credentials在AKS中,并确保以这种方式获得正确的凭据。
您需要确保的另一件事是,您正在使用的服务主体有权访问负载均衡器所在的资源组。创建群集时,默认情况下应该会发生这种情况,但是有人可能已经剥夺了这些权限
以防万一评论被删除:将AKS更新到较新版本可以解决此问题
答案 1 :(得分:1)
使用“ --sku标准”创建静态IP
STATICIP=$(az network public-ip create --resource-group <MC_your-RG> --name Your-public-ip-name --sku Standard --allocation-method static --query publicIp.ipAddress -o tsv)
现在:
helm install stable/nginx-ingress --name
--namespace
--set rbac.create=true
--set controller.replicaCount=2
--set controller.stats.enabled=true
--set controller.metrics.enabled=true
--set controller.nodeSelector."beta.kubernetes.io/os"=linux
--set defaultBackend.nodeSelector."beta.kubernetes.io/os"=linux
--set controller.service.externalTrafficPolicy="Local"
--set controller.service.loadBalancerIP=${STATICIP}
答案 2 :(得分:0)
在创建kubernetes群集时,Azure会自动创建另一个资源组来保存实际为群集供电的VM。
我注意到,如果静态IP是在与虚拟机相同的资源组中创建的,则它开始工作。