Outils pour utilisateurs

Outils du site


all:bibles:virtualisation:kubernetes

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
all:bibles:virtualisation:kubernetes [2024/08/22 10:47] – [cp] omeylhocall:bibles:virtualisation:kubernetes [2025/06/24 15:03] (Version actuelle) – [scale] omeylhoc
Ligne 1: Ligne 1:
 +====== Kubernetes ======
  
 +----
 +
 +===== Principes =====
 +
 +==== Architecture ====
 +
 +{{ :all:bibles:virtualisation:kubernetes.png?400 |}}
 +
 +=== Namespaces ===
 +
 +Objet qui permet de ranger dans différents environnements
 +
 +=== Labels ===
 +
 +Affecté à un objet pour pouvoir faire différentes catégories. Peut être utilisé pour des commandes y compris delete par exemple.
 +
 +----
 +
 +===== kubectl =====
 +
 +==== apply ====
 +
 +Applique un changement de configuration à une ressource depuis un fichier ou stdin.
 +
 +<code bash>
 +kubctl apply -f <fichier.yaml>
 +</code>
 +
 +==== get ====
 +
 +Liste une ou plusieurs ressources.
 +
 +<code bash>
 +kubectl get namespaces
 +kubectl -n <namespace> get nodes
 +kubectl -n <namespace> get pods
 +kubectl -n <namespace> get all
 +kubectl -n <namespace> get ingress
 +kubectl -n <namespace> get pvc
 +kubectl -n <namespace> get configmap
 +kubectl -n <namespace> get secret
 +kubectl -w -n <namespace> get events
 +</code>
 +
 +=== Interroger tous les namespaces ===
 +
 +  * <nowiki>--all-namespaces</nowiki>
 +
 +=== Options d'affichage ===
 +
 +  * <nowiki>--output=wide</nowiki> ou -o wide
 +  * <nowiki>--output=json</nowiki> ou -o json
 +  * <nowiki>--output=yaml</nowiki> ou -o yaml
 +
 +=== Exemple ===
 +
 +  * Interrogation des noeuds
 +
 +<code bash>
 +kubectl get nodes
 +</code>
 +
 +  * Interrogation sans entête en affichant juste le nom
 +
 +<code bash>
 +kubectl get namespaces --no-headers -o custom-columns=":metadata.name"
 +kubectl get pods       --no-headers -o custom-columns=":metadata.name"
 +</code>
 +
 +  * Interrogation des pods sur un namespace
 +
 +<code bash>
 +kubectl get pods -n <namespace>
 +</code>
 +
 +  * Interrogation des pods avec le node sur lequel ils tournent et adresse IP des pods
 +
 +<code bash>
 +kubectl get pods --all-namespaces -o wide
 +</code>
 +
 +==== describe ====
 +
 +Affiche l'état détaillé d'une ou plusieurs ressources.
 +
 +<code bash>
 +kubectl describe pods <nom du pod>
 +</code>
 +
 +<note tip>On peut mettre le début du nom du pod, il affichera tous les pods dont le nom commence par cette chaine de caractères.</note>
 +
 +==== logs ====
 +
 +Affiche les logs d'un container dans un pod (sortie standard et sortie d'erreur).
 +
 +=== Pour un pod ===
 +
 +<code bash>
 +kubectl logs <nom du pod>
 +</code>
 +
 +=== Pour un container au sein d'un pod ===
 +
 +<code bash>
 +kubectl logs -c <nom du container>
 +</code>
 +
 +==== create ====
 +
 +Crée une ou plusieurs ressources depuis un fichier ou stdin.
 +
 +<code bash>
 +kubctl create pod <nom du pod> --image <nom image>
 +kubectl create job <nom du job> --image <nom image>
 +kubectl create deployment <nom de deployment> --image <nom image>
 +</code>
 +
 +Par défaut quand on lance un pod il considère que c'est une application à boucle d'évènements. Pour lancer un script qui se termine au bout d'un moment il faut lancer un job.
 +
 +==== delete ====
 +
 +Supprime des ressources soit depuis un fichier ou stdin, ou en indiquant des sélecteurs de label, des noms, des sélecteurs de ressources ou des ressources.
 +
 +<code bash>
 +kubectl delete namespaces <namespace>
 +</code>
 +
 +<note warning>Attention détruit tous les objets de ce namespace !</note>
 +
 +==== rollout ====
 +
 +=== Interrogation ===
 +
 +<code bash>
 +kubectl rollout status deployment.apps/lbs-maria                  # état du déploiement
 +kubectl rollout history deployment.apps/lbs-maria                 # historique des déploiements
 +kubectl rollout history deployment.apps/lbs-maria --revision 35   # détail d'un déploiement
 +</code>
 +
 +=== Redémarrage ===
 +
 +<code bash>
 +kubectl rollout restart deployment <pod>
 +</code>
 +
 +=== Retour arrière ===
 +
 +<code bash>
 +kubectl rollout undo deployment.apps/lbs-maria                     # retour à la version précédente
 +kubectl rollout undo deployment.apps/lbs-maria --to-revision 30    # retour à la version 30
 +</code>
 +
 +[[https://romain.dorgueil.net/blog/en/tips/2016/08/27/rollout-rollback-kubernetes-deployment.html|Source]]
 +
 +==== exec ====
 +
 +Exécute une commande à l'intérieur d'un conteneur dans un pod. La commande bash permet d'ouvrir une console.
 +
 +<code bash>
 +kubectl -n <namespace> exec -it <pod> -- bash
 +</code>
 +
 +<note important>Le caractère * n'est pas accepté en tant que méta caractère de la commande kubectl exec. Voir palliatif ci-dessous.</note>
 +
 +<code bash>
 +kubectl -n <namespace> exec -it <pod> -- rm -f fichier.*             # ne fonctionne pas 
 +kubectl -n <namespace> exec -it <pod> -- sh -c "rm -f fichier.*"     # OK
 +</code>
 +
 +==== cp ====
 +
 +<code bash>
 +kubectl -n <namespace> cp <pod>:<chemin_vers_fichier_distant> <chemin_vers_fichier_local> -c <nom_du_module>
 +kubectl -n <namespace> cp <chemin_vers_fichier_local> <pod>:<chemin_vers_fichier_distant> -c <nom_du_module>
 +kubectl -n project6 cp lbs-maria-5d49f758b6-drt2p:/tmp/toto toto -c lbs-maria
 +</code>
 +
 +<note warning>vérifier le propriétaire du fichier une fois transféré sur le pod</note>
 +<note important>Nécessite la présence de la commande tar sur le container. Palliatif ci-dessous pour les fichiers textes.</note>
 +
 +=== exec: "tar": executable file not found in $PATH: unknown ===
 +
 +<code bash>
 +cat <fichier_local> | kubectl exec -i -n <namespace> <pod> -c <container> -- sh -c "cat > <fichier_distant>"    # copie vers le pod
 +kubectl exec -n <namespace> <pod> -- cat <fichier_distant>  > <fichier_local>
 +</code>
 +
 +==== scale ==== 
 +
 +<code bash>
 +kubectl -n <namespace> get deployments
 +kubectl -n <namespace> scale deployment  <nom> --replicas=0 # on supprime toutes les instances du pod
 +kubectl -n <namespace> scale deployment --all --replicas=0  # on supprime toutes les instances de tous les pods
 +kubectl -n <namespace> scale deployment  <nom> --replicas=1 # création d'une instance du pod
 +kubectl -n <namespace> get sts
 +kubectl -n <namespace> scale statefulset <nom> --replicas=1 # création d'une instance du pod (cas statefulset au lieu de deployment)
 +</code>
 +
 +[[https://kubernetes.io/fr/docs/reference/kubectl/overview/|Sources]]
 +
 +----
 +
 +===== Réseau =====
 +
 +
 +----
 +[[all:bibles:virtualisation:kubernetes|Haut de page]]