Kubectl est une interface en ligne de commande qui permet d'exécuter des commandes sur des clusters Kubernetes. `kubectl` recherche un fichier appelé config dans le répertoire $HOME/.kube. Vous pouvez spécifier d'autres fichiers [kubeconfig](https://kube
rnetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/) en définissant la variable d'environnement KUBECONFIG ou en utilisant le paramètre [`--kubeconfig`](https://kubernetes.io/docs/concepts/configuration/organize-cluster-access-kubeconfig/).
Cet aperçu couvre la syntaxe `kubectl`, décrit les opérations et fournit des exemples classiques. Pour des détails sur chaque commande, incluant toutes les options et sous-commandes autorisées, voir la documentation de référence de [kubectl](/docs/reference/generated/kubectl/kubectl-commands/). Pour des instructions d'installation, voir [installer kubectl](/docs/tasks/kubectl/install/).
{{% /capture %}}
{{% capture body %}}
## Syntaxe
Utilisez la syntaxe suivante pour exécuter des commandes `kubectl` depuis votre fenêtre de terminal :
```shell
kubectl [commande] [TYPE] [NOM] [flags]
```
où `commande`, `TYPE`, `NOM` et `flags` sont :
*`commande`: Indique l'opération que vous désirez exécuter sur une ou plusieurs ressources, par exemple `create`, `get`, `describe`, `delete`.
*`TYPE`: Indique le [type de ressource](#resource-types). Les types de ressources sont insensibles à la casse et vous pouvez utiliser les formes singulier, pluriel ou abrégé. Par exemple, les commandes suivantes produisent le même résultat :
```shell
$ kubectl get pod pod1
$ kubectl get pods pod1
$ kubectl get po pod1
```
*`NOM`: Indique le nom de la ressource. Les noms sont sensibles à la casse. Si le nom est omis, des détails pour toutes les ressources sont affichés, par exemple `$ kubectl get pods`.
En effectuant une opération sur plusieurs ressources, vous pouvez soit indiquer chaque ressource par leur type et nom soit indiquer un ou plusieurs fichiers :
* Pour indiquer des ressources par leur type et nom :
* Pour regrouper des ressources si elles ont toutes le même type : `TYPE1 nom1 nom2 nom<#>`.<br/>
Example: `$ kubectl get pod exemple-pod1 exemple-pod2`
* Pour indiquer plusieurs types de ressources individuellement : `TYPE1/nom1 TYPE1/nom2 TYPE2/nom3 TYPE<#>/nom<#>`.<br/>
Exemple: `$ kubectl get pod/exemple-pod1 replicationcontroller/exemple-rc1`
* Pour indiquer des ressources avec un ou plusieurs fichiers : `-f fichier1 -f fichier2 -f fichier<#>`
* [Utilisez YAML plutôt que JSON](/docs/concepts/configuration/overview/#general-configuration-tips), YAML tendant à être plus facile à utiliser, particulièrement pour des fichiers de configuration.<br/>
Exemple: `$ kubectl get pod -f ./pod.yaml`
*`flags`: Indique des flags optionnels. Par exemple, vous pouvez utiliser les flags `-s` ou `--server` pour indiquer l'adresse et le port de l'API server Kubernetes.<br/>
{{<caution>}}
Les flags indiqués en ligne de commande écrasent les valeurs par défaut et les variables d'environnement correspondantes.
{{</caution>}}
Si vous avez besoin d'aide, exécutez `kubectl help` depuis la fenêtre de terminal.
## Opérations
Le tableau suivant inclut une courte description et la syntaxe générale pour chaque opération `kubectl` :
`annotate` | `kubectl annotate (-f FICHIER \| TYPE NOM \| TYPE/NOM) CLE_1=VAL_1 ... CLE_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]` | Ajoute ou modifie les annotations d'une ou plusieurs ressources.
`api-versions` | `kubectl api-versions [flags]` | Liste les versions d'API disponibles.
`apply` | `kubectl apply -f FICHIER [flags]` | Applique un changement de configuration à une ressource depuis un fichier ou stdin.
`attach` | `kubectl attach POD -c CONTENEUR [-i] [-t] [flags]` | Attache à un conteneur en cours d'exécution soit pour voir la sortie standard soit pour interagir avec le conteneur (stdin).
`autoscale` | `kubectl autoscale (-f FICHIER \| TYPE NOM \| TYPE/NOM) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU] [flags]` | Scale automatiquement l'ensemble des pods gérés par un replication controller.
`cluster-info` | `kubectl cluster-info [flags]` | Affiche les informations des endpoints du master et des services du cluster.
`config` | `kubectl config SOUS-COMMANDE [flags]` | Modifie les fichiers kubeconfig. Voir les sous-commandes individuelles pour plus de détails.
`create` | `kubectl create -f FICHIER [flags]` | Crée une ou plusieurs ressources depuis un fichier ou stdin.
`delete` | `kubectl delete (-f FICHIER \| TYPE [NOM \| /NOM \| -l label \| --all]) [flags]` | 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.
`describe` | `kubectl describe (-f FICHIER \| TYPE [PREFIXE_NOM \| /NOM \| -l label]) [flags]` | Affiche l'état détaillé d'une ou plusieurs ressources.
`diff` | `kubectl diff -f FICHIER [flags]` | Diff un fichier ou stdin par rapport à la configuration en cours (**BETA**)
`edit` | `kubectl edit (-f FICHIER \| TYPE NOM \| TYPE/NOM) [flags]` | Édite et met à jour la définition d'une ou plusieurs ressources sur le serveur en utilisant l'éditeur par défaut.
`exec` | `kubectl exec POD [-c CONTENEUR] [-i] [-t] [flags] [-- COMMANDE [args...]]` | Exécute une commande à l'intérieur d'un conteneur dans un pod.
`explain` | `kubectl explain [--recursive=false] [flags]` | Obtient des informations sur différentes ressources. Par exemple pods, nœuds, services, etc.
`expose` | `kubectl expose (-f FICHIER \| TYPE NOM \| TYPE/NOM) [--port=port] [--protocol=TCP\|UDP] [--target-port=nombre-ou-nom] [--name=nom] [--external-ip=ip-externe-ou-service] [--type=type] [flags]` | Expose un replication controller, service ou pod comme un nouveau service Kubernetes.
`get` | `kubectl get (-f FICHIER \| TYPE [NOM \| /NOM \| -l label]) [--watch] [--sort-by=CHAMP] [[-o \| --output]=FORMAT_AFFICHAGE] [flags]` | Liste une ou plusieurs ressources.
`label` | `kubectl label (-f FICHIER \| TYPE NOM \| TYPE/NOM) CLE_1=VAL_1 ... CLE_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]` | Ajoute ou met à jour les labels d'une ou plusieurs ressources.
`logs` | `kubectl logs POD [-c CONTENEUR] [--follow] [flags]` | Affiche les logs d'un conteneur dans un pod.
`patch` | `kubectl patch (-f FICHIER \| TYPE NOM \| TYPE/NOM) --patch PATCH [flags]` | Met à jour un ou plusieurs champs d'une resource en utilisant le processus de merge patch stratégique.
`port-forward` | `kubectl port-forward POD [PORT_LOCAL:]PORT_DISTANT [...[PORT_LOCAL_N:]PORT_DISTANT_N] [flags]` | Transfère un ou plusieurs ports locaux vers un pod.
`proxy` | `kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix] [flags]` | Exécute un proxy vers un API server Kubernetes.
`replace` | `kubectl replace -f FICHIER` | Remplace une ressource depuis un fichier ou stdin.
`rolling-update`| `kubectl rolling-update ANCIEN_NOM_CONTROLEUR ([NOUVEAU_NOM_CONTROLEUR] --image=NOUVELLE_IMAGE_CONTENEUR \| -f NOUVELLE_SPEC_CONTROLEUR) [flags]` | Exécute un rolling update en remplaçant graduellement le replication controller indiqué et ses pods.
`run` | `kubectl run NOM --image=image [--env="cle=valeur"] [--port=port] [--replicas=replicas] [--dry-run=bool] [--overrides=inline-json] [flags]` | Exécute dans le cluster l'image indiquée.
`scale` | `kubectl scale (-f FICHIER \| TYPE NOM \| TYPE/NOM) --replicas=QUANTITE [--resource-version=version] [--current-replicas=quantité] [flags]` | Met à jour la taille du replication controller indiqué.
`version` | `kubectl version [--client] [flags]` | Affiche la version de Kubernetes du serveur et du client.
Rappelez-vous : Pour tout savoir sur les opérations, voir la documentation de référence de [kubectl](/docs/user-guide/kubectl/).
Utilisez les sections suivantes pour savoir comment vous pouvez formater ou ordonner les sorties de certaines commandes.
Pour savoir exactgement quelles commandes prennent en charge quelles options de sortie, voir la documentation de référence de [kubectl](/docs/user-guide/kubectl/).
### Formater la sortie
Le format de sortie par défaut pour toutes les commandes `kubectl` est le format texte lisible par l'utilisateur. Pour afficher des détails dans votre fenêtre de terminal dans un format spécifique, vous pouvez ajouter une des options `-o` ou `--output` à une des commandes `kubectl` les prenant en charge.
`-o custom-columns=<spec>` | Affiche un tableau en utilisant une liste de [colonnes personnalisées](#custom-columns) séparées par des virgules.
`-o custom-columns-file=<fichier>` | Affiche un tableau en utilisant un modèle de [colonnes personnalisées](#custom-columns) dans le fichier `<fichier>`.
`-o json` | Affiche un objet de l'API formaté en JSON.
`-o jsonpath=<modèle>` | Affiche les champs définis par une expression [jsonpath](/docs/reference/kubectl/jsonpath/).
`-o jsonpath-file=<ffichier>` | Affiche les champs définis par une expression [jsonpath](/docs/reference/kubectl/jsonpath/) dans le fichier `<fichier>`.
`-o name` | Affiche uniquement le nom de la ressource et rien de plus.
`-o wide` | Affiche dans le format texte avec toute information supplémentaire. Pour les pods, le nom du nœud est inclus.
`-o yaml` | Affiche un objet de l'API formaté en YAML.
Souvenez-vous : Voir la documentation de référence de [kubectl](/docs/user-guide/kubectl/) pour voir quels formats de sortie sont pris en charge par chaque commande.
Pour définir des colonnes personnalisées et afficher uniquement les détails voulus dans un tableau, vous pouvez utiliser l'option `custom-columns`. Vous pouvez choisir de définir les colonnes personnalisées soit en ligne soit dans un fichier modèle : `-o custom-columns=<spec>` ou `-o custom-columns-file=<fichier>`.
Cela permet un affichage de sortie lisible par l'utilisateur cohérent entre les clients utilisés sur le même cluster, le serveur encapsulant les détails d'affichage.
Cette fonctionnalité est activée par défaut dans `kubectl` version 1.11 et suivantes. Pour la désactiver, ajoutez l'option
`--server-print=false` à la commande `kubectl get`.
##### Exemples
Pour afficher les informations sur le status d'un pod, utilisez une commande similaire à :
```shell
kubectl get pods <nom-pod> --server-print=false
```
La sortie ressemble à :
```shell
NAME READY STATUS RESTARTS AGE
nom-pod 1/1 Running 0 1m
```
### Ordonner les listes d'objets
Pour afficher les objets dans une liste ordonnée dans une fenêtre de terminal, vous pouvez ajouter l'option `--sort-by` à une commande `kubectl` qui la prend en charge. Ordonnez vos objets en spécifiant n'importe quel champ numérique ou textuel avec l'option `--sort-by`. Pour spécifier un champ, utilisez une expression [jsonpath](/docs/reference/kubectl/jsonpath/).
La commande `kubectl get` est habituellement utilisée pour afficher une ou plusieurs ressources d'un même type. Elle propose un ensemble complet d'options permettant de personnaliser le format de sortie avec les options `-o` ou `--output`, par exemple.
Vous pouvez utiliser les options `-w` ou `--watch` pour initier l'écoute des modifications d'un objet particulier. La commande `kubectl describe` est elle plutôt utilisée pour décrire les divers aspects d'une ressource voulue. Elle peut invoquer plusieurs appels d'API à l'API server pour construire une vue complète pour l'utilisateur. Par exemple, la commande `kubectl describe node` retourne non seulement les informations sur les nœuds, mais aussi un résumé des pods s'exécutant dessus, les événements générés pour chaque nœud, etc.nœud
{{</note>}}
`kubectl delete` - Supprime des ressources soit depuis un fichier, stdin, ou en spécifiant des sélecteurs de labels, des noms, des sélecteurs de ressource ou des ressources.
```shell
# Supprime un pod en utilisant le type et le nom spécifiés dans le fichier pod.yaml.
$ kubectl delete -f pod.yaml
# Supprime tous les pods et services ayant le label name=<label-name>.