Espace de noms: regroupement de ressources

Pourquoi l'espace de noms est-il nécessaire

Bien que Label soit bon, si vous n'utilisez que Label, il y aura beaucoup d'étiquettes, et parfois il y aura des chevauchements, et il est très peu pratique d'apporter un tas d'étiquettes pour chaque requête et autres actions. Kubernetes fournit un espace de noms pour l'organisation et la division des ressources. Avec plusieurs espaces de noms, un système contenant de nombreux composants peut être divisé en différents groupes. L'espace de noms peut également être utilisé pour la division multi-tenant, de sorte que plusieurs équipes puissent partager un cluster et les ressources utilisées sont divisées par espace de noms.

Différents espaces de noms peuvent avoir le même nom. La plupart des ressources de Kubernetes peuvent être divisées par espace de noms, mais certaines ne le sont pas. Elles appartiennent à des ressources globales et n'appartiennent pas à un espace de noms et seront progressivement exposées ultérieurement.

Vous pouvez interroger l'espace de noms sous le cluster actuel via la commande suivante.

$ kubectl get ns
NAME               STATUS   AGE
default            Active   36m
kube-node-realease Active   36m
kube-public        Active   36m
kube-system        Active   36m

Jusqu'à présent, nous travaillons tous sous l'espace de noms par défaut. Lorsque kubectl get est utilisé sans spécifier l'espace de noms, l'espace de noms par défaut est celui par défaut.

Regardez ce qu'il y a sous le système kube.

$ kubectl get po --namespace=kube-system
NAME                                      READY   STATUS    RESTARTS   AGE
coredns-7689f8bdf-295rk                   1/1     Running   0          9m11s
coredns-7689f8bdf-h7n68                   1/1     Running   0          11m
everest-csi-controller-6d796fb9c5-v22df   2/2     Running   0          9m11s
everest-csi-driver-snzrr                  1/1     Running   0          12m
everest-csi-driver-ttj28                  1/1     Running   0          12m
everest-csi-driver-wtrk6                  1/1     Running   0          12m
icagent-2kz8g                             1/1     Running   0          12m
icagent-hjz4h                             1/1     Running   0          12m
icagent-m4bbl                             1/1     Running   0          12m

Vous pouvez voir que kube-system a de nombreux pods, parmi lesquels les coredns sont utilisés pour la découverte de services, everest-csi est utilisé pour se connecter aux services de stockage cloud Huawei et icagent est utilisé pour se connecter au système de surveillance cloud Huawei.

Ces applications générales et nécessaires sont placées dans l'espace de noms kube-system et peuvent être isolées des autres pods. Dans d'autres espaces de noms, les éléments de l'espace de noms kube-system ne seront pas visibles et n'affecteront pas .

Créer un espace de noms

Utilisez la méthode suivante pour définir l'espace de noms.

apiVersion: v1 
kind: Namespace 
metadata: 
  name: custom-namespace 

Utilisez la commande kubectl pour créer.

$ kubectl create -f custom-namespace.yaml
namespace/custom-namespace created 

Vous pouvez également utiliser la commande kubectl create namespace pour créer.

$ kubectl create namespace custom-namespace 
namespace/custom-namespace created 

Créez des ressources sous l'espace de noms spécifié.

$ kubectl create -f nginx.yaml -n custom-namespace 
pod/nginx created 

De cette façon, il existe un pod nommé nginx sous default et custom-namespace.

Instructions d'isolation de l'espace de noms

L'espace de noms ne peut être divisé qu'en organisations et ne peut pas être vraiment isolé pour l'exécution d'objets. Par exemple, si deux pods situés sous l'espace de noms se connaissent mutuellement et que le réseau sous-jacent sur lequel s'appuie Kubernetes ne fournit pas d'isolation réseau entre les espaces de noms, les deux pods peuvent accéder l'un à l'autre.

Je suppose que tu aimes

Origine blog.51cto.com/14051317/2553690
conseillé
Classement