Kubectl attach vs kubectl exec?

18,635

Solution 1

The use cases for kubectl attach are discussed in kubernetes/issue 23335.

It can attach to the main process run by the container, which is not always bash.
As opposed to exec, which allows you to execute any process within the container (often: 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 proposes:

In addition to interactive execution of commands, you can now also attach to any running process. Like kubectl logs, you’ll get stderr and stdout data, but with attach, you’ll also be able to send stdin from your terminal to the program.
Awesome for interactive debugging, or even just sending ctrl-c to a misbehaving application.

  $> kubectl attach redis -i

Again, the main difference is in the process you interact with in the container:

  • exec: any one you want to create
  • attach: the one currently running (no choice)

Solution 2

The kubectl attach command is similar to kubectl exec, but it attaches to the main process running in the container instead of running an additional one.

Share:
18,635

Related videos on Youtube

Suresh Vishnoi
Author by

Suresh Vishnoi

Nothing

Updated on September 14, 2022

Comments

  • Suresh Vishnoi
    Suresh Vishnoi over 1 year

    by using kubectl exec -ti POD_NAME bash I am able to access the terminal inside the container and execute the command.

    I can understand the usability and convenient of the above command. As K8s Operator I use exec regularly.

    However, What is the use case of kubectl attach POD_NAME?

    How can it be utilised? What is the real purpose of it? In what situation or circumstance it can be used?

  • Suresh Vishnoi
    Suresh Vishnoi almost 6 years
    Thanks for the answer. I was not aware of that It's possible to send stdin from terminal to misbehaving container process. Glad to know new things. Cheers
  • shadow0359
    shadow0359 almost 2 years
    Ctrl-c will simply detach from the container. It will not send the signal to the process. How do we send the signal to the process?
  • VonC
    VonC almost 2 years
    @ns94 That is a good question: can you ask it as a separate question, with your OS and Kubernetes version?