WSL2 上的 kubectl:“错误:升级连接时出错:发送请求时出错:Post”

问题描述 投票:0回答:1

我在 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 停止工作。

kubernetes windows-subsystem-for-linux kubectl wsl-2 portforwarding
1个回答
0
投票

错误“

read:connection reset by peer
”表示端口转发建立过程中出现问题,通常是由于WSL2或相关应用程序中无法连接到kubernetes API服务器的端口限制。

您可以尝试以下步骤作为故障排除来解决问题:

  1. 重新启动服务:您可以使用以下命令重新启动 WSL2:“

    wsl --shutdown
    ”,然后依次使用“
    wsl --unregister <distro\_name\>
    ”和“
    wsl --register <distro\_name\>
    ”。如果在 WSL2 中使用 Docker,请重新启动它:“
    sudo systemctl restart docker

  2. 清理 Kubernetes 配置:使用适当的方法删除并重新创建

    kubeconfig.yaml
    文件,或使用
    kubectl config cluster(...).

    创建新配置
  3. 使用

    nestat
    进行测试:在 WSL2 端,在运行
    kubectl port-forward
    之前和之后使用 nestat -lptn 检查打开的端口。

  4. 使用不同的端口:为转发的端口尝试不同的端口号,以排除特定于端口的冲突。

  5. 验证

    kubectl
    安装:如有必要,重新安装
    kubectl
    或使用可能有效的其他版本。

  6. 检查权限:确保

    kubectl
    具有访问 Pod 所需的权限:
    kubectl auth can-i create podbindings -n my\_namespace

  7. WSL2 集成检查:如果在新软件或 WSL2 更新后出现问题,请暂时删除或回滚以隔离原因

© www.soinside.com 2019 - 2024. All rights reserved.