Comment créer des espaces de noms dans Kubernetes

Un espace de noms est utile lorsque plusieurs équipes utilisent le même cluster. Il est utilisé lorsqu’il y a un risque de collision de noms. Il peut être un mur virtuel entre plusieurs clusters. Par exemple, on ne peut pas avoir de pods portant le même nom dans un cluster Kubernetes, mais en utilisant un Namespace, on peut diviser virtuellement le cluster et avoir des pods portant le même nom.

Voici quelques-unes des fonctionnalités importantes d’un Namespace.

  1. Il aide à la communication entre pods en utilisant le même espace de noms.
  2. Il agit comme un cluster virtuel qui peut se situer au-dessus du même cluster physique.
  3. Il fournit une séparation logique entre les équipes et leurs environnements.

Dans cet article, nous allons créer un espace de noms et créer un pod dans l’espace de noms nouvellement créé. Nous verrons également comment un espace de noms peut être défini comme espace de noms par défaut.

Pré-requis

  1. Cluster Kubernetes avec au moins 1 nœud de travail.
    Si tu veux apprendre à créer un cluster Kubernetes, cliqueici. Ce guide t’aidera à créer un cluster Kubernetes avec 1 Maître et 2 Nœuds sur des Instances EC2 AWS Ubuntu 18.04.

Ce que nous allons faire

  1. Créer des espaces de noms

Créer des espaces de noms

Pour répertorier tous les espaces de noms disponibles dans le cluster Kubernetes, exécute la commande suivante.

kubectl get namespace #Get all namespace in the cluster

get-namespaces

Essayons maintenant de créer un pod dans un espace de noms particulier qui n’existe pas.

Pour créer un pod dans l’espace de noms « test-env », exécute la commande suivante.

kubectl run nginx --image=nginx --namespace=test-env #Try to create a pod in the namespace that does not exist.

Le pod ne sera pas créé dans l’espace de noms qui n’existe pas, nous devons donc d’abord créer un espace de noms.

Pour créer un espace de nom « test-env », exécute la commande suivante.

kubectl create namespace test-env #Create a namespace
kubectl get namespace #Get a list of namespaces

Créer un espace de noms

Nous avons maintenant un espace de nom dans lequel nous voulons créer un pod.

Pour créer un pod dans l’espace de nom que nous avons créé, passe l’option –namespace=test-env à la commande.

kubectl run nginx --image=nginx --namespace=test-env #Create a pod in the namespace.

Si tu essaies d’obtenir des pods sans spécifier l’espace de noms, tu n’obtiendras pas les détails du pod.

kubectl get pods #Get a list of pods

Pour obtenir les détails du pod qui appartient à l’espace de noms « test-env », utilise la commande suivante.

kubectl get pods --namespace=test-env #Get a list of pods in the specified namespace

créer-pod-dans-l'espace-nom-créé

Si tu veux définir ton espace de noms comme espace de noms par défaut, il ne sera pas nécessaire de spécifier l’option espace de noms dans la commande, utilise la commande suivante.

kubectl config set-context --current --namespace=test-env #Set default namespace

Maintenant, il n’est pas nécessaire de spécifier l’espace de noms dans la commande pour obtenir les détails du pod.

kubectl get pods #Get a list of pods from the default namespace 

set-the-namespace-in-config

Pour passer à l’espace de noms par défaut, utilise la commande suivante.

kubectl config set-context --current --namespace=default #Check the namespace to default
kubectl get pods #Get a list of pods

revert-back-to-default-namespace

Pour vérifier quel est l’espace de noms par défaut, utilise les commandes suivantes.

kubectl config view --minify | grep namespace: #Extract the namespace from the kubernetes config file.
kubectl config set-context --current --namespace=test-env #Set default namespace in the config file.
kubectl config view --minify | grep namespace:

Vérifier l'espace de nom actuel

Pour vérifier quelles ressources Kubernetes sont un espace de noms, exécute la commande suivante.

kubectl api-resources --namespaced=true #Get Kubernetes objects which can be in a namespaces

ressources-avec-espace-nom

Pour voir quelles ressources Kubernetes ne sont pas dans un espace de noms, utilise la commande suivante.

kubectl api-resources --namespaced=false #Get a list of Kubernetes objects that can never be in a namespace

ressources-sans-espace-nom

Tu peux obtenir des détails sur l’espace de noms à l’aide de la commande mentionnée ci-dessous.

kubectl get namespaces #Get a list of namespaces.
kubectl describe namespace test-env #Get details of a namespace.

describe-namespace

Un espace de noms peut aussi être créé à l’aide d’un fichier .yml.

vim namespace-using-file.yml #Create a namespace definition file

create-namespace-using-yml-file

Exécute la commande suivante pour créer un espace de noms spécifié dans le fichier de définition des objets.

kubectl create -f namespace-using-file.yml #Create a namespace using a .yml file
kubectl get namespaces #Get a list of namespaces

get-namespaces

Lorsque tu n’as plus besoin de ton espace de noms, tu peux simplement le supprimer à l’aide de la commande suivante.

kubectl get namespaces #Get a list of namespaces
kubectl delete namespaces env-prod test-env #Delete a namespace
kubectl get namespaces #Get a list of namespaces

delete-namespaces

Conclusion

Dans cet article, nous avons appris à connaître les espaces de noms, à créer un espace de noms et à modifier l’espace de noms par défaut, à vérifier les ressources Kubernetes qui sont et ne sont pas dans un espace de noms. Nous avons également vu comment un objet Kubernetes, ici pod, peut être créé dans un espace de noms de notre choix.

Vous aimerez aussi...