【问题标题】:Kubectl attach vs kubectl exec?Kubectl attach vs kubectl exec?
【发布时间】:2018-10-06 09:38:13
【问题描述】:

通过使用kubectl exec -ti POD_NAME bash,我可以访问容器内的终端并执行命令。

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

但是,kubectl attach POD_NAME 的用例是什么?

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

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

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

    它可以附加到容器运行的主进程上,这并不总是 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 数据,但通过附加,您还可以将标准输入从终端发送到程序。
    非常适合交互式调试,甚至只是将 ctrl-c 发送到行为不端的应用程序。

      $> kubectl attach redis -i
    

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

    • exec:你想创建的任何一个
    • attach:当前运行的那个(别无选择)

    【讨论】:

    • 感谢您的回答。我不知道可以将标准输入从终端发送到行为不端的容器进程。很高兴知道新事物。干杯
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2019-01-17
      • 2018-05-02
      • 2018-06-14
      • 1970-01-01
      • 2020-08-04
      • 2021-05-02
      • 1970-01-01
      • 2020-04-02
      • 1970-01-01
      相关资源
      最近更新 更多