(WSL2、minikube、Windows 11、Calico 插件、Docker-Desktop)
我根本不明白为什么curl在做
curl http://$(minikube ip):32000
的时候会超时。
我看到了SO问题但它们不适用。
$ k create deploy nginxsvc --image=nginx --replicas=3
$ k expose deploy nginxsvc --port=80
然后我编辑服务以将服务类型更改为 NodePort。
$ k get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 18d
nginxsvc NodePort 10.103.11.225 <none> 80:32000/TCP 19m
regular-encourager NodePort 10.102.236.129 <none> 8080:32058/TCP 15d
$ curl http://$(minikube ip):32000
curl: (28) Failed to connect to 192.168.49.2 port 32000: Connection timed out
$ k describe svc nginxsvc
Name: nginxsvc
Namespace: default
Labels: app=nginxsvc
Annotations: <none>
Selector: app=nginxsvc
Type: NodePort
IP Family Policy: SingleStack
IP Families: IPv4
IP: 10.103.11.225
IPs: 10.103.11.225
Port: <unset> 80/TCP
TargetPort: 80/TCP
NodePort: <unset> 32000/TCP
Endpoints: 10.244.1.233:80,10.244.1.234:80,10.244.1.235:80
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
$ k get svc nginxsvc -o yaml
apiVersion: v1
kind: Service
metadata:
creationTimestamp: "2023-03-28T23:18:04Z"
labels:
app: nginxsvc
name: nginxsvc
namespace: default
resourceVersion: "531373"
uid: fcd7960e-8610-4099-a014-9b4ce94cdec2
spec:
clusterIP: 10.103.11.225
clusterIPs:
- 10.103.11.225
externalTrafficPolicy: Cluster
internalTrafficPolicy: Cluster
ipFamilies:
- IPv4
ipFamilyPolicy: SingleStack
ports:
- nodePort: 32000
port: 80
protocol: TCP
targetPort: 80
selector:
app: nginxsvc
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
正如@glv 所指出的out,
如果在Darwin、Windows上使用Docker驱动,网络会受限, 或 WSL,节点 IP 无法直接访问。
解决方案是
从 WSL 中删除 minikube
minikube 删除 --purge
然后在 Windows 上安装 VirtualBox
安装 Ubuntu
在 Ubuntu 上安装 docker 然后安装 minikube
启动 minikube
minikube 启动 --memory=6g --cpus=4 --driver=docker --cni=calico
现在所有之前失败的网络现在都在工作!