【问题解决】unable to do port forwarding: socat not found

问题复现

前阵子应公司要求做华为云平台的调研,写了一篇文档包含将华为云CCE下载kuberctl配置及使用kubectl转发流量到本地的操作。

今天一早上同事就发来一个错误界面,说是Java远程调试转发过来的端口出现问题,如下图:

【问题解决】unable to do port forwarding: socat not found_第1张图片

处理思路

最初以为是容器镜像未安装socat所致,安装重新打镜像后问题仍存在。

在网上查询了下github和stackoverflow,发现问题出在k8s的版本上和工作节点未安装socat。

根据代码的追踪,定位到从release-0.16 ~ release-1.2 都有pkg/kubelet/dockertools/manager.go这个源码文件,其PortForward方法中会校验工作节点中是否安装了socat包,虽然更高版本没这个文件了,但kubelet相关仍有socat检测,也就是说升k8s版本可能解决不了问题。

解决办法

  • 升级k8s版本高于1.2。
  • 工作节点安装socat包。

参考链接

  • https://stackoverflow.com/questions/60680834/uid-unable-to-do-port-forwarding-socat-not-found-when-remote-debbuging-using

  • https://stackoverflow.com/questions/33517646/unable-to-do-port-forwarding-socat-not-found-kubernetes-on-docker

  • https://github.com/txn2/kubefwd/issues/15

  • https://github.com/kubernetes/kubernetes/blob/7932ef58eedc28160d496a0b846f94d58e7f7206/pkg/kubelet/dockertools/manager.go#L932

你可能感兴趣的:(k8s)