13 Kubernetes Namespaces

Namespaces in Kubernetes ermöglichen die Trennung von Ressourcen in einer K8s-Cluster-Umgebung. Sie helfen dabei, verschiedene Projekte, Teams oder Kunden zu isolieren, die auf dem gleichen Cluster arbeiten. Durch die Verwendung von Namespaces können Benutzer Ressourcen organisieren und verwalten, und Administratoren können die Nutzung der Ressourcen überwachen und steuern.

Ressourcentyp Namespace kubectl Befehl
Pod A kubectl run A1 --image=<image> --namespace=Namespace-A
Pod A kubectl run A2 --image=<image> --namespace=Namespace-A
Service A kubectl create service clusterip A --tcp=80:80 --namespace=Namespace-A
PersistentVolumeClaim A kubectl create pvc A --namespace=Namespace-A
Pod B kubectl run B1 --image=<image> --namespace=Namespace-B
Pod B kubectl run B2 --image=<image> --namespace=Namespace-B
Service B kubectl create service clusterip B --tcp=80:80 --namespace=Namespace-B
PersistentVolumeClaim B kubectl create pvc B --namespace=Namespace-B

Ersetzen Sie <image> mit dem Namen des gewünschten Container-Images.

13.1 Beispiel mit Manifest

Ein Namespace ist ein eigener Resource Type

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

Ein Namespace kann direkt im Manifest einer Ressource angegeben werden. Diese Methode setzt den Namespace fest, in dem die Ressource erstellt wird, sofern nicht über die Kommandozeile überschrieben.

apiVersion: v1
kind: Pod
metadata:
  name: example-pod
  namespace: example-namespace
spec:
  containers:
  - name: example-container
    image: nginx

13.1.1 CLI

kubectl create namespace example-namespace

Dieser Befehl erstellt den POD im Namespace der im Manifest definiert ist, oder im Default Namespace.

kubectl apply -f pod-manifest.yaml --namespace=another-namespace

Dieser Befehl hingegen überschreibt explizit den Namespace, der im pod-manifest.yaml definiert ist, und erstellt den Pod stattdessen im Namespace another-namespace

kubectl apply -f pod-manifest.yaml --namespace=another-namespace

13.2 Default Namespaces

Namespace Beschreibung
default Standardnamespace für Objekte ohne Namespace
kube-system Systemprozesse von Kubernetes
kube-public Informationen, die öffentlich lesbar sind
kube-node-lease Heartbeats der Nodes zur Verbesserung der Performance