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
- Compréhension de base de Kubernetes
- 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 ?
- Commandes importantes
- Informations sur le cluster
- Informations sur la configuration
- Espace de noms
- Pod
- Déploiements
- Services
- 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« .