kubernetes 无法连接到Mac M1上的$(minikube ip):$NODE_PORT

kdfy810k  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(2)|浏览(154)

我在学迷你kube上的kubernetes。我研究了kubernetes的官方文档,并在沙盒环境中跟踪了他们的interactive tutorial。在沙盒中一切正常,但我在我的系统上尝试了同样的事情,它失败了。

我的设置:

  • 我在苹果M1上使用的是macOS Big Sur版本11.6.2(20G314)。
  • 我已经使用了docker而不是虚拟机环境为minikube。

重现步骤:

首先,我创建了一个部署,然后创建了一个NodePort类型的服务,以将其公开给外部流量。
Pod运行正常,服务说明中未显示任何问题。
为了测试应用程序是否暴露在集群之外,我使用curl向节点发送了一个请求:

curl $(minikube ip):$NODE_PORT

字符串
但服务器没有回应:
curl:(7)无法连接到192.168.XX.X端口32048:作业逾时。
我已经复制了教程中所做的一切。相同的部署名称、相同的映像、相同的服务名称,几乎所有内容都相同。
我尝试了LoadBalancer类型,但发现minikube不支持它。为了访问LoadBalancer部署,我使用了命令minikube tunnel,但这没有帮助。
可能的原因是什么?是我的系统吗?

cuxqih21

cuxqih211#

我的M1 Mac也遇到了这个问题。我可以通过使用以下命令访问服务:

kubectl port-forward svc/kubernetes-bootcamp 8080:8080

字符串
您可以查看this articlethis answer以了解更多信息和方法。

uplii1fm

uplii1fm2#

这真的取决于你使用的是什么minikube driver“docker”、“qemu”等。
如果你使用Docker驱动程序(这是minikube macOS的默认驱动程序),那么你应该使用minikube tunnelminikube service xxxx来访问NodePort。
使用qemu 2 +socket_vmnet,您可以直接连接到minikube ip和端口(不需要minikube tunnel/minikube service xxx

brew install socket_vmnet
sudo brew services start socket_vmnet
minikube delete --all
minikube start --vm --addons=ingress,dashboard
😄  minikube v1.30.1 on Darwin 13.3.1 (arm64)
✨  Automatically selected the qemu2 driver
🌐  Automatically selected the socket_vmnet network

kubectl create deployment hello-minikube1 --image=kicbase/echo-server:1.0
kubectl expose deployment hello-minikube1 --type=NodePort --port=8080
kubectl get service
NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
hello-minikube1   NodePort    10.109.118.67   <none>        8080:30521/TCP   0s
kubernetes        ClusterIP   10.96.0.1       <none>        443/TCP          2m10s

kubectl get service hello-minikube1 --output='jsonpath={.spec.ports[0].nodePort}'
30521

curl  -m 2 "http://$(minikube ip):30521" 
Request served by hello-minikube1-8587cd9b85-zrpz6

字符串

相关问题