NodePort 类型的 kubernetes 服务是否可以使用 worker ip 或 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 访问与 IP:port 服务关联的 pod组合,其中 IP 表示节点的外部 IP,port 表示节点上为 NodePort 服务公开的端口。

引用 docs

如果将 type 字段设置为 NodePort,Kubernetes 控制平面 从 --service-node-port-range 指定的范围分配端口 标志(默认值:30000-32767)。每个节点代理该端口(相同 每个节点上的端口号)到您的服务中。您的服务报告 在其 .spec.ports[*].nodePort 字段中分配的端口。

请注意,此服务可见为 NodeIP:spec.ports[].nodePort 和 .spec.clusterIP:spec.ports[].port。 (如果 --nodeport-addresses kube-proxy 中的标志已设置,将过滤 NodeIP。)

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

此外,openshift 上的帖子明确指出所有节点都打开了端口:

使用 NodePorts 在所有节点上暴露服务 nodePort 集群。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...