Aide-mémoire pour les commandes Kubernetes

Lorsque tu travailles sur Kubernetes, il est très important que tu connaisses au moins les commandes de base. Dans cet article, tu trouveras les commandes qui sont nécessaires la plupart du temps lorsque tu travailles sur le cluster. Si tu connais les commandes, tu peux te débarrasser de l’écriture de fichiers de définition d’objets pour des objets simples, puis de la création d’objets à l’aide de ces fichiers. Au lieu de cela, tu peux utiliser les commandes et voir les objets créés en une fraction de secondes.

Dans cet article, tu verras non seulement les commandes pour obtenir les détails des objets mais aussi pour créer les objets. Cet article se concentre uniquement sur les commandes et non sur une description de ces commandes. Si tu veux connaître chaque commande en détail, tu peux consulter la documentation officielle ici.

Cet article te servira d’antisèche en ce qui concerne les objets principaux du cluster Kubernetes.

Pré-requis

  1. Compréhension de base de Kubernetes
  2. Cluster Kubernetes avec au moins 1 nœud de travail.
    Si tu veux apprendre à créer un cluster Kubernetes, cliqueici. Ce guide t’aidera à créer un cluster Kubernetes avec 1 Maître et 2 Nœuds sur des Instances EC2 AWS Ubuntu 18.04.

Que verrons-nous ?

  1. Commandes importantes
    1. Informations sur le cluster
    2. Informations sur la configuration
    3. Espace de noms
    4. Pod
    5. Déploiements
    6. Services
    7. Gérer les objets à partir des fichiers .yaml/.yml

Commandes importantes

Informations sur les clusters

Imprime les informations sur la version du client et du serveur

kubectl version

Imprime les ressources API prises en charge sur le serveur

kubectl api-resources

Imprime les versions d’API prises en charge sur le serveur, sous la forme « groupe/version ».

kubectl api-versions

Imprime les informations sur le cluster

kubectl cluster-info

Obtiens la liste des nœuds du cluster

kubectl  get nodes

Obtiens des informations sur le nœud maître

kubectl  get nodes master -o wide

Obtiens des informations détaillées sur les nœuds maîtres

kubectl  describe  nodes  master

Informations sur la configuration

Afficher les paramètres fusionnés de kubeconfig

kubectl  config view

Afficher le contexte actuel

kubectl  config  current-context

Définir le contexte, ici kubernetes-admin@kubernetes est le nom du contexte

kubectl config  use-context kubernetes-admin@kubernetes

Afficher les clusters définis dans la kubeconfig

kubectl  config get-clusters

Décrire un ou plusieurs contextes

kubectl  config get-contexts

Espaces de noms

Obtiens tous les espaces de noms

kubectl  get namespaces

Obtiens des informations sur les espaces de noms au format yaml

kubectl  get namespaces -o yaml

Décrire l’espace de noms par défaut

kubectl  describe  namespace default

Créer un nouvel espace de noms

kubectl  create namespace my-namespace

Supprimer l’espace de noms

kubectl  delete namespace my-namespace

Pods

Récupère les pods de l’espace de noms actuel

kubectl get pods

Récupérer les pods de tous les espaces de noms

kubectl get pods --all-namespaces

Récupère les pods de l’espace de nom spécifié

kubectl get pods -namespace=my-namespace

Créer un pod

kubectl  run my-pod-1 --image=nginx:latest --dry-run

Voir comment le pod serait traité

kubectl  run my-pod-1 --image=nginx:latest --dry-run=client

Créer un pod dans l’espace de noms spécifié

kubectl  run my-pod-2 --image=nginx:latest --namespace=my-namespace

Créer un pod avec une étiquette

kubectl  run nginx --image=nginx -l --labels=app=test

Récupère tous les pods avec une sortie d’étiquette

kubectl get pods --show-labels

Obtenir les pods avec une sortie extensible/étendue

kubectl  get pods -o wide

Lister les pods dans un ordre trié

kubectl  get pods --sort-by=.metadata.name

Obtenir les journaux du pod

kubectl  logs  my-pod-1

