bash - 连接丢失时 kubectl port-forward 不返回
问题描述
的说help
_kubectl port-forward
The forwarding session ends when the selected pod terminates, and rerun of the command is needed to resume forwarding.
虽然它不会在 pod 终止时自动重新连接,但该命令也不会返回,只会挂起并出现错误:
E0929 11:57:50.187945 62466 portforward.go:400] an error occurred forwarding 8000 -> 8080: error forwarding port 8080 to pod a1fe1d167955e1c345e0f8026c4efa70a84b9d46029037ebc5b69d9da5d30249, uid : network namespace for sandbox "a1fe1d167955e1c345e0f8026c4efa70a84b9d46029037ebc5b69d9da5d30249" is closed
Handling connection for 8000
E0929 12:02:44.505938 62466 portforward.go:400] an error occurred forwarding 8000 -> 8080: error forwarding port 8080 to pod a1fe1d167955e1c345e0f8026c4efa70a84b9d46029037ebc5b69d9da5d30249, uid : failed to find sandbox "a1fe1d167955e1c345e0f8026c4efa70a84b9d46029037ebc5b69d9da5d30249" in store: not found
我希望它返回,以便我可以处理此错误并制作将重新运行它的脚本。
有什么方法或解决方法可以做到这一点吗?
解决方案
根据GitHub 上 Kubernetes 问题页面上描述的信息,我可以假设这是您的情况的正常行为:在删除 pod 时无法取消端口转发连接,因为服务器端的 REST 连接器内部没有连接管理.
即使 pod 不存在,从 kubectl 一直到挂起的 kubelet 都保持着连接。
我们将在端口转发上代理一个 websocket 连接 kubectl->kubeapiserver->kubelet。
推荐阅读
- php - 未存储在数据库中的数据
- django - 如何使用 pre_delete 信号来普遍防止删除?
- javascript - 具有固定位置的弹出光标跟随工具提示不允许我填写输入元素并在远离表格时跳转(JSFIDDLE)
- javascript - Make html a tag href wait for async function in onclick to return?
- symfony - Symfony 学说不做插入/更新/删除
- vue.js - Vue.js + REST api 中的身份验证流程
- javascript - ReactJS Redux 异步操作
- haskell - 如何在 Haskell 中使用 Monad 类的多个构造函数参数上映射函数?
- jquery - 调整剑道拆分器大小时如何使用繁忙指示器?
- javascript - NestJs - 通过确定调用者姓名记录特定功能