Premiers pas avec Kubectl pour gérer les clusters Kubernetes –
Kubernetes est un moteur d’orchestration de conteneurs qui vous permet de déployer des charges de travail conteneurisées de manière évolutive. L’utilitaire de ligne de commande officiel, kubectl
, permet de contrôler vos clusters et les ressources qu’ils contiennent.
Sommaire
Installer Kubectl
kubectl
est pris en charge sur Linux, macOS et Windows. Plusieurs formats de distribution sont proposés en fonction de la plateforme. Les binaires précompilés sont produits pour tous les systèmes d’exploitation pris en charge et mis à disposition via des liens de téléchargement directs.
Vous trouverez également kubectl
dans les gestionnaires de packages Snap, Homebrew, Chocolatey et Scoop. Il peut être installé via apt
et yum
en ajoutant le référentiel Google Cloud à votre système. Pour terminer, kubectl
est également fourni avec le SDK Google Cloud – si vous l’avez déjà installé, exécutez gcloud components install kubectl
pour télécharger l’outil.
Vous devriez vous référer au guide d’installation officiel pour voir les options disponibles pour votre système. Les étapes d’installation peuvent changer au fil du temps, alors consultez la documentation avant de réinstaller kubectl
.
Configuration
La configuration est stockée dans le .kube
répertoire dans votre dossier personnel. Le fichier de configuration par défaut est ~/.kube/config
.
Vous pouvez ajouter des fichiers supplémentaires à ce dossier. Ils seront fusionné ensemble dans la configuration finale utilisée pendant l’exécution. Si vous souhaitez utiliser un fichier de configuration spécifique ou un ensemble de fichiers différent, vous devez définir le --kubeconfig
drapeau ou le KUBECONFIG
variable d’environnement.
kubectl --kubeconfig=/example/file get pods # OR KUBECONFIG=/example/file kubectl get pods
Tous les chemins écrits dans les fichiers de configuration sont résolus par rapport au propre emplacement du fichier. Les chemins passés aux indicateurs de ligne de commande sont résolus par rapport à votre répertoire de travail. Vous pouvez visualiser la configuration finale qui sera utilisée par kubectl
en exécutant kubectl config view
.
Les indicateurs de ligne de commande sont pris en charge pour certains paramètres. Ceux-ci vous permettent de remplacer vos fichiers de configuration. Les drapeaux disponibles incluent --server
(URL du cluster), --username
(nom d’utilisateur pour se connecter en tant que), --password
, --token
(Jeton API) et --namespace
(sélectionnez l’espace de noms du cluster avec lequel interagir).
Contextes
Dans les fichiers de configuration, vous pouvez définir plusieurs «contextes». Ceux-ci vous permettent de regrouper les «paramètres d’accès» fréquemment utilisés, tels que l’URL du cluster et les comptes utilisateur, sous une référence nommée.
Pour configurer les paramètres par contexte, utilisez kubectl config set-context my-context --cluster=my-app --namespace=production
. Cet exemple créerait un nouveau contexte appelé my-context
qui définit les paramètres par défaut pour le cluster Kubernetes et l’espace de noms avec lesquels travailler.
Les contextes sont appliqués à l’aide du kubectl config use-context my-context
commander. Toute autre invocation de kubectl
utiliserait les paramètres du my-context
contexte, vous seriez donc connecté au my-app
cluster dans le production
espace de noms.
L’utilisation efficace des contextes simplifie considérablement les interactions avec kubectl
. Sans eux, vous devez créer manuellement des fichiers de configuration uniques qui sont commutés à l’aide du KUBECONFIG
indicateur ou variable d’environnement.
Interagir avec votre cluster
Les plus kubectl
les commandes utilisent le même format de base:
kubectl command type name
Le command
est l’opération que vous souhaitez effectuer – généralement create
, get
, describe
ou delete
. Le type
est le type de ressource avec laquelle vous allez interagir, par exemple pod
ou deployment
. Vous pouvez utiliser la forme singulière ou plurielle.
Le name
composant doit être le nom de la ressource que vous référencez. Vous pouvez spécifier plusieurs noms, séparés par des espaces, pour obtenir une sortie en bloc. Il est également possible d’utiliser le -f
indicateur pour spécifier le chemin d’accès à un fichier JSON ou YAML contenant une liste de noms de ressources.
Voici quelques exemples de commandes, qui fonctionnent toutes dans le contexte actuellement sélectionné:
kubectl get pods
– Obtenez les détails de tous vos podskubectl get pod my-pod
– Obtenez les détails du pod appelémy-pod
kubectl get pod my-pod another-pod
– Obtenez les détails des pods nommésmy-pod
etanother-pod
kubectl get pod/my-pod deployment/my-deployment
– Récupérer les détails du pod appelémy-pod
et le déploiement appelémy-deployment
– cette variation de syntaxe vous permet de récupérer plusieurs types de ressources avec une seule commandekubectl delete pod my-pod
– Supprimer le pod appelémy-pod
kubectl logs my-pod
– Obtenez la sortie du journal dumy-pod
cossekubectl apply -f ./manifest.yml
– Appliquez un correctif à votre cluster à partir du manifeste Kubernetes stocké dansmanifest.yml
Les commandes sont disponibles pour tous les types de ressources proposés par votre cluster Kubernetes. Cela s’étend même aux définitions de ressources personnalisées; ils s’intègrent à l’API Kubernetes et obtiennent leurs propres points de terminaison RESTful qui kubectl
Peut accéder.
Complet kubectl
La référence des commandes est disponible dans la documentation de Kubernetes. Il existe également une aide-mémoire des commandes couramment utilisées lorsque vous travaillez avec des types de ressources typiques.
Formats de sortie
La sortie est généralement émise sous forme de liste ou de tableau formatée. Cela présente les informations dans un style lisible par l’homme que vous pouvez parcourir rapidement.
Plusieurs options de sortie alternatives sont disponibles. Vous pouvez passer à un autre formateur en utilisant le -o
(ou --output
) drapeau.
Le json
Le style de sortie affiche la représentation JSON de la ressource API Kubernetes à laquelle vous accédez. De même, yaml
vous donne les données de la ressource sous forme de représentation YAML.
Lorsque vous utilisez le style lisible par l’homme, vous pouvez spécifier les colonnes du tableau à inclure à l’aide du custom-columns
style. Fournissez une liste séparée par des virgules des paires de références de nom de colonne et de valeur:
kubectl get pods -o custom-columns=NAME:.metadata.name,NAMESPACE:.metadata.namespace
Cela afficherait le nom et l’espace de noms de chaque pod dans des colonnes étiquetées NAME
et NAMESPACE
respectivement. Au lieu d’écrire des colonnes en ligne dans votre commande, vous pouvez les définir dans un fichier et le transmettre à --custom-columns-file
.
Il existe un support intégré pour trier la sortie en fonction de la valeur d’un champ particulier. Utilisation --sort-by
, en passant la référence du champ:
kubectl get pods --sort-by=.metadata.name
Le tri prend en charge les expressions JSONPath. Ceux-ci peuvent également être utilisés pour construire des requêtes filtrées à l’aide du jsonpath
formateur. JSONPath est un langage de requête pour les objets JSON qui vous permet de manipuler plus directement les requêtes de l’API Kubernetes dans kubectl
.
Utilisation dans les scripts
kubectl
est destiné à la fois à l’interaction humaine directe et à l’invocation programmatique via des scripts. Il existe quelques bonnes pratiques à suivre lors de la création de scripts kubectl
pour assurer une sortie prévisible.
Qualifiez complètement les références aux types de ressources afin qu’elles soient épinglées à une version particulière – par exemple pods.v1.core/my-job
au lieu de pods my-job
. Cela minimise le risque que les mises à jour de Kubernetes interrompent votre script.
La configuration d’accès doit être transmise directement de votre script à kubectl
, en vous assurant de ne pas dépendre de l’environnement extérieur. Cela réduit encore le risque de casse dû à kubectl
mises à jour – des fonctionnalités telles que les contextes peuvent changer avec le temps, alors que les arguments de ligne de commande de base le seront moins.
Enfin, assurez-vous de désactiver la sortie lisible par l’homme et d’utiliser le formateur JSON ou YAML à la place. Cela donne à votre script des données orientées machine avec lesquelles travailler, vous n’aurez donc pas besoin d’analyser les tables vous-même.
Conclusion
kubectl
est la solution incontournable pour gérer un cluster Kubernetes. C’est un outil complet avec une prise en charge complète des capacités de la plate-forme.
L’étendue des fonctionnalités permet une longue liste de commandes, mais la séparation claire entre le type d’action, le type de ressource et le nom de la ressource permet de garder une utilisation simple et mémorable. En cas de doute, vous pouvez installer l’auto-complétion du shell pour vous aider à trouver une commande appropriée.