GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Alternatives Kubernetes aux commandes Docker

Docker fournit généralement la première introduction d'un développeur aux conteneurs. Kubernetes est une plate-forme d'orchestration qui résout les problèmes liés à l'exécution de conteneurs en production. Voici comment les commandes Docker correspondent à leurs homologues Kubernetes.

Vous ne pouvez pas utiliser le docker CLI pour interagir avec les conteneurs exécutés dans Kubernetes. Kubernetes fournit sa propre interface de ligne de commande, kubectl , pour vous aider à gérer votre cluster. Lisez notre guide pour démarrer avec kubectl si vous n'êtes pas familier avec l'outil.

Aucun des docker les commandes ont le même nom dans kubectl . Kubernetes expose les fonctionnalités à sa manière. Les charges de travail elles-mêmes sont fondamentalement différentes :Docker est conçu pour fonctionner avec un seul conteneur à la fois, tandis que Kubernetes permet l'orchestration de plusieurs répliques.

Le premier point à apprécier est le changement de terminologie. Docker fait référence à des « conteneurs » tandis que Kubernetes utilise des « pods ». Un pod peut exécuter un conteneur ou plusieurs répliques gérées comme une seule unité. Ce détail mis à part, lorsque vous voyez « conteneur » dans Docker, vous devriez penser à un « pod » Kubernetes. Les termes seront utilisés de manière interchangeable pour le reste de cet article.

Obtenir les détails de vos conteneurs

Dans Docker, vous utilisez docker ps -a pour voir tous les conteneurs sur votre machine.

L'équivalent Kubernetes le plus proche est kubectl get pods .

La sortie des deux commandes est assez différente. Docker affiche plus d'informations sur la charge de travail que le conteneur exécute.

Kubernetes fournira des détails sur l'image et la commande lors de l'utilisation du module describe pod commande. Vous devez transmettre le nom du pod. Cela donne des informations beaucoup plus détaillées, en utilisant une liste au lieu d'un tableau.

Exécuter des commandes dans des conteneurs

Docker vous permet d'exécuter une commande dans un conteneur en cours d'exécution à l'aide de docker exec .

L'équivalent Kubernetes est aussi appelé exec . Utilisez le nom du pod Kubernetes au lieu du nom du conteneur Docker. La commande est spécifiée légèrement différemment - elle doit être séparée du nom du pod par un -- séquence.

Vous pouvez utiliser le -it flags pour obtenir un accès interactif de la même manière que Docker. Ceci est un raccourci pour --stdin --tty et doit être utilisé chaque fois que vous souhaitez lancer un shell dans un pod. Spécifiez le nom du shell, tel que bash , comme la commande.

Kubectl prend en charge le attach commande lorsque vous souhaitez vous attacher à un processus dans un conteneur déjà en cours d'exécution. Cela fonctionne de la même manière que docker attach mais vous devriez passer le -it signale si vous avez besoin d'un accès interactif.

Affichage des journaux de conteneur

Pour afficher les journaux d'un conteneur avec Docker, vous utilisez les docker logs commande. Ajout du -f switch "suivra" les journaux afin qu'ils soient diffusés en continu sur votre terminal.

Les logs de Kubectl commande a la même syntaxe. Fournissez un nom de pod de la même manière que Docker accepte un nom de conteneur.

Docker et Kubernetes collectent tous deux les journaux de la sortie standard et de l'erreur standard (stdout /stderr ) flux de conteneurs en cours d'exécution. Kubernetes gère les redémarrages de conteneur différemment de Docker. Alors que dans Docker, un conteneur redémarré ajoute ses journaux à ceux existants, Kubernetes crée un nouveau journal pour chaque exécution. Vous pouvez obtenir les journaux d'un conteneur remplacé en ajoutant le --previous indicateur dans les logs commande.

Créer des conteneurs

Les conteneurs Docker sont créés avec le run commande. Voici comment démarrer un nginx serveur avec Docker :

docker run -d --name nginx --restart=always -p 80:80 nginx

Cela crée un conteneur en utilisant le nginx image de base et la configure pour qu'elle redémarre automatiquement. Le serveur est lié au port HTTP par défaut 80.

