从主节点终止 kubectl exec 命令不会终止 pod 内运行的命令

Nav*_*mar 0 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>
Run Code Online (Sandbox Code Playgroud)

在 POD 内部,top命令继续运行。当我按crtl+c终止kubectl exec. 这是预期的行为吗?

Sha*_*bub 6

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

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

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