我在 Windows 10 上拥有 WSL2 和 Ubuntu 22.04.3 LTS,所有最新更新。 wsl 中的“kubectl port-forward”命令过去工作得很好,就像在 Windows 主机上一样。 直到今天我突然发现它不再起作用了(但在 Windows 中一切仍然有效)。 在 wsl 上我现在得到这个:
kubectl port-forward --kubeconfig=/home/my_config.yaml --namespace=my_namespace service/my_service 9092:9092
错误:升级连接时出错:发送请求时出错:Post “https://remote_ip:port/k8s/clusters/abc/api/v1/namespaces/my_namespace/pods/my_pod/portforward”: 读取 tcp local_ip:port->remote_ip:port: 读取:连接被对等方重置
发生什么事了?我在 wsl、IDE 和 kubectl 中安装了三个程序,全部都使用默认设置,端口转发在 wsl 中开箱即用,但现在不行了..
这个命令需要 kubectl 能够在 wsl 中打开端口吗?怎么以前有用,现在不行了?
PS:集群是完全可访问的,其中任何一个都可以工作:
kubectl get pod
kubectl cluster-info
kubectl config view
kubectl get all --all-namespaces
编辑:刚刚在 wsl 中安装了 Lens 桌面,执行此精确的端口转发没有问题。因此,正如上面引用的那样,只有这个命令行使用 kubectl 停止工作。
错误“
read:connection reset by peer
”表示端口转发建立过程中出现问题,通常是由于WSL2或相关应用程序中无法连接到kubernetes API服务器的端口限制。
您可以尝试以下步骤作为故障排除来解决问题:
重新启动服务:您可以使用以下命令重新启动 WSL2:“
wsl --shutdown
”,然后依次使用“wsl --unregister <distro\_name\>
”和“wsl --register <distro\_name\>
”。如果在 WSL2 中使用 Docker,请重新启动它:“sudo systemctl restart docker
”
清理 Kubernetes 配置:使用适当的方法删除并重新创建
kubeconfig.yaml
文件,或使用 kubectl config cluster(...).
创建新配置
使用
nestat
进行测试:在 WSL2 端,在运行 kubectl port-forward
之前和之后使用 nestat -lptn 检查打开的端口。
使用不同的端口:为转发的端口尝试不同的端口号,以排除特定于端口的冲突。
验证
kubectl
安装:如有必要,重新安装 kubectl
或使用可能有效的其他版本。
检查权限:确保
kubectl
具有访问 Pod 所需的权限:kubectl auth can-i create podbindings -n my\_namespace
WSL2 集成检查:如果在新软件或 WSL2 更新后出现问题,请暂时删除或回滚以隔离原因