Kubernetes vous oblige à penser à des abstractions de niveau supérieur lors de l'ajout de conteneurs à votre cluster. Au lieu d'exécuter un conteneur, vous créez un déploiement pour représenter votre charge de travail :

kubectl create deployment --image=nginx nginx

Cela créera un nginx déploiement. Un pod démarre automatiquement ; dans le pod, il y aura un conteneur exécutant le serveur Web.

La création d'un déploiement ne liera ses conteneurs à aucun port. Le serveur nouvellement créé n'est pas encore accessible. Les ports doivent être exposés via un service . Les pods sont éphémères et peuvent contenir plusieurs conteneurs répliqués. Les services définissent une collection logique de pods et vous permettent de leur attribuer des ressources réseau telles qu'une adresse IP et un port.

Exposer le nginx le déploiement sur le port 80 permettra d'accéder au serveur :

kubectl expose deployment nginx --port=80 --name nginx-http

Essayer d'accéder au port 80 sur l'adresse IP par défaut du cluster devrait maintenant vous diriger vers le nginx serveur.

Kubectl ne prend pas directement en charge les autres docker run options telles que la création de volume et les montages liés. Les conteneurs qui nécessitent un stockage persistant devront avoir des volumes configurés manuellement via kubectl commandes ou un manifeste de volume.

Supprimer des conteneurs

Les conteneurs Docker sont supprimés à l'aide de docker rm commande avec l'ID du conteneur.

Kubernetes ne vous permet pas de supprimer directement les conteneurs. Au lieu de cela, vous travaillez avec le déploiement qui a créé le pod. Utiliser le kubectl delete deployment commande, en transmettant le nom du déploiement.

Docker vous permet d'arrêter un conteneur au lieu de le retirer. Kubernetes a supprimé la prise en charge de cette action. La méthode recommandée pour suspendre temporairement un déploiement consiste à réduire son nombre de répliques à 0. En l'absence de pods en cours d'exécution, la charge de travail est effectivement arrêtée.

kubectl scale --replicas=0 deployment/my-deployment

Lorsque vous êtes prêt à reprendre le déploiement, exécutez la scale commander à nouveau. Définissez le nouveau nombre de répliques sur 1 ou plus. L'utilisation d'un plus grand nombre d'instances dupliquées peut augmenter la disponibilité de votre charge de travail.

Conclusion

Il n'y a pas de parallèle direct entre la CLI Docker et kubectl . La plupart des commandes Kubernetes ont une syntaxe différente de leurs homologues Docker. Vous devrez apprendre de nouveaux termes et options avant de pouvoir migrer les flux de travail basés sur Docker vers Kubernetes.

Dans de nombreux cas, il n'y a pas de kubectl alternative à une fonctionnalité Docker CLI. La fonctionnalité de Docker est axée sur le concept de conteneur. Kubernetes prend cela et le place au centre d'un écosystème de ressources considérablement élargi.

Les conteneurs sont rarement traités isolément. Au lieu de cela, vous devrez travailler avec des ressources telles que des déploiements, des services et des jeux de répliques. C'est pourquoi apprendre Kubernetes peut sembler difficile lorsqu'on l'aborde du point de vue d'un utilisateur Docker.

Si vous connaissez les fondamentaux de Docker, la transition vers Kubernetes devrait néanmoins être relativement simple. La principale différence est que ce que Docker considère comme un conteneur est généralement accessible comme un « pod » agrégé dans Kubernetes. Les pods sont créés par des « déploiements » qui représentent les charges de travail de votre cluster. En cas de doute, reportez-vous au kubectl docs pour trouver une correspondance appropriée pour une commande Docker.


Docker
  1. Quelques commandes DOCKER

  2. Aide-mémoire de référence rapide des commandes Docker

  3. Docker

  4. Qu'est-ce que containerd et quel est son lien avec Docker et Kubernetes ?

  5. Exécuter deux commandes avec docker exec

De Docker Compose à Kubernetes avec Podman

Comment se connecter en SSH à un conteneur Docker et exécuter des commandes

Comment déployer des piles Docker Compose sur Kubernetes avec Kompose

21 commandes essentielles que tout utilisateur de Docker devrait connaître

Commandes Docker pour la gestion du cycle de vie des conteneurs (Guide définitif)

40 commandes Docker importantes pour les développeurs de logiciels