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

如何通过自定义External-IP访问Kubernetes LoadBalancer类型服务?

解决LoadBalancer服务自定义ExternalIP无法访问的问题

按以下步骤逐一排查:

  • 确认节点是否绑定了指定的ExternalIP
    Kubernetes的externalIPs字段要求集群中至少有一个节点实际拥有这个IP地址。执行以下命令检查节点IP:

    kubectl get nodes -o wide
    

    查看节点的EXTERNAL-IP或INTERNAL-IP列是否包含1.2.4.120。如果没有,需要先将这个IP绑定到集群的某个节点上(物理机配置网卡,云平台则给节点分配弹性IP)。

  • 检查端口防火墙/安全组规则
    确保节点的防火墙(如iptables、ufw、firewalld)以及云服务商的安全组(如果是云环境)已经放行5005端口的入站流量:

    • 节点本地防火墙检查:以ufw为例,执行ufw status查看5005端口是否允许;如果是firewalld,用firewall-cmd --list-ports。
    • 云安全组:在云控制台中找到对应节点的安全组,添加允许外部访问5005/tcp的规则。
  • 验证Service与Pod的关联状态
    确认Service的selector正确匹配Pod的标签:

    1. 查看Pod的标签:
      kubectl get pods --show-labels
      
      检查是否有Pod的app标签值为flask-app-dashboard。
    2. 查看Service的Endpoints:
      kubectl describe service flask-app-services-dashboard
      
      查看Endpoints字段,如果为空,说明selector不匹配,需要修正Service的selector或者Pod的标签。
  • 测试Pod内部应用的可用性
    确认Pod内的Flask应用确实在5005端口正常运行:

    kubectl exec -it <你的Pod名称> -- curl localhost:5005
    

    如果返回应用的响应内容,说明应用正常;如果超时或报错,排查应用本身的启动配置(比如是否监听了0.0.0.0:5005而不是localhost:5005)。

  • 检查Service的代理规则是否生效
    在绑定了1.2.4.120的节点上,查看Kubernetes生成的iptables规则:

    iptables-save | grep flask-app-services-dashboard
    

    应该能看到针对1.2.4.120:5005的转发规则,如果没有,重启kube-proxy服务(systemctl restart kube-proxy)或者检查kube-proxy的日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 23:40:33