Wie man Namensräume in Kubernetes anlegt

Ein Namensraum ist hilfreich, wenn mehrere Teams denselben Cluster verwenden. Dieser wird verwendet, wenn die Gefahr einer Namenskollision besteht. Er kann eine virtuelle Wand zwischen mehreren Clustern sein. Beispielsweise können wir in einem Kubernetes-Cluster keine Pods mit demselben Namen haben, aber mit dem Namensraum können wir den Cluster virtuell aufteilen und Pods mit demselben Namen haben.

Einige der wichtigen Funktionalitäten eines Namensraumes sind wie folgt.

  1. Dies hilft bei der Pod-zu-Pod-Kommunikation unter Verwendung desselben Namensraums.
  2. Es handelt sich um einen virtuellen Cluster, der auf demselben physischen Cluster sitzen kann.
  3. Er bietet eine logische Trennung zwischen den Teams und ihren Umgebungen.

In diesem Artikel erstellen wir einen Namensraum und erstellen einen Pod in dem neu erstellten Namensraum. Wir werden auch sehen, wie ein Namensraum als Standardnamensraum festgelegt werden kann.

Voraussetzungen

  1. Kubernetes Cluster mit mindestens 1 Worker-Knoten.
    Wenn Sie lernen möchten, wie man einen Kubernetes-Cluster erstellt, klicken Sie hier. Dieser Leitfaden wird Ihnen helfen, einen Kubernetes-Cluster mit 1 Master- und 2 Worker-Knoten auf AWS Ubuntu 18.04 EC2-Instanzen zu erstellen.

Was wir tun werden

  1. Namensräume erstellen

Namensräume erstellen

Um alle im Kubernetes-Cluster verfügbaren Namespaces aufzulisten, führen Sie den folgenden Befehl aus.

kubectl get namespace #Get all namespace in the cluster

get-namespaces

Versuchen wir nun, eine Kapsel in einem bestimmten Namensraum zu erstellen, der nicht existiert.

Um einen Pod im Namensraum „test-env“ zu erstellen, führen Sie den folgenden Befehl aus.

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

Der Pod wird nicht in einem Namensraum erstellt, der nicht existiert, daher müssen wir zuerst einen Namensraum erstellen.

Um einen Namensraum „test-env“ zu erstellen, führen Sie den folgenden Befehl aus.

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

Namensraum erstellen

Jetzt haben wir einen Namensraum, in dem wir einen Pod erstellen wollen.

Um einen Pod im von uns erstellten Namensraum zu erstellen, übergeben Sie die Option –namespace=test-env an den Befehl.

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

Wenn Sie versuchen, Hülsen zu erhalten, ohne den Namensraum anzugeben, erhalten Sie keine Details über die Hülse.

kubectl get pods #Get a list of pods

Um Details des Pods, der zum Namensraum „test-env“ gehört, zu erhalten, verwenden Sie den folgenden Befehl.

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

schaffe-pod-in-the-namespace-erstellt

Wenn Sie Ihren Namensraum als Standardnamensraum festlegen möchten, so dass es nicht erforderlich ist, die Namensraumoption im Befehl anzugeben, verwenden Sie den folgenden Befehl.

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

Nun ist es nicht mehr nötig, den Namensraum im Befehl anzugeben, um Einzelheiten über den Pod zu erhalten.

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

set-the-namespace-in-config

Um zum Standard-Namensraum zu wechseln, verwenden Sie den folgenden Befehl.

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

zurück-zurück-zum-defekten-Namensraum

Um zu überprüfen, welcher der Standard-Namensraum ist, verwenden Sie die folgenden Befehle.

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:

check-current-namensraum

Prüfen Sie, welche Kubernetes-Ressourcen ein Namensraum sind, und führen Sie den folgenden Befehl aus.

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

ressourcen-mit-namensraum

Um zu sehen, welche Kubernetes-Ressourcen nicht in einem Namensraum liegen, führen Sie folgenden Befehl aus.

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

ressourcen-ohne-namensraum

Details zum Namensraum erhalten Sie mit dem unten erwähnten Befehl.

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

Beschreiben-Namensraum

Ein Namensraum kann auch mit einer .yml-Datei erstellt werden.

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

Namensraum-im-Namensraum-geschriebene-Datei erstellen

Führen Sie den folgenden Befehl aus, um einen in der Objektdefinitionsdatei angegebenen Namensraum zu erstellen.

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

get-namespaces

Wenn Sie Ihren Namensraum nicht mehr benötigen, können Sie ihn einfach mit dem folgenden Befehl löschen.

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

Namensräume löschen

Schlussfolgerung

In diesem Artikel lernten wir über Namespaces, das Erstellen eines Namespaces und das Ändern des Standard-Namespaces, das Überprüfen der Kubernetes-Ressourcen, die sich in einem Namespace befinden oder nicht. Wir sahen auch, wie ein Kubernetes-Objekt, hier pod, in einem Namensraum unserer Wahl erstellt werden kann.

Das könnte dich auch interessieren …