====== 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. kubctl apply -f ==== get ==== Liste une ou plusieurs ressources. kubectl get namespaces kubectl -n get nodes kubectl -n get pods kubectl -n get all kubectl -n get ingress kubectl -n get pvc kubectl -n get configmap kubectl -n get secret kubectl -w -n get events === Interroger tous les namespaces === * --all-namespaces === Options d'affichage === * --output=wide ou -o wide * --output=json ou -o json * --output=yaml ou -o yaml === Exemple === * Interrogation des noeuds kubectl get nodes * Interrogation sans entête en affichant juste le nom kubectl get namespaces --no-headers -o custom-columns=":metadata.name" kubectl get pods --no-headers -o custom-columns=":metadata.name" * Interrogation des pods sur un namespace kubectl get pods -n * Interrogation des pods avec le node sur lequel ils tournent et adresse IP des pods kubectl get pods --all-namespaces -o wide ==== describe ==== Affiche l'état détaillé d'une ou plusieurs ressources. kubectl describe pods 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. ==== logs ==== Affiche les logs d'un container dans un pod (sortie standard et sortie d'erreur). === Pour un pod === kubectl logs === Pour un container au sein d'un pod === kubectl logs -c ==== create ==== Crée une ou plusieurs ressources depuis un fichier ou stdin. kubctl create pod --image kubectl create job --image kubectl create deployment --image 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. kubectl delete namespaces Attention détruit tous les objets de ce namespace ! ==== rollout ==== === Interrogation === 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 === Redémarrage === kubectl rollout restart deployment === Retour arrière === 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 [[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. kubectl -n exec -it -- bash Le caractère * n'est pas accepté en tant que méta caractère de la commande kubectl exec. Voir palliatif ci-dessous. kubectl -n exec -it -- rm -f fichier.* # ne fonctionne pas kubectl -n exec -it -- sh -c "rm -f fichier.*" # OK ==== cp ==== kubectl -n cp : -c kubectl -n cp : -c kubectl -n project6 cp lbs-maria-5d49f758b6-drt2p:/tmp/toto toto -c lbs-maria vérifier le propriétaire du fichier une fois transféré sur le pod Nécessite la présence de la commande tar sur le container. Palliatif ci-dessous pour les fichiers textes. === exec: "tar": executable file not found in $PATH: unknown === cat | kubectl exec -i -n -c -- sh -c "cat > " # copie vers le pod kubectl exec -n -- cat > ==== scale ==== kubectl -n get deployments kubectl -n scale deployment --replicas=0 # on supprime toutes les instances du pod kubectl -n scale deployment --all --replicas=0 # on supprime toutes les instances de tous les pods kubectl -n scale deployment --replicas=1 # création d'une instance du pod kubectl -n get sts kubectl -n scale statefulset --replicas=1 # création d'une instance du pod (cas statefulset au lieu de deployment) [[https://kubernetes.io/fr/docs/reference/kubectl/overview/|Sources]] ---- ===== Réseau ===== ---- [[all:bibles:virtualisation:kubernetes|Haut de page]]