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

无法为AKS自动创建的Azure负载均衡器出站规则添加Kubernetes后端池

AKS静态出站IP配置及负载均衡器问题解决指南

核心问题定位

你遇到的所有问题根源集中在Pulumi Azure Classic KubernetesCluster Provider的API版本兼容性以及AKS托管负载均衡器(LB)的自动配置逻辑上,具体分析如下:

问题1:出口IP不符+长连接静默中断

  • 出口IP不符:由于Classic Provider使用旧API版本,outboundIPs配置未正确生效,Pod出站流量未走AKS托管LB的出站规则,而是默认使用节点的公网IP或节点池的默认NAT路径,导致与effectiveOutboundIPs中指定的IP不一致。
  • 长连接中断:因为流量未经过LB的出站规则,你配置的idleTimeoutInMinutes:25未生效,实际使用的是Azure VM默认的4分钟TCP空闲超时,导致无保活的长连接被静默终止。

问题2:LB出站规则后端池为空+无法关联K8s后端池+API版本错误

  • 后端池为空:Classic Provider未正确触发AKS控制平面将节点池关联到LB的后端池,导致自动生成的aksOutboundRule无有效后端实例。
  • 无法关联K8s后端池:AKS托管LB的后端池由控制平面自动维护,手动操作会被系统锁定,禁止用户直接修改(灰色不可用是设计限制)。
  • API版本错误:Classic Provider默认使用2020-12-01版本的Azure API,而配置skuOnPublicIPAddressConfiguration需要2022-03-01及以上版本,因此手动修改时触发版本不兼容错误。

解决步骤

1. 切换到Pulumi Azure Native Provider

放弃Classic Provider,改用Azure Native Provider,它支持最新的Azure API版本(满足2022-03-01+要求),能正确同步AKS与LB的配置关联。

2. 正确配置静态出站IP与LB超时

通过代码定义静态公共IP和AKS集群,确保所有网络配置通过Pulumi管理,而非手动操作LB:

import * as azure from "@pulumi/azure-native";

// 1. 创建Standard SKU的静态公共IP(与AKS同区域)
const outboundStaticIp = new azure.network.PublicIP("aks-outbound-static-ip", {
    resourceGroupName: "your-resource-group",
    location: "westeurope",
    publicIPAllocationMethod: "Static",
    sku: { name: "Standard" },
});

// 2. 创建AKS集群并绑定静态出站IP
const aksCluster = new azure.containerservice.ManagedCluster("aks-cluster", {
    resourceGroupName: "your-resource-group",
    location: "westeurope",
    kubernetesVersion: "1.24.6",
    agentPoolProfiles: [{
        name: "system-pool",
        count: 3,
        vmSize: "Standard_DS2_v2",
        osType: "Linux",
        mode: "System",
    }],
    networkProfile: {
        networkPlugin: "azure",
        networkPolicy: "calico",
        loadBalancerSku: "Standard",
        outboundType: "loadBalancer",
        loadBalancerProfile: {
            idleTimeoutInMinutes: 25, // 配置自定义超时
            outboundIPs: [{ id: outboundStaticIp.id }], // 绑定静态IP
        },
        serviceCidr: "10.0.0.0/16",
        dnsServiceIp: "10.0.0.10",
        dockerBridgeCidr: "172.17.0.1/16",
    },
    // 补充其他必要配置(如服务主体、RBAC等)
});

3. 验证配置有效性

部署完成后执行以下验证:

  • 登录Azure Portal查看AKS托管LB的aksOutboundRule,确认后端池已关联AKS节点实例
  • 在集群Pod内执行curl -s checkip.dyndns.org,验证出口IP与静态IP一致
  • 测试长连接(如超过5分钟的TCP会话),确认不会被静默终止

关键注意事项

  • 静态IP必须为Standard SKU,与AKS集群同区域,否则无法绑定到Standard LB
  • 禁止手动修改AKS托管LB的规则或后端池,所有配置需通过Pulumi代码定义,避免被AKS控制平面覆盖
  • 若需保留现有集群,可通过Pulumi的import功能将现有AKS资源导入Azure Native Provider管理,再更新网络配置

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 18:40:38