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

GCP环境下Kubernetes LoadBalancer Service目标端口设置后显示随机值问题

你看到的30203不是targetPort,是K8s为LoadBalancer类型Service自动分配的nodePort,你的targetPort配置实际上已经生效,没有被修改。

核心概念澄清

K8s Service的三类端口含义完全不同:

  • targetPort:Pod内业务容器实际监听的端口,你配置的1337会直接透传给匹配的Pod,不会在kubectl get services的默认输出中展示,你可以执行kubectl describe svc sails查看实际生效的targetPort,确认是你设置的1337。
  • port:Service在集群内部的访问端口,集群内其他 workload 可以通过服务名:port访问你暴露的服务,你这里配置的是1337,PORT(S)列冒号前的数值就是port。
  • nodePort:K8s为每个集群节点分配的端口,默认从30000-32767范围随机分配,用于节点层接收外部流量,PORT(S)列冒号后的数值就是nodePort,这就是你看到的30203这类随机端口的来源。

自定义nodePort配置方法

如果你需要手动指定nodePort而非使用随机分配,可以在Service YAML的ports段中新增nodePort字段,示例如下:

apiVersion: v1
kind: Service
metadata:
  name: sails-svc
spec:
  selector:
    app: sails
  ports:
    - port: 1337
      targetPort: 1337
      nodePort: 30203 # 手动指定的端口必须在30000-32767默认范围内,且未被其他Service占用
  type: LoadBalancer

如果你需要修改nodePort的分配范围,需要调整kube-apiserver的--service-node-port-range启动参数,但GCP托管的GKE集群不支持自定义修改该参数。

GCP环境使用说明

在GCP环境使用LoadBalancer类型Service时,你不需要关心nodePort的数值,直接访问EXTERNAL-IP对应的公网地址+port(也就是1337)即可正常访问服务,GCP负载均衡器会自动完成流量到nodePort的转发,无需额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:39:03