无法从外部访问 Kubernetes NodePort

Kubernetes NodePort not accesible from outside

我正在尝试使用最新的 bitnami postgres chart 将 postgres 部署到本地 kubernetes 集群 (mac os, docker 桌面 4.4.2,kubernetes 1.22.5): https://github.com/bitnami/bitnami-docker-postgresql

我设置了节点端口:

primary:
  service:
    # Kubernetes Service type
    type: NodePort
    nodePorts:
      # Node port for PostgreSQL
      postgresql: '30000'

服务可见:

NAME                             TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)          AGE
service/postgres-nodeport      NodePort    10.111.195.149   <none>        5432:30000/TCP   9m56s

但我无法从外部访问它,例如:

psql -h localhost -p 30000 -U myusername -d mydatabase

但我认为它配置正确,因为当我执行 port-forward postgres 可用时:

kubectl port-forward pod/postgres-nodeport-0 30000:5432 

Nodeport只暴露指定端口节点上的服务。它不会将其暴露给 public。您需要配置入口或负载均衡器以将服务暴露给外界。

我找到了解决办法: 您需要将端口设置为高于 30000,例如30001 但这很奇怪,因为之前它使用端口 30000,并且文档说端口范围是 30000-32767

你需要用节点ip调用。 格式应该是 NodeIP 你所在的节点 运行 你的 pods 和 NodePortRef

集群外调用NodePort服务的Template是这样的

<NodeIP>:<NodePort>

试试这个:

psql -h 192.168.65.4 -p 30000 -U myusername -d mydatabase