Kubectl附加vs kubectl exec?

时间:2018-04-25 19:48:03

标签: kubernetes

使用kubectl exec -ti POD_NAME bash我能够访问容器内的终端并执行命令。

我可以理解上述命令的可用性和方便性。作为K8s运营商,我经常使用 exec

然而,kubectl attach POD_NAME的用例是什么?

如何利用? 真正的目的是什么? 在什么情况或情况下它可以使用?

2 个答案:

答案 0 :(得分:18)

kubectl attach的用例在kubernetes/issue 23335中讨论。

它可以附加到由容器运行的主进程,这并不总是bash 与exec相反,它允许您在容器中执行任何进程(通常是:bash)

# Get output from running pod 123456-7890, using the first container by default
kubectl attach 123456-7890

# Get output from ruby-container from pod 123456-7890
kubectl attach 123456-7890 -c ruby-container

This article建议:

  

除了交互式执行命令外,您现在还可以附加到任何正在运行的进程。与kubectl logs一样,您将获得stderr和stdout数据,但 with attach,您还可以将stdin从终端发送到程序。
  非常适合交互式调试,甚至只是将 ctrl - c 发送给行为不当的应用程序。

  $> kubectl attach redis -i

同样,主要区别在于您在容器中与之交互的过程:

  • exec:您要创建的任何人
  • attach:当前正在运行的(无选择)

答案 1 :(得分:0)

kubectl attach 命令与 kubectl exec 类似,但它附加到在 container 中运行的主进程,而不是运行额外的进程。