我正在运行 Windows 10,使用 WSL1 和 ubuntu 作为发行版。 我的Windows版本是版本1903(内部版本18362.418)
我正在尝试使用 ubuntu WSL 中的 kubectl 代理连接到 kubernetes。当我尝试使用浏览器连接到仪表板时,连接被拒绝。
我已使用 netstat -a 检查 Windows 以查看活动连接。
如果我在 Windows 终端中运行 kubectl,连接到 kubernetes 没有问题,所以只有当我尝试连接 ubuntu WSL1 时才会出现问题。
我也尝试过运行以下命令
kubectl proxy --address='0.0.0.0' --port=8001 --accept-hosts='.*'
...但是尽管我看到 Windows 正在侦听端口,但连接被拒绝。将端口更改为另一个端口并不能解决问题。禁用防火墙也没有解决问题。
有什么想法吗?
首先要做的是检查您是否能够安全地与集群通信:(
kubectl get svc -n kube-system
, kubectl cluster-info
)
如果没有检查
$HOME/.kube
文件夹是否已创建。如果没有,请运行:
gcloud container clusters get-credentials default --region=<your_region>
WSL 有一个虚拟 IP,因此 Windows 中的 127.0.0.1 (localhost) 指向您的 Windows 主机(不是 WSL)。
我写了这个
run-proxy.sh
脚本,希望对其他人有帮助
#!/bin/bash
# Find the WSL2 IP Address
wsl_ip=$(ip addr show eth0 | grep 'inet\b' | awk '{print $2}' | cut -d/ -f1)
if [ -z "$wsl_ip" ]; then
echo "Failed to find the WSL2 IP address."
exit 1
fi
echo "WSL2 IP Address: $wsl_ip"
# Set the desired port for kubectl proxy
proxy_port=8001
echo "Starting kubectl proxy on http://$wsl_ip:$proxy_port"
echo "dashboard: http://$wsl_ip:$proxy_port/api/v1/namespaces/kubernetes-dashboard/services/https:kubernetes-dashboard:/proxy/"
kubectl proxy --address="$wsl_ip" --port=$proxy_port --accept-hosts='.*'
# Note: You can access Kubernetes API from Windows using http://$wsl_ip:$proxy_port