从主节点杀死kubectl exec命令不会终止在pod中运行的命令

时间:2020-01-29 05:48:05

标签: kubernetes kubectl

我从主节点运行了kubectl exec -it pod_XXXX -- top命令。然后通过另一个终端的kubectl exec命令终止sudo kill -9 <pid_of_kubectl>进程。

 kubectl exec -it pod_XXXX -- top
 sudo kill -9 <pid_of_kubectl_exec_command>

内部POD中的top命令保持运行。当我按crtl+c终止kubectl exec时,看不到此问题。这是预期的行为吗?

1 个答案:

答案 0 :(得分:4)

通过运行 kubectl exec -it ,您可以将终端连接/流式传输到Pod终端,这样,如果您在终端上键入任何内容,就可以流式传输到Pod终端。这就是为什么当您在终端上运行 kubectl exec -it pod_XXXX-top 时,它能按预期工作的原因。请记住,POD的终端运行的是 top 界面,而不是您的界面。

因此,当您键入 sudo kill -9 pid_of_kubectl_exec_command 时,它将终止您的终端与POD终端之间的连接。因此,POD终端内部的进程将继续运行。

当您从终端按 ctrl + c 时,它将 ctrl + c 流到POD终端,这就是 top 立即终止的原因