Créer un espace de nommage (namespace), "manuellement" ou à l'aide d'un fichier, l'utiliser puis, le supprimer (https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/) : $ kubectl create namespace toto namespace/toto created $ kubectl get namespaces NAME STATUS AGE LABELS default Active 42h kube-public Active 42h kube-system Active 42h toto Active 1m $ wget https://k8s.io/examples/admin/namespace-prod.json $ kubectl create --dry-run --validate -f namespace-prod.json # les options --dry-run et --validate ne sont pas "complétées" namespace/production created (dry run) $ echo CORRUPTION >> namespace-prod.json $ kubectl create --dry-run --validate -f namespace-prod.json namespace/production created (dry run) error: error parsing namespace-prod.json: json: line 10: invalid character 'C' looking for beginning of value $ sed -i /CORRUPT/d namespace-prod.json $ kubectl create -f namespace-prod.json namespace/production created $ kubectl get ns production --show-labels NAME STATUS AGE LABELS production Active 5m12s name=production $ kubectl get ns --selector=name=production # ces variantes de syntaxe (-l et == à la place de =) sont STRICTEMENT équivalentes : ... get ns -l name==production NAME STATUS AGE production Active 13m $ kubectl run -n toto essains --image=nginx:alpine # "utilisation" d'un espace de nommage $ kubectl get pods -n toto NAME READY STATUS RESTARTS AGE essains-bfd8f8976-l4875 1/1 Running 0 17s Déterminer et changer l'espace de nommage courant : $ kubectl config view | grep namespace: # juste pour pouvoir comparer un peu plus loin entre "avant" et "après" # RIEN ! Je suppose que l'espace de nommage par défaut est "codé en dur" # Exprimé autrement, l'absence de désignation d'espace équivaut à l'espace par défaut "default" $ kubectl config current-context kubernetes-admin@kubernetes # l'espace de nommage par défaut est (si je comprends bien) forcément associé à un contexte $ kubectl config get-contexts # et si d'aventure il s'avère nécessaire de changer de contexte : kubectl config use-context CURRENT NAME CLUSTER AUTHINFO NAMESPACE # ET S'IL FAUT CRÉER UN NOUVEAU CONTEXTE : kubectl config set-context [options] * kubernetes-admin@kubernetes kubernetes kubernetes-admin # ET L'INVERSE : kubectl config delete-context $ kubectl config set-context $(kubectl config current-context) --namespace=toto # peut-être une "ancienne" façon de faire (bien que présentée dans la documentation officielle OU, une variante plus simple et plus concise qui semble # sur le site de Kubernetes pour la dernière version, la 1.13 en janvier 2019, aboutir exactement au même résultat # le document ayant fait l'objet d'une mise à jour le 26 octobre 2018) $ kubectl config set-context --current --namespace=toto Context "kubernetes-admin@kubernetes" modified. $ kubectl config view | grep namespace: namespace: toto $ kubectl get pods NAME READY STATUS RESTARTS AGE essains-bfd8f8976-l4875 1/1 Running 0 90m # effectivement le seul pod évoluant dans l'espace "toto" $ kubectl get pods -n default # pour voir les pods évoluant dans l'espace de nommage "default" (même si ce dernier n'apparaissait pas explicitement dans la définition du contexte) $ kubectl config set-context --current --namespace= # pour revenir à l'espace de nommage par défaut $ kubectl config view | grep namespace: # juste pour pouvoir comparer un peu plus loin entre "avant" et "après" # RIEN (à nouveau, c'est normal) $ kubectl delete namespaces toto # ATTENTION ! Cela détruit INCONDITIONNELLEMENT et SANS AVERTISSEMENT les ressources associées à cet espace namespace "toto" deleted VOIR SI CE QUI EST SUIT EST REDONDANT AVEC CE QUI PRÉCÈDE ================= Augmentation / amélioration du cloisonnement (les espaces de nommage) : $ kubectl get ns $ kubectl create ns prod $ kubectl create ns qualif kubectl create -f serveur_web.yaml --namespace qualif kubectl get po -o wide kubectl get po -o wide --namespace qualif kubectl get po -o wide --all-namespaces kubectl delete ns qualif # ATTENTION : ne se contente pas de supprimer le nom "qualif" MAIS AUSSI l'ensemble des ressources que ce nom qualifiait (et ce SANS demande de confirmation ni même un avertissement)