📌  相关文章
📜  从同一网络中的另一台机器访问 nodeport 服务 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:36:16.907000             🧑  作者: Mango

从同一网络中的另一台机器访问 nodeport 服务

当我们部署 Kubernetes 服务时,可能会使用 NodePort 类型的 Service 对外暴露服务。这种类型的 Service 会在每个 Node 上开放一个端口,将请求转发到后端 Pod 上。这样,服务就可以在整个集群中通过 Node 的 IP 地址和 NodePort 端口访问。但是,如果我们想要从同一网络中的另一个机器访问该服务,应该如何做呢?

通过 Node IP 和 NodePort 访问服务

我们可以通过 Node 的 IP 地址和 NodePort 端口访问服务。例如,如果我们的 Node IP 是 10.0.0.100,NodePort 端口是 30001,服务名称是 my-service,那么可以使用以下命令来访问服务:

curl http://10.0.0.100:30001

需要注意的是,如果 Kubernetes 集群使用的是默认的 Service IP 地址范围(10.96.0.0/12),则不能使用该范围内的 IP 地址作为 Node IP 地址。

通过代理访问服务

如果我们无法直接访问 Node IP 和 NodePort,可以通过 Kubernetes 集群中的一台机器作为代理来访问服务。以下是通过 kubectl 命令将本地端口映射到远程机器上的代理命令:

kubectl port-forward <pod-name> <local-port>:<service-port> -n <namespace>

其中,<pod-name> 指代 Service 的后端 Pod 名称,<local-port> 是将要映射到本地机器的端口号,<service-port> 是 Service 暴露的端口号,<namespace> 是 Service 所处的命名空间。例如:

kubectl port-forward my-service-8743c8905-5wvzc 8080:80 -n my-namespace

这样,我们就可以通过访问 http://localhost:8080 来访问 Service 了。需要注意的是,代理访问可能会影响服务的性能和稳定性,谨慎使用。

总结

通过本文,我们了解了如何从同一网络中的另一台机器访问 Kubernetes 中的 NodePort 服务。我们可以通过直接访问 Node IP 和 NodePort、或者通过代理来访问服务。在实际使用中,需要根据实际情况选择合适的访问方式,保证服务的稳定性和性能。