You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

aks-engine无法创建内部及代理池负载均衡器,服务长期处于Pending状态

解决AKS-Engine负载均衡器创建及服务Pending问题

针对你遇到的两个问题(无法创建内部负载均衡器、代理池的nginx LoadBalancer服务长期Pending),结合你用现有虚拟网络通过examples/kubernetes-custom-vnet.json部署集群的场景,我整理了以下排查和解决步骤:

一、解决无法创建内部负载均衡器的问题

内部负载均衡器的创建依赖正确的配置和权限,你可以从这几个方面入手:

  1. 检查Service注解配置
    要创建内部LB,必须给LoadBalancer类型的Service添加特定注解:

    annotations:
      service.beta.kubernetes.io/azure-load-balancer-internal: "true"
    

    如果你是通过kubectl expose创建服务,记得加上--annotations "service.beta.kubernetes.io/azure-load-balancer-internal=true"参数。

  2. 验证VNet和子网权限
    确保aks-engine使用的服务主体(Service Principal)拥有目标VNet及子网的Contributor权限。如果权限不足,Azure无法在现有VNet中创建LB资源。

  3. 检查集群配置文件的网络参数
    打开你的kubernetes-custom-vnet.json,确认以下几点:

    • agentPoolProfiles中的vnetSubnetID指向了正确的现有子网ID
    • 配置中没有禁用LB创建的参数(比如enableLoadBalancer是否设为true,默认应该是开启的)

二、解决代理池nginx LoadBalancer服务Pending的问题

服务长期处于<pending>状态,且资源组只有主节点LB,大概率是agent pool的LB配置或关联问题:

  1. 检查agent pool的LB配置
    查看kubernetes-custom-vnet.json里的agentPoolProfiles,确保每个需要LB的agent pool都配置了loadBalancerProfile,比如:

    "agentPoolProfiles": [
      {
        "name": "agentpool",
        "count": 3,
        "vmSize": "Standard_DS2_v2",
        "vnetSubnetID": "/subscriptions/<sub-id>/resourceGroups/<rg>/providers/Microsoft.Network/virtualNetworks/<vnet-name>/subnets/<subnet-name>",
        "loadBalancerProfile": {
          "idleTimeoutInMinutes": 4
        },
        "enableLoadBalancer": true
      }
    ]
    

    如果enableLoadBalancer设为false,agent pool将不会创建对应的LB资源。

  2. 验证Service的关联目标
    确认你的nginx Service的spec.selector正确匹配了代理池上的Pod标签,比如如果代理池的节点标签是agentpool=proxy,要确保Pod有对应的标签,Service的selector能正确选中这些Pod。如果selector不匹配,LB也无法正常绑定。

  3. 检查Azure资源的状态
    登录Azure门户,查看目标VNet的子网是否有足够的可用IP地址——如果子网IP耗尽,LB无法获取IP会导致服务Pending。同时检查资源组中是否有LB相关的失败部署记录,排查具体的错误原因。

  4. 重新部署或更新集群配置
    如果确认是集群配置的问题,可以用aks-engine重新生成ARM模板并更新集群:

    aks-engine generate kubernetes-custom-vnet.json
    aks-engine deploy --subscription-id <sub-id> --resource-group <rg> --location <location> --api-model kubernetes-custom-vnet.json --upgrade
    

    注意更新前备份好现有集群的重要数据。

附你提供的服务状态输出:

NAME         TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)        AGE
kubernetes   ClusterIP   10.0.0.1       <none>        443/TCP        16m
nginx        LoadBalancer 10.0.249.248   <pending>     80:31190/TCP   13s

内容的提问来源于stack exchange,提问作者irom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 03:52:56