Introduction
kubectl est l'outil en ligne de commande que vous utiliserez tout au long de votre travail sur Kubernetes dans le cadre de la certification CKAD. Avant de créer des Pods, des Deployments, des Services ou des objets de configuration, vous devez savoir à quel cluster kubectl est connecté et quel espace de noms (namespace) vos commandes ciblent par défaut.
Dans ce laboratoire, vous allez inspecter le contexte Kubernetes actif, lister les espaces de noms, définir un espace de noms d'entraînement comme espace de noms actuel et créer une petite ConfigMap pour observer comment les objets sont isolés par espace de noms. Les vérifications se concentrent sur l'état clé de Kubernetes que vous créez, et non sur le formatage exact de la sortie des commandes.
Confirmer l'accès à kubectl
Dans cette étape, vous allez confirmer que kubectl peut atteindre le cluster Kubernetes préparé et identifier le contexte utilisé par vos commandes.
Commencez dans /home/labex/project. La commande mkdir -p crée le répertoire s'il est absent et ne fait rien s'il existe déjà. Ce cours conserve le travail de l'apprenant dans ce répertoire afin que les laboratoires suivants puissent créer des manifestes et des fichiers auxiliaires dans un emplacement prévisible.
mkdir -p /home/labex/project
cd /home/labex/project
Un contexte Kubernetes est un choix de connexion enregistré dans votre fichier kubeconfig. Il indique à kubectl quel cluster, quelles informations d'identification utilisateur et quel espace de noms par défaut utiliser. Vérifiez le contexte actif avant d'exécuter toute commande modifiant des objets.
kubectl config current-context
Vous devriez voir le nom du profil Kubernetes LabEx préparé :
labex-v135
Pour disposer d'un point de départ prévisible, définissez l'espace de noms du contexte actuel sur default. Vous ne créez pas d'objet ici ; vous indiquez simplement à kubectl quel espace de noms utiliser lorsqu'une commande ultérieure omet l'option --namespace.
kubectl config set-context --current --namespace=default
La sortie doit confirmer que le contexte actuel a été mis à jour :
Context "labex-v135" modified.
Le profil Kubernetes peut avoir besoin d'un court instant pour terminer son démarrage après l'apparition de la machine virtuelle. Listez d'abord les nœuds du cluster. Si cette commande indique que le serveur API n'est pas encore prêt, attendez quelques secondes et exécutez à nouveau la même commande jusqu'à ce que vous voyiez un nœud à l'état Ready.
kubectl get nodes --request-timeout=5s
La sortie attendue inclura un nœud prêt et une version de Kubernetes :
NAME STATUS ROLES AGE VERSION
labex-v135 Ready control-plane ... v1.35...
Demandez maintenant au serveur API des informations de base sur le cluster. Cela prouve que votre terminal ne se contente pas de trouver le binaire kubectl, mais qu'il est réellement authentifié auprès d'un cluster en cours d'exécution.
kubectl cluster-info
La sortie doit mentionner un point de terminaison du plan de contrôle Kubernetes :
Kubernetes control plane is running at ...
...
Lire les espaces de noms
Dans cette étape, vous allez inspecter les espaces de noms Kubernetes et vérifier quel espace de noms votre contexte actuel utilise par défaut.
Les espaces de noms sont un moyen de diviser les objets Kubernetes dans des portées distinctes au sein d'un même cluster. De nombreuses ressources d'application, telles que les Pods, les Deployments, les Services, les Secrets et les ConfigMaps, résident dans un seul et unique espace de noms.
Listez les espaces de noms qui existent déjà dans le cluster :
kubectl get namespaces
Vous devriez voir les espaces de noms système tels que kube-system et l'espace de noms d'application standard default :
NAME STATUS AGE
default Active ...
kube-system Active ...
...
Votre contexte peut également stocker un espace de noms par défaut. Lorsque vous exécutez une commande nécessitant un espace de noms sans l'option --namespace, kubectl utilise cet espace de noms par défaut. L'option --minify affiche uniquement le contexte actif, et l'expression jsonpath n'imprime que le champ de l'espace de noms.
kubectl config view --minify --output 'jsonpath={..namespace}'; echo
Comme vous avez défini l'espace de noms du contexte à l'étape précédente, cela affiche default :
default
Vous pouvez toujours remplacer l'espace de noms actuel pour une seule commande avec --namespace. Par exemple, inspectez les Pods dans l'espace de noms système Kubernetes sans changer votre contexte :
kubectl get pods --namespace kube-system
Les noms exacts des Pods peuvent varier, mais la commande doit renvoyer les Pods système tels que CoreDNS, les composants réseau ou de stockage :
NAME READY STATUS RESTARTS AGE
... ... ... ... ...
Sélectionner un espace de noms d'entraînement
Dans cette étape, vous allez créer un espace de noms pour ce laboratoire et en faire l'espace de noms par défaut pour les commandes ultérieures.
Créez un espace de noms nommé ckad-prep-contexts. Les noms des espaces de noms font partie de l'identité de l'objet : une ConfigMap nommée app-settings dans un espace de noms est différente d'une ConfigMap portant le même nom dans un autre espace de noms.
kubectl create namespace ckad-prep-contexts
La commande de création doit confirmer le nouvel espace de noms :
namespace/ckad-prep-contexts created
Mettez maintenant à jour uniquement le contexte actuel afin que les commandes sans --namespace ciblent ckad-prep-contexts. L'option --current signifie « modifier le contexte que j'utilise actuellement » au lieu de nommer un contexte manuellement.
kubectl config set-context --current --namespace=ckad-prep-contexts
La sortie confirme que le contexte a été modifié :
Context "labex-v135" modified.
Vérifiez à nouveau l'espace de noms stocké dans le contexte actif :
kubectl config view --minify --output 'jsonpath={..namespace}'; echo
Il devrait maintenant afficher :
ckad-prep-contexts
Exécutez une liste simple de Pods sans --namespace. Comme l'espace de noms actuel est désormais ckad-prep-contexts, cette commande effectue la recherche dans votre espace de noms d'entraînement. Il est normal que l'espace de noms soit vide.
kubectl get pods
Sortie attendue :
No resources found in ckad-prep-contexts namespace.
Observer la portée des espaces de noms
Dans cette étape, vous allez créer une petite ConfigMap et l'utiliser pour observer comment l'espace de noms actuel affecte la recherche d'objets.
Une ConfigMap stocke des données de configuration non sensibles pour les applications. C'est un objet léger, rapide à créer et associé à un espace de noms, ce qui le rend utile pour s'entraîner au comportement des espaces de noms avant de commencer à déployer de vraies applications.
Créez une ConfigMap nommée app-settings sans passer l'option --namespace. Comme vous avez sélectionné ckad-prep-contexts à l'étape précédente, Kubernetes la crée dans cet espace de noms.
kubectl create configmap app-settings --from-literal=mode=prep
La commande doit indiquer :
configmap/app-settings created
Listez la ConfigMap sans indicateur d'espace de noms. Cela utilise l'espace de noms du contexte actuel.
kubectl get configmap app-settings
Sortie attendue :
NAME DATA AGE
app-settings 1 ...
Demandez maintenant le même objet avec un espace de noms explicite. Cela devrait renvoyer la même ConfigMap car ckad-prep-contexts est l'endroit où vous l'avez créée.
kubectl get configmap app-settings --namespace ckad-prep-contexts
Enfin, vérifiez l'espace de noms default. L'option --ignore-not-found permet à kubectl de se terminer avec succès et de ne rien afficher lorsque l'objet n'existe pas, ce qui est utile pour un laboratoire guidé car l'absence est le résultat attendu ici.
kubectl get configmap app-settings --namespace default --ignore-not-found
L'absence de sortie signifie que la ConfigMap n'a pas été créée dans default. Vous avez maintenant constaté l'effet pratique de la définition de l'espace de noms dans votre contexte actuel.
Résumé
Vous avez confirmé que kubectl peut atteindre le cluster Kubernetes préparé, identifié le contexte actif, inspecté les espaces de noms existants, modifié l'espace de noms du contexte actuel et créé une ConfigMap pour observer la portée des espaces de noms. Ces bases constituent le fondement des futurs laboratoires de préparation à la certification CKAD, où vous créerez des objets d'application et devrez savoir exactement où chaque objet est créé et inspecté.


