46 votes

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 l'utilité et la commodité de la commande ci-dessus. En tant qu'opérateur K8, j'utilise régulièrement exec .

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

Comment peut-il être utilisé ? Quel est son véritable objectif ? Dans quelle situation ou circonstance peut-il être utilisé?

57voto

VonC Points 414372

Les cas d'utilisation pour kubectl joindre sont discutés dans kubernetes/question 23335.

Il peut se brancher sur les principaux processus géré par le conteneur, ce qui n'est pas toujours bash.
Contrairement à exec, qui vous permet d'exécuter tout 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 de:

En plus interactive de l'exécution des commandes, vous pouvez maintenant attacher à n'importe quel processus en cours d'exécution. Comme kubectl logs, vous obtiendrez stderr et stdout de données, mais avec les joindre, vous serez également en mesure d'envoyer stdin à partir de votre terminal pour le programme.
Génial pour le débogage interactif, ou même juste d'envoyer ctrl-c à un comportement anormal de l'application.

  $> kubectl attach redis -i

Encore une fois, la principale différence est dans le processus d'interagir avec les dans le conteneur:

  • exec: n'importe quel que vous voulez créer
  • joindre: celui qui est actuellement en cours d'exécution (pas le choix)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X