--- title: Aide-mémoire kubectl description: Cheatsheet kubectl aide-mémoire reviewers: - rbenzair - feloy - remyleone content_type: concept card: name: reference weight: 30 --- Voir aussi : [Aperçu Kubectl](/docs/reference/kubectl/overview/) et [Guide JsonPath](/docs/reference/kubectl/jsonpath). Cette page donne un aperçu de la commande `kubectl`. # Aide-mémoire kubectl ## Auto-complétion avec Kubectl ### BASH ```bash source <(kubectl completion bash) # active l'auto-complétion pour bash dans le shell courant, le paquet bash-completion devant être installé au préalable echo "source <(kubectl completion bash)" >> ~/.bashrc # ajoute l'auto-complétion de manière permanente à votre shell bash ``` Vous pouvez de plus déclarer un alias pour `kubectl` qui fonctionne aussi avec l'auto-complétion : ```bash alias k=kubectl complete -o default -F __start_kubectl k ``` ### ZSH ```bash source <(kubectl completion zsh) # active l'auto-complétion pour zsh dans le shell courant echo "[[ $commands[kubectl] ]] && source <(kubectl completion zsh)" >> ~/.zshrc # ajoute l'auto-complétion de manière permanente à votre shell zsh ``` ## Contexte et configuration de Kubectl Indique avec quel cluster Kubernetes `kubectl` communique et modifie les informations de configuration. Voir la documentation [Authentification multi-clusters avec kubeconfig](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) pour des informations détaillées sur le fichier de configuration. Information. Voir la documentation [Authentification à travers des clusters avec kubeconfig](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/) pour des informations détaillées sur le fichier de configuration. ```bash kubectl config view # Affiche les paramètres fusionnés de kubeconfig # Utilise plusieurs fichiers kubeconfig en même temps et affiche la configuration fusionnée KUBECONFIG=~/.kube/config:~/.kube/kubconfig2 kubectl config view # Affiche le mot de passe pour l'utilisateur e2e kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}' kubectl config view -o jsonpath='{.users[].name}' # Affiche le premier utilisateur kubectl config view -o jsonpath='{.users[*].name}' # Affiche une liste d'utilisateurs kubectl config get-contexts # Affiche la liste des contextes kubectl config current-context # Affiche le contexte courant (current-context) kubectl config use-context my-cluster-name # Définit my-cluster-name comme contexte courant # Ajoute un nouveau cluster à votre kubeconf, prenant en charge l'authentification de base (basic auth) kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword # Enregistre de manière permanente le namespace pour toutes les commandes kubectl suivantes dans ce contexte kubectl config set-context --current --namespace=ggckad-s2 # Définit et utilise un contexte qui utilise un nom d'utilisateur et un namespace spécifiques kubectl config set-context gce --user=cluster-admin --namespace=foo \ && kubectl config use-context gce kubectl config unset users.foo # Supprime l'utilisateur foo ``` ## Apply `apply` gère des applications en utilisant des fichiers définissant des ressources Kubernetes. Elle crée et met à jour des ressources dans un cluster en exécutant `kubectl apply`. C'est la manière recommandée de gérer des applications Kubernetes en production. Voir le [Livre Kubectl](https://kubectl.docs.kubernetes.io). ## Création d'objets Les manifests Kubernetes peuvent être définis en YAML ou JSON. Les extensions de fichier `.yaml`, `.yml`, et `.json` peuvent être utilisés. ```bash kubectl apply -f ./my-manifest.yaml # Crée une ou plusieurs ressources kubectl apply -f ./my1.yaml -f ./my2.yaml # Crée depuis plusieurs fichiers kubectl apply -f ./dir # Crée une ou plusieurs ressources depuis tous les manifests dans dir kubectl apply -f https://git.io/vPieo # Crée une ou plusieurs ressources depuis une url kubectl create deployment nginx --image=nginx # Démarre une instance unique de nginx kubectl explain pods # Affiche la documentation pour les manifests pod # Crée plusieurs objets YAML depuis l'entrée standard (stdin) cat < pod.yaml kubectl attach my-pod -i # Attache à un conteneur en cours d'exécution kubectl port-forward my-pod 5000:6000 # Écoute le port 5000 de la machine locale et forwarde vers le port 6000 de my-pod kubectl exec my-pod -- ls / # Exécute une commande dans un pod existant (cas d'un seul conteneur) kubectl exec my-pod -c my-container -- ls / # Exécute une commande dans un pod existant (cas multi-conteneurs) kubectl top pod POD_NAME --containers # Affiche les métriques pour un pod donné et ses conteneurs ``` ## Interaction avec des Noeuds et Clusters ```bash kubectl cordon mon-noeud # Marque mon-noeud comme non assignable (unschedulable) kubectl drain mon-noeud # Draine mon-noeud en préparation d'une mise en maintenance kubectl uncordon mon-noeud # Marque mon-noeud comme assignable kubectl top node mon-noeud # Affiche les métriques pour un noeud donné kubectl cluster-info # Affiche les adresses du master et des services kubectl cluster-info dump # Affiche l'état courant du cluster sur stdout kubectl cluster-info dump --output-directory=/path/to/cluster-state # Affiche l'état courant du cluster sur /path/to/cluster-state # Si une teinte avec cette clé et cet effet existe déjà, sa valeur est remplacée comme spécifié. kubectl taint nodes foo dedicated=special-user:NoSchedule ``` ### Types de ressources Liste tous les types de ressources pris en charge avec leurs noms courts (shortnames), [groupe d'API (API group)](/docs/concepts/overview/kubernetes-api/#api-groups), si elles sont [cantonnées à un namespace (namespaced)](/docs/concepts/overview/working-with-objects/namespaces), et leur [Genre (Kind)](/docs/concepts/overview/working-with-objects/kubernetes-objects): ```bash kubectl api-resources ``` Autres opérations pour explorer les ressources de l'API : ```bash kubectl api-resources --namespaced=true # Toutes les ressources cantonnées à un namespace kubectl api-resources --namespaced=false # Toutes les ressources non cantonnées à un namespace kubectl api-resources -o name # Toutes les ressources avec un affichage simple (uniquement le nom de la ressource) kubectl api-resources -o wide # Toutes les ressources avec un affichage étendu (alias "wide") kubectl api-resources --verbs=list,get # Toutes les ressources prenant en charge les verbes de requête "list" et "get" kubectl api-resources --api-group=extensions # Toutes les ressources dans le groupe d'API "extensions" ``` ### Formattage de l'affichage Pour afficher les détails sur votre terminal dans un format spécifique, utilisez l'option `-o` (ou `--output`) avec les commandes `kubectl` qui la prend en charge. Format d'affichage | Description --------------| ----------- `-o=custom-columns=` | Affiche un tableau en spécifiant une liste de colonnes séparées par des virgules `-o=custom-columns-file=` | Affiche un tableau en utilisant les colonnes spécifiées dans le fichier `` `-o=json` | Affiche un objet de l'API formaté en JSON `-o=jsonpath=