Skip to content

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 champ

Espaces de noms (Namespaces)

Nom de la ressource : namespaces, Abréviation : ns

$ kubectl get ns
$ kubectl get ns -o yaml
$ kubectl describe ns

Dé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 yaml

Services

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-labels

DaemonSets

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 -w

Journaux (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.log

Comptes 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.yaml

ReplicaSets

Nom de la ressource : replicasets, Abréviation : rs

$ kubectl get rs
$ kubectl describe rs
$ kubectl get rs -o wide 
$ kubectl get rs -o yaml

Rôles (Roles)

$ kubectl get roles --all-namespaces
$ kubectl get roles --all-namespaces -o yaml

Secrets

$ kubectl get secrets
$ kubectl get secrets --all-namespaces 
$ kubectl get secrets -o yaml

ConfigMaps

Nom de la ressource : configmaps, Abréviation : cm

$ kubectl get cm
$ kubectl get cm --all-namespaces
$ kubectl get cm --all-namespaces -o yaml

Ingresses

Nom de la ressource : ingresses, Abréviation : ing

$ kubectl get ing
$ kubectl get ing --all-namespaces

Volumes persistants (PersistentVolumes)

Nom de la ressource : persistentvolumes, Abréviation : pv

$ kubectl get pv 
$ kubectl describe pv

Demandes de volumes persistants (PersistentVolumeClaims)

Nom de la ressource : persistentvolumeclaims, Abréviation : pvc

$ kubectl get pvc
$ kubectl describe pvc

Classes de stockage (StorageClasses)

Nom de la ressource : storageclasses, Abréviation : sc

$ kubectl get sc
$ kubectl get sc -o yaml

Ressources multiples

$ kubectl get svc, po
$ kubectl get deploy, no
$ kubectl get all
$ kubectl get all --all-namespaces

Modification des attributs des ressources

Taints

$ kubectl taint [node_name] [taint_name]

Étiquettes (Labels)

$ kubectl label [node_name] disktype=ssd 
$ kubectl label [pod_name] env=prod

Cordon / Uncordon

$ kubectl cordon [node_name]   # Marquer le nœud comme non planifiable
$ kubectl uncordon [node_name] # Marquer le nœud comme planifiable

Vidage des nœuds (Draining Nodes)

$ kubectl drain [node_name]    # Vider le nœud

Nœ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=Never

Création de services

$ kubectl create svc nodeport [svc_name] --tcp=8080:80

Création de déploiements

$ kubectl create -f [name_of_file] 
$ kubectl apply -f [name_of_file]
$ kubectl create deploy [deploy_name] --image=nginx

Interaction avec les conteneurs

$ kubectl run [pod_name] --image=busybox --rm -it --restart=Never -- sh

Exportation 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.yaml

Obtenir de l’aide

$ kubectl -h
$ kubectl create -h
$ kubectl run -h
$ kubectl explain deploy.spec

Requêtes

Appels API

$ kubectl get --raw /apis/metrics.k8s.io/

Informations sur le cluster

$ kubectl config
$ kubectl cluster-info
$ kubectl get componentstatus