【问题标题】:AKS load balancer static IP assignment not working (stays pending)AKS 负载平衡器静态 IP 分配不起作用(保持挂起)
【发布时间】:2020-01-31 21:54:19
【问题描述】:

我在我的 AKS 集群上进行了正常工作的设置,我在其中遵循 MS 文档到 use a static IP to create an ingress controller。我现在只是尝试在同一集群上的单独命名空间中创建类似的设置,但新的负载平衡器 EXTERNAL-IP 仍然是 <pending>

当我检查我看到的服务时:

警告 CreatingLoadBalancerFailed 3m29s (x16 over 53m) service-controller 创建负载均衡器时出错(将重试):无法确保服务 ingress-dev/dev-ingress-nginx-ingress-controller 的负载均衡器:等待条件超时

我看到了How to fix "failed to ensure lb" error for Nginx ingress,但我的所有资源(静态 IP 地址)都位于与集群相同的资源组和区域中。已经运行的 LB 的现有静态 IP 也分配给相同的 RG 和集群。

【问题讨论】:

    标签: azure kubernetes-helm kubernetes-ingress azure-aks


    【解决方案1】:

    我相当肯定这将是由于服务主体配置错误,你能做到吗:kubectl get events --all-namespaces,看看你是否能找到与入口服务相关的任何东西,它们会抱怨身份验证\错误的凭据?或者,您可以只在 AKS 中 reset service principal credentials 并确保您以这种方式获得正确的凭据。

    您必须确保的另一件事是,您使用的服务主体有权访问负载均衡器所在的资源组。这应该在您创建集群时默认发生,但有人可能已经剥夺了这些权限

    以防万一 cmets 被删除:将 AKS 更新到较新版本解决了此问题

    【讨论】:

    • 没有自动\错误消息,只有这两条:ingress-dev 79s Normal EnsuringLoadBalancer service/dev-ingress-nginx-ingress-controller Ensuring load balancer ingress-dev 51m Warning CreatingLoadBalancerFailed service/dev-ingress-nginx-ingress-controller Error creating load balancer (will retry): failed to ensure load balancer for service ingress-dev/dev-ingress-nginx-ingress-controller: timed out waiting for the condition
    • 您能否尝试创建一个将type 属性设置为LoadBalancer 的kubernetes 服务,看看是否可行?
    • 尝试使用文档 docs.microsoft.com/en-us/azure/aks/load-balancer-standard 中的 azure-vote-front 示例,错误相同:2m54s Normal EnsuringLoadBalancer service/azure-vote-front Ensuring load balancer 2m54s Warning CreatingLoadBalancerFailed service/azure-vote -front 创建负载均衡器时出错(将重试):无法确保服务 ingress-dev/azure-vote-front 的负载均衡器:等待条件超时
    • 这真的很奇怪。您为MC_bla-bla-bla 资源组分配了权限,对吗?您还可以尝试一件事 - 将 kubernetes 更新到较新的版本。这将重新部署主人和工人。所以如果有东西卡在某个地方,它可能会被卡住。在这样做之前,我还会删除所有服务对象
    • 唷,成功了。 Cluster 在 1.14.6 上,所以我只有一个 beta 版本可以升级,但我还是做了。正在运行 1.15.3,它现在可以工作...使用相同的舵图和设置重新创建入口,并且固定 IP 地址在 2 分钟内绑定到它...感谢您的帮助!
    【解决方案2】:

    使用“--sku Standard”创建静态 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}
    

    【讨论】:

      【解决方案3】:

      创建 kubernetes 集群时,Azure 会自动创建另一个资源组来保存实际为集群供电的 VM。
      我注意到,如果在同一资源组(作为虚拟机)中创建静态 IP,它就会开始工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-14
        • 2015-08-07
        • 2012-12-19
        • 2020-05-17
        • 2019-01-10
        • 2020-02-20
        • 2018-08-01
        相关资源
        最近更新 更多