Kubernetes cheatsheet
Quelques commandes k8s fréquentes avec paramètres
Voici mon k8s cheat sheet
couvrant les commandes les plus importantes de Kubernetes et les concepts allant de l’installation jusqu’à l’exécution de conteneurs et au nettoyage :
Installation de Kubernetes
Utilisation de Kubeadm
Pour installer Kubernetes à l’aide de kubeadm
, suivez ces étapes :
-
Préparer l’environnement :
- Assurez-vous que les modules noyau nécessaires sont activés :
sudo sysctl net/bridge/bridge-nf-call-ip6tables=1 sudo sysctl net/bridge/bridge-nf-call-iptables=1 sudo sysctl net/bridge/bridge-nf-call-arptables=1
- Redémarrez le système pour appliquer les modifications.
- Assurez-vous que les modules noyau nécessaires sont activés :
-
Installer Docker et autres prérequis :
- Installez Docker :
sudo apt-get update sudo apt-get install -y docker.io
- Installez
ebtables
etethtool
:sudo apt-get install ebtables ethtool
- Installez le support HTTPS et
curl
si nécessaire :sudo apt-get update sudo apt-get install -y apt-transport-https curl
- Ajoutez le dépôt Kubernetes et installez
kubeadm
,kubelet
etkubectl
:curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - sudo cat <<EOF >/etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt-get update sudo apt-get install -y kubeadm kubelet kubectl
- Installez Docker :
-
Initialiser le cluster Kubernetes :
- Initialisez le premier nœud de plan de contrôle :
sudo kubeadm init
- Joignez d’autres nœuds de plan de contrôle et nœuds de travail :
kubeadm join <control-plane-node>:8443 --token <token> --discovery-token-ca-cert-hash <hash>
- Initialisez le premier nœud de plan de contrôle :
Utilisation de Minikube ou Kind
Pour le développement local, vous pouvez utiliser minikube
ou kind
:
-
Minikube :
minikube start
Suivez le guide officiel [Get Started!].
-
Kind :
curl -sfL https://get.k3s.io | sh - kind create cluster
Suivez la page [Kind Quick Start].
Commandes courantes de kubectl
Commandes de base
-
Obtenir des informations sur les ressources :
kubectl get <resource> # Liste des ressources (ex. pods, services, deployments) kubectl get pods --all-namespaces # Liste tous les pods dans tous les namespaces kubectl get pods -o wide # Liste des pods avec plus de détails kubectl get pod my-pod -o yaml # Obtenir la configuration YAML d’un pod.
-
Décrire des ressources :
kubectl describe <resource> # Description détaillée d’une ressource (ex. nœuds, pods) kubectl describe nodes my-node kubectl describe pods my-pod.
-
Créer des ressources :
kubectl create -f <manifest-file> # Créer des ressources à partir d’un fichier YAML ou JSON kubectl create configmap <configmap-name> --from-literal=<key>=<value> # Créer un ConfigMap kubectl create secret generic <secret-name> --from-literal=<key>=<value> # Créer un Secret.
-
Supprimer des ressources :
kubectl delete <resource> <name> # Supprimer une ressource (ex. pod, deployment) kubectl delete pod my-pod kubectl delete deployment my-deployment.
Gestion des pods
-
Définir une commande et des arguments pour un conteneur :
apiVersion: v1 kind: Pod metadata: name: command-demo spec: containers: - name: command-demo-container image: debian command: ["printenv"] args: ["HOSTNAME", "KUBERNETES_PORT"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs command-demo.
-
Exécuter une commande dans un shell :
apiVersion: v1 kind: Pod metadata: name: shell-demo spec: containers: - name: shell-demo-container image: debian command: ["/bin/sh"] args: ["-c", "while true; do echo hello; sleep 10;done"]
kubectl apply -f <manifest-file> kubectl get pods kubectl logs shell-demo.
Gestion des ConfigMap et Secret
-
Créer un ConfigMap :
kubectl create configmap <configmap-name> --from-literal=<key>=<value> kubectl create configmap app-config --from-literal=environment=production --from-literal=log_level=info.
-
Créer un Secret :
kubectl create secret generic <secret-name> --from-literal=<key>=<value> kubectl create secret generic db-secret --from-literal=username=admin --from-literal=password=supersecret.
Déploiement et gestion des services
-
Créer un déploiement :
kubectl create deployment <deployment-name> --image=<image-name> kubectl create deployment my-deployment --image=nginx:latest.
-
Exposer un déploiement en tant que service :
kubectl expose deployment <deployment-name> --type=NodePort --port=<port> kubectl expose deployment my-deployment --type=NodePort --port=80.
Gestion des namespaces et nœuds
-
Lister les namespaces :
kubectl get namespaces
-
Créer un namespace :
kubectl create namespace <namespace-name> kubectl create namespace my-namespace.
-
Lister les nœuds :
kubectl get nodes kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
Surveillance et débogage
-
Voir les logs :
kubectl logs <pod-name> kubectl logs -f <pod-name> # Suivre les logs en temps réel.
-
Décrire les événements :
kubectl describe events
-
Vérifier les informations du cluster :
kubectl cluster-info kubectl version # Vérifier la version de Kubernetes.
Commandes avancées
-
Trier les ressources :
kubectl get pods --sort-by='.status.containerStatuses.restartCount' kubectl get services --sort-by=.metadata.name.
-
Filtrer les ressources :
kubectl get pods --field-selector=status.phase=Running kubectl get nodes --selector='!node-role.kubernetes.io/control-plane'.
-
Récupérer des données spécifiques :
kubectl get configmap myconfig -o jsonpath='{.data.ca\.crt}' kubectl get secret my-secret --template='{{index .data "key-name-with-dashes"}}'.