使用kubectl exec -ti POD_NAME bash
我能够访问容器内的终端并执行命令。
我可以理解上述命令的可用性和方便性。作为K8s运营商,我经常使用 exec 。
然而,kubectl attach POD_NAME
的用例是什么?
如何利用? 真正的目的是什么? 在什么情况或情况下它可以使用?
答案 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
同样,主要区别在于您在容器中与之交互的过程:
答案 1 :(得分:0)
kubectl attach
命令与 kubectl exec
类似,但它附加到在 container
中运行的主进程,而不是运行额外的进程。