修复在 k8s runtime 为 containerd 时,端口转发不稳定问题
抛出问题
我们在开发nocalhost项目,此项目中有个功能叫做端口转发,内部使用了 k8s 的端口转发,在上面主动加了 heartbeat 心跳检查。 有用户反馈使用了 containerd 之后,端口转发不稳定,总是失败。
复现步骤
- 使用 Containerd 作为 k8s runtime, 并部署一个 Pod
- Pod 中监听业务端口
- 开发端口转发
- 请求正常,得到正确结果,愈合预期
- Pod 中关闭业务监听的端口
- 请求失败,得到失败结果,符合预期
- Pod 中开启业务监听的端口
- 请求失败,得到失败结果,不符合预期
初步分析
看起来就像是Pod关闭端口后,连接出现了问题,然后即便再次开启端口,连接也无法恢复。