web-dev-qa-db-fra.com

Kubectl attach vs kubectl exec?

en utilisant kubectl exec -ti POD_NAME bash Je peux accéder au terminal à l'intérieur du conteneur et exécuter la commande.

Je peux comprendre la facilité d'utilisation et la commodité de la commande ci-dessus. En tant qu’opérateur K8, j’utilise exec régulièrement.

Cependant, quel est le cas d'utilisation de kubectl attach POD_NAME?

Comment peut-il être tilisé? Quel est le réel but de cela? Dans quelle situation ou circonstance peut-il être utilisé?

25
Suresh Vishnoi

Les cas d'utilisation de kubectl attach sont décrits dans kubernetes/numéro 23335 .

Il peut être associé au processus principal exécuté par le conteneur, qui n'est pas toujours bash.
Contrairement à exec, qui vous permet d'exécuter toute processus dans le conteneur (souvent: 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

Cet article propose:

En plus de l'exécution interactive des commandes, vous pouvez également vous connecter à n'importe quel processus en cours d'exécution. Comme kubectl logs, vous obtiendrez les données stderr et stdout, mais avec attach, vous pourrez également envoyer stdin de votre terminal au programme.
Excellent pour le débogage interactif, ou même pour l'envoi ctrl-c à une mauvaise application.

  $> kubectl attach redis -i

Encore une fois, la principale différence réside dans le processus avec lequel vous interagissez dans le conteneur:

  • exec: celui que vous voulez créer
  • attach: celui qui tourne actuellement (pas le choix)
24
VonC