如何退出由于网络错误而冻结的`kubectl exec`命令?

时间:2018-06-20 03:17:10

标签: docker kubernetes kubectl

有时候,我会有一个终端标签,其中运行着kubectl exec bash,以检查容器或尾随日志文件。当我关闭笔记本电脑,打开我的VPN或只是失去一秒钟的Wi-Fi时,该终端有时会冻结,并且使我无法退出它,除非关闭终端选项卡或手动终止该进程。

我知道SSH会话具有enter-tilda-period组合键,可让您仅在这种情况下退出,但这似乎不适用于kubectl exec。在这种情况下,是否有任何类似的方法可以实现此目的?

2 个答案:

答案 0 :(得分:1)

我认为您可以尝试以下方法。

kubectl --request-timeout=10s

[0] [https://kubernetes.io/docs/reference/kubectl/kubectl/#options]

或者您可能需要实现如下功能。 [1]

[1] [http://fibrevillage.com/sysadmin/236-how-to-timeout-a-command-in-linux-shell]

答案 1 :(得分:1)

目前尚不清楚导致kubectl exec命令异常挂断的问题的根源是什么。

回到您的问题,您可以强制断开连接并返回(docker)终端的控制权 通过将--request-timeout=<value>设置为kubectl命令行来回到您的手中:

kubectl exec --request-timeout=5s bash

可以使用kill命令发送-9信号来强制终止kubectl exec。

kill -9 $(pidof kubectl)