Aide-mémoire Kubernetes (Cheat Sheet)
Kubernetes, souvent abrégé en K8s (où le “8” remplace les huit lettres de “ubernete”), est un système open-source de gestion d’applications conteneurisées sur plusieurs hôtes dans une plateforme cloud. L’objectif de Kubernetes est de rendre le déploiement d’applications conteneurisées simple et efficace (puissant). Kubernetes fournit des mécanismes pour le déploiement d’applications, la planification, les mises à jour et la maintenance.
Affichage des informations sur les ressources
Nœuds (Nodes)
Nom de la ressource : nodes, Abréviation : no
$ kubectl get no # Afficher tous les nœuds
$ kubectl get no -o wide # Afficher plus d'informations sur tous les nœuds
$ kubectl describe no # Afficher les détails des nœuds
$ kubectl get no -o yaml # Afficher les détails des nœuds au format YAML
$ kubectl get node --selector=[label_name] # Filtrer les nœuds par étiquette spécifique
$ kubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}'
# Afficher les informations de champ définies par l'expression jsonpath
$ kubectl top node [node_name] # Afficher l'utilisation du nœud (CPU/Mémoire/Stockage)Pods
Nom de la ressource : pods, Abréviation : po
$ kubectl get po # Afficher tous les pods
$ kubectl get po -o wide
$ kubectl describe po
$ kubectl get po --show-labels # Voir les étiquettes des pods
$ kubectl get po -l app=nginx
$ kubectl get po -o yaml
$ kubectl get pod [pod_name] -o yaml --export
$ kubectl get pod [pod_name] -o yaml --export > nameoffile.yaml
# Exporter les informations du pod vers un fichier YAML
$ kubectl get pods --field-selector status.phase=Running
# Filtrer les informations sur les pods à l'aide de sélecteurs de champEspaces de noms (Namespaces)
Nom de la ressource : namespaces, Abréviation : ns
$ kubectl get ns
$ kubectl get ns -o yaml
$ kubectl describe nsDéploiements (Deployments)
Nom de la ressource : deployments, Abréviation : deploy
$ kubectl get deploy
$ kubectl describe deploy
$ kubectl get deploy -o wide
$ kubectl get deploy -o yamlServices
Nom de la ressource : services, Abréviation : svc
$ kubectl get svc
$ kubectl describe svc
$ kubectl get svc -o wide
$ kubectl get svc -o yaml
$ kubectl get svc --show-labelsDaemonSets
Nom de la ressource : daemonsets, Abréviation : ds
$ kubectl get ds
$ kubectl describe ds --all-namespaces
$ kubectl describe ds [daemonset_name] -n [namespace_name]
$ kubectl get ds [ds_name] -n [ns_name] -o yamlÉvénements (Events)
Nom de la ressource : events, Abréviation : ev
$ kubectl get events
$ kubectl get events -n kube-system
$ kubectl get events -wJournaux (Logs)
$ kubectl logs [pod_name]
$ kubectl logs --since=1h [pod_name]
$ kubectl logs --tail=20 [pod_name]
$ kubectl logs -f -c [container_name] [pod_name]
$ kubectl logs [pod_name] > pod.logComptes de service (Service Accounts)
Nom de la ressource : serviceaccounts, Abréviation : sa
$ kubectl get sa
$ kubectl get sa -o yaml
$ kubectl get serviceaccounts default -o yaml >./sa.yaml
$ kubectl replace serviceaccount default -f ./sa.yamlReplicaSets
Nom de la ressource : replicasets, Abréviation : rs
$ kubectl get rs
$ kubectl describe rs
$ kubectl get rs -o wide
$ kubectl get rs -o yamlRôles (Roles)
$ kubectl get roles --all-namespaces
$ kubectl get roles --all-namespaces -o yamlSecrets
$ kubectl get secrets
$ kubectl get secrets --all-namespaces
$ kubectl get secrets -o yamlConfigMaps
Nom de la ressource : configmaps, Abréviation : cm
$ kubectl get cm
$ kubectl get cm --all-namespaces
$ kubectl get cm --all-namespaces -o yamlIngresses
Nom de la ressource : ingresses, Abréviation : ing
$ kubectl get ing
$ kubectl get ing --all-namespacesVolumes persistants (PersistentVolumes)
Nom de la ressource : persistentvolumes, Abréviation : pv
$ kubectl get pv
$ kubectl describe pvDemandes de volumes persistants (PersistentVolumeClaims)
Nom de la ressource : persistentvolumeclaims, Abréviation : pvc
$ kubectl get pvc
$ kubectl describe pvcClasses de stockage (StorageClasses)
Nom de la ressource : storageclasses, Abréviation : sc
$ kubectl get sc
$ kubectl get sc -o yamlRessources multiples
$ kubectl get svc, po
$ kubectl get deploy, no
$ kubectl get all
$ kubectl get all --all-namespacesModification des attributs des ressources
Taints
$ kubectl taint [node_name] [taint_name]Étiquettes (Labels)
$ kubectl label [node_name] disktype=ssd
$ kubectl label [pod_name] env=prodCordon / Uncordon
$ kubectl cordon [node_name] # Marquer le nœud comme non planifiable
$ kubectl uncordon [node_name] # Marquer le nœud comme planifiableVidage des nœuds (Draining Nodes)
$ kubectl drain [node_name] # Vider le nœudNœuds / Pods
$ kubectl delete node [node_name]
$ kubectl delete pod [pod_name]
$ kubectl edit node [node_name]
$ kubectl edit pod [pod_name]Déploiements / Espaces de noms
$ kubectl edit deploy [deploy_name]
$ kubectl delete deploy [deploy_name]
$ kubectl expose deploy [deploy_name] --port=80 --type=NodePort
$ kubectl scale deploy [deploy_name] --replicas=5
$ kubectl delete ns
$ kubectl edit ns [ns_name]Services
$ kubectl edit svc [svc_name]
$ kubectl delete svc [svc_name]DaemonSets
$ kubectl edit ds [ds_name] -n kube-system
$ kubectl delete ds [ds_name]Comptes de service
$ kubectl edit sa [sa_name]
$ kubectl delete sa [sa_name]Annotations
$ kubectl annotate po [pod_name] [annotation]
$ kubectl annotate no [node_name]Ajout de ressources
Création de Pods
$ kubectl create -f [name_of_file]
$ kubectl apply -f [name_of_file]
$ kubectl run [pod_name] --image=nginx --restart=Never
$ kubectl run [pod_name] --generator=run-pod/v1 --image=nginx
$ kubectl run [pod_name] --image=nginx --restart=NeverCréation de services
$ kubectl create svc nodeport [svc_name] --tcp=8080:80Création de déploiements
$ kubectl create -f [name_of_file]
$ kubectl apply -f [name_of_file]
$ kubectl create deploy [deploy_name] --image=nginxInteraction avec les conteneurs
$ kubectl run [pod_name] --image=busybox --rm -it --restart=Never -- shExportation de fichiers YAML
$ kubectl create deploy [deploy_name] --image=nginx --dry-run -o yaml > deploy.yaml
$ kubectl get po [pod_name] -o yaml --export > pod.yamlObtenir de l’aide
$ kubectl -h
$ kubectl create -h
$ kubectl run -h
$ kubectl explain deploy.specRequêtes
Appels API
$ kubectl get --raw /apis/metrics.k8s.io/Informations sur le cluster
$ kubectl config
$ kubectl cluster-info
$ kubectl get componentstatus