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

Kubernetes LoadBalancer服务外部IP可访问服务端口无法访问NodePort咨询

问题解答

认知误区核心原因

你之前对端口逻辑的认知仅适用于NodePort类型的Service,而你当前创建的是LoadBalancer类型的Service,二者的对外暴露逻辑存在差异。

不同端口的访问逻辑说明

  • LoadBalancer的公网IP(EXTERNAL-IP)访问规则:
    你拿到的104.198.205.71是云服务商提供的公网负载均衡实例IP,该LB默认只会放通你在Service中定义的port(80、8888),收到对应端口的请求后,会自动转发到集群节点对应的NodePort上,最终转发到Pod的targetPort。所以你访问104.198.205.71:80、104.198.205.71:8888可以正常连通。
  • NodePort的访问规则:
    NodePort是绑定在集群节点本身的端口,不是绑定在LoadBalancer IP上的。你如果要测试NodePort连通性,需要使用集群节点的公网IP+NodePort访问,同时要确保节点的安全组放开了30000-32767(K8s默认NodePort范围)的端口。LoadBalancer的安全组默认不会放通NodePort段的端口,所以你用LB IP加NodePort访问自然不通。

补充:你的Helm配置存在格式错误

你贴出的Helm端口配置格式有误,ports是列表类型,你当前写的是字典结构,导致第二个端口的name把第一个覆盖了,这也是你kubectl describe svc输出里两个端口的name都为api的原因,正确写法如下:

ports:
  - name: api
    port: 80
    targetPort: 8888 
  - name: api2
    port: 8888
    targetPort: 8888

三种访问场景梳理

  • 集群内部访问:用ClusterIP:ServicePort或服务DNS名+ServicePort访问
  • 集群外部通过节点访问:用节点公网IP:NodePort访问,需节点安全组放通对应端口
  • 集群外部通过LB访问:用EXTERNAL-IP:ServicePort访问,需LB安全组放通对应端口

内容的提问来源于stack exchange,提问作者Kun Hwi Ko

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:30:01