NodePort 类型的 kubernetes 服务是否适用于 worker ip 或 control plane(master) ip?

Does kubernetes service of type NodePort works with worker ip or control plane(master) ip?

假设我的集群中有一个主节点 (192.168.1.1) 和一个工作节点 (192.168.1.2)。如果我创建一个 NodePort 30001 的服务,那么它会使用主 IP(192.168.1.1:30001) 还是工作 IP(192.168.1.2:30001)?

服务类型NodePort在集群的所有节点上打开端口,与NodePort服务关联的pods可以可以使用 IP:port 组合访问,其中 IP 代表节点的外部 IP,port 代表在节点上为 NodePort 服务公开的端口。

引用 docs:

If you set the type field to NodePort, the Kubernetes control plane allocates a port from a range specified by --service-node-port-range flag (default: 30000-32767). Each node proxies that port (the same port number on every Node) into your Service. Your Service reports the allocated port in its .spec.ports[*].nodePort field.

Note that this Service is visible as NodeIP:spec.ports[].nodePort and .spec.clusterIP:spec.ports[].port. (If the --nodeport-addresses flag in kube-proxy is set, would be filtered NodeIP(s).)

following post 给出了一个示例,其中可以从主节点 IP:port 组合以及 NodePort 服务访问应用程序。

此外,openshift 处的 post 清楚地表明端口已为所有节点打开:

Use NodePorts to expose the service nodePort on all nodes in the cluster.