我在同一个集群中创建了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
时,它起作用了。
1条答案
按热度按时间hivapdat1#
NodePort用于访问集群范围内的服务。您可以创建允许节点端口上的TCP通信的防火墙规则。创建允许端口32004上的TCP通信的防火墙规则。在Ubuntu上,你可以这样做:
sudo ufw allow 32004/tcp
检查端口状态:
sudo ufw状态
一旦您确定端口已打开,就可以 curl ip:port
更多信息请查看Kubernetes official documentation.