Docker 无法访问Kubernetes群集外部的节点端口服务
我在Windows上,使用Docker Desktop使用WSL 2部署本地Kubernetes群集。我试图部署一个pod,并通过一个NodePort服务公开它,这样我就可以在集群之外访问它,但它不起作用 以下是重现场景的命令:Docker 无法访问Kubernetes群集外部的节点端口服务,docker,kubernetes,windows-subsystem-for-linux,docker-desktop,wsl-2,Docker,Kubernetes,Windows Subsystem For Linux,Docker Desktop,Wsl 2,我在Windows上,使用Docker Desktop使用WSL 2部署本地Kubernetes群集。我试图部署一个pod,并通过一个NodePort服务公开它,这样我就可以在集群之外访问它,但它不起作用 以下是重现场景的命令: kubectl create deployment echoserver --image=k8s.gcr.io/echoserver:1.4 kubectl expose deployment echoserver --type=NodePort --port=8080
kubectl create deployment echoserver --image=k8s.gcr.io/echoserver:1.4
kubectl expose deployment echoserver --type=NodePort --port=8080
尝试在浏览器中打开NODE\u IP:EXPOSED\u PORT
,或运行netcat命令nc NODE\u IP EXPOSED\u PORT
并尝试发送消息(来自WSL或Windows)无效
是Docker Desktop K8S节点的内部IP(通过查看命令NODE\u IP
上的kubectl get nodes-o wide
列获得)internal-IP
是服务公开的节点端口(通过查看命令EXPOSED\u PORT
上的kubectl description service echoserver
字段获得)NodePort
使用命令
kubectl-port-forward-deployment/echoserver 2311:8080
在本地转发部署,然后在浏览器中或通过netcat访问localhost:2311
,也可以正常工作(在WSL和Windows中).如果您不想使用本地主机访问它,您应该在描述服务时使用,是否分配了外部IP?服务的IP
字段显示10.96.23.195
。我没有看到任何关于外部IP的内容。这应该是另一个字段吗?您应该能够通过localhost:nodeport进行访问(确保您的目标是实际的nodeport,而不是容器端口)。如果它不工作,我想可能是主机(windows)上有什么东西阻止了它。你是如何引导集群的?它是善良的吗?@嗯,我试过了。它没有工作我不知道到底发生了什么,但现在我可以使用本地主机和窗口主机的IP从集群外部与pod通信了!然而,我仍然有一个与此相关的问题。为了避免在这篇文章上偏离正轨,如果你想看一看的话
$kubectl get svc,deploy
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/echoserver NodePort 10.105.169.2 <none> 8080:31570/TCP 4m12s
service/kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 5m3s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/echoserver 1/1 1 1 4m19s
curl.exe 192.168.0.29:31570
CLIENT VALUES:
client_address=192.168.65.3
command=GET
real path=/
query=nil
request_version=1.1
request_uri=http://192.168.0.29:8080/