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

使用CAF Terraform超级模块创建的AKS上应用公网IP无法访问

问题描述

通过Terraform azurerm CAF超级模块部署AKS集群后,执行以下操作部署ArgoCD:

  1. 创建ArgoCD命名空间并安装组件:
    kubectl create namespace argocd
    kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
    
  2. 修改ArgoCD Server服务类型为LoadBalancer以获取公网IP:
    kubectl edit service argocd-server -n argocd
    # 将spec.type从ClusterIP修改为LoadBalancer
    

当前问题:

  • 服务的私有ClusterIP可正常访问资源
  • 公网IP无法建立连接,且集群内所有LoadBalancer类型服务均存在此问题
  • 已检查网络安全组(NSG)规则,确认允许相关流量
排查步骤

1. 验证LoadBalancer服务与Azure负载均衡器状态

  • 检查服务状态,确认公网IP已分配且服务就绪:
    kubectl get svc argocd-server -n argocd
    
    确认EXTERNAL-IP列显示有效公网IP,TYPE为LoadBalancer。
  • 进入AKS对应的MC_开头资源组,查看公共负载均衡器:
    • 验证前端IP配置已关联公网IP
    • 确认后端池正确绑定AKS节点
    • 检查健康探测规则(默认TCP探测对应服务端口),确保探测状态为健康

2. 检查AKS集群的出站流量配置

  • 若AKS使用Azure Firewall或NAT网关管控出站流量:
    • 确认负载均衡器公网IP的入站流量(如443端口)被允许通过防火墙
    • 确保AKS节点的出站响应流量可正常返回客户端

3. 验证节点子网的路由表

  • 查看AKS节点所在子网关联的路由表:
    • 确认无自定义路由拦截公网到负载均衡器的流量
    • 确保存在指向负载均衡器的默认路由,未被UDR(用户定义路由)覆盖

4. 确认负载均衡器SKU类型

  • AKS默认使用Standard SKU负载均衡器,若部署时指定Basic SKU:
    • Basic SKU不支持跨区域流量,需确保客户端与负载均衡器同区域
    • 考虑切换为Standard SKU(需调整集群配置或重新部署)

5. 测试公网IP的端口可达性

  • 使用工具测试目标端口连通性,排除本地网络问题:
    telnet <公网IP> 443
    nc -zv <公网IP> 443
    
    尝试从不同网络环境(如手机热点)测试,确认是否为本地防火墙/代理拦截

6. 检查CAF模块的AKS网络配置参数

  • 核对Terraform配置中的CAF模块参数:
    • 是否设置enable_public_load_balancer = false禁用公网负载均衡器
    • 是否开启私有集群(private_cluster_enabled = true),此时公网访问需通过VPN/Express Route
    • 是否配置Network Policy规则,拦截了LoadBalancer服务的流量

7. 查看服务与节点日志

  • 检查ArgoCD Server Pod日志,确认服务正常运行:
    kubectl logs -n argocd deployment/argocd-server
    
  • 查看kube-proxy日志,确认节点网络转发正常:
    kubectl logs -n kube-system kube-proxy-<节点名称>
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 11:52:10