kubernetes 哪个端口用于访问同一集群上的另一个Pod?端口、NodePort或TargetPort

new9mtju  于 2023-05-28  发布在  Kubernetes
关注(0)|答案(1)|浏览(134)

我在同一个集群中创建了2个Pod。一个服务初始化为

kubectl create deployment my-web --image=nginx --port=80
kubectl expose deployment my-web --target-port=80 --type=NodePort

据我所知,这将创建一个带有一个pod my-web-<string>的部署,并公开一个端口。使用kubectl describe services my-web,我发现以下信息:

Port:                     <unset>  80/TCP
TargetPort:               80/TCP
NodePort:                 <unset>  32004/TCP
Endpoints:                10.244.0.10:80

测试盒:

kubectl run test-pod --image=nginx --restart=Never

这创建了另一个pod,我尝试使用命令curl 10.244.0.10:32004 curl my-web pod的nginx。该请求超时。但不知何故,当我使用curl 10.244.0:80时,它起作用了。为什么会这样?我以为服务暴露在my-web pod外部的端口32004上?
也请让我知道什么IP和端口从我的主机 curl 访问我的网络吊舱。我在MacOS上从minikube运行集群。
谢谢你的帮助!
我尝试使用curl 10.244.0.10:32004命令 curl my-web pod的nginx。该请求超时。但不知何故,当我使用curl 10.244.0:80时,它起作用了。

hivapdat

hivapdat1#

NodePort用于访问集群范围内的服务。您可以创建允许节点端口上的TCP通信的防火墙规则。创建允许端口32004上的TCP通信的防火墙规则。在Ubuntu上,你可以这样做:
sudo ufw allow 32004/tcp
检查端口状态:
sudo ufw状态
一旦您确定端口已打开,就可以 curl ip:port

curl http://10.244.0.10:32004

更多信息请查看Kubernetes official documentation.

相关问题