Récupère les pods dans l’espace de nom spécifié avec une sortie étendue/étendue.

kubectl get pods my-pod-2 --namespace=my-namespace -o wide

Obtiens les journaux du pod dans l’espace de nom spécifié

kubectl  logs  my-pod-2 --namespace=my-namespace

Décris le pod

kubectl  describe  pod my-pod-1

Décris le pod dans l’espace de nom spécifié

kubectl describe  pods my-pod-1 --namespace=my-namespace

Supprimer le pod de l’espace de nom actuel

kubectl  delete pod my-pod-1

Supprime le pod de l’espace de noms spécifié

kubectl delete  pods my-pod-1 --namespace=my-namespace

Déploiements

Obtiens une liste des déploiements de l’espace de nom actuel

kubectl  get deployments

Obtiens une liste des déploiements de l’espace de noms spécifié

kubectl  get deployments --namespace=my-namespace

Créer un déploiement

kubectl  create deployment my-deployment-1 --image=nginx

Obtenir le déploiement spécifié

kubectl  get deployment my-deployment-1

Récupère le déploiement spécifié avec ses étiquettes

kubectl  get deployment my-deployment-1 --show-labels

Décrire le déploiement spécifié

kubectl describe  deployments my-deployment-1

Obtiens les détails du déploiement au format yaml

kubectl  get deployment my-deployment-1 -o yaml

Modifier l’image dans le déploiement existant

kubectl  set image deployment my-deployment-1 nginx=nginx:1.16.1

Afficher l’historique du déploiement

kubectl rollout history deployment my-deployment-1

Annule un déploiement précédent

kubectl rollout undo deployment my-deployment-1

Reviens à la version spécifique de l’historique du déploiement

kubectl rollout undo deployment my-deployment-1 --to-revision=2

Afficher l’état du déploiement

kubectl rollout status deployment my-deployment-1

Redémarrer une ressource

kubectl rollout restart deployment my-deployment-1

Échelonner le déploiement jusqu’à 3

kubectl scale --replicas=3 deployment my-deployment-1

Passer du nombre actuel au nombre souhaité

kubectl scale --current-replicas=3 --replicas=5 deployment my-deployment-1

Cela créera un HPA (Horizontal Pod Aotuscaler)

kubectl autoscale deployment my-deployment-1 --min=2 --max=10

Services

Tout d’abord, crée un pod avec l’étiquette app=myapp.

Puis :

Crée un pod avec l’étiquette

kubectl run my-pod --image=nginx --labels=app=myapp

Crée un service de type NodePort qui utilisera les étiquettes du pod pour le sélecteur mais nous devons spécifier le type, donc crée d’abord un fichier de définition et ensuite crée un service

kubectl expose pod my-pod --port=80 --name nginx-service --type=NodePort --dry-run=client -o yaml

Crée un service qui aura le type NodePort mais qui n’aura pas de sélecteur comme my-app

kubectl create service nodeport nginx --tcp=80:80 --node-port=30080 --dry-run=client -o yaml

Récupère les services du contexte actuel

kubectl  get service

Obtiens les détails des services

kubectl  get service -o wide

Récupère les services avec des étiquettes

kubectl  get service --show-labels

Récupère les services de tous les espaces de noms

kubectl  get services --all-namespaces

Décris le service pour en savoir plus

kubectl  describe  service nginx-service

Obtenir un service particulier

kubectl  get  service nginx-service

Supprimer le service

kubectl  delete service nginx-service

Gérer les objets à partir des fichiers .yaml/.yml

Commence par créer un fichier de définition pour un pod

Crée un fichier de définition pour un pod

kubectl  run mypod --image=nginx --dry-run=client -o yaml > my-pod.yml

Crée un objet

kubectl  create -f my-pod.yml

Supprime l’objet

kubectl  delete -f my-pod.yml

Conclusion

Dans cet article, nous avons vu les commandes importantes dont on a besoin lorsqu’on travaille sur Kubernetes. Les commandes de Kubernetes ne se limitent pas à ces seules commandes mais ces commandes sont comme des commandes« indispensables« .

Vous aimerez aussi...