Ein Namespace ist in Kubernetes eine logische Partition des Clusters. Er bündelt Objekte wie Pods, Deployments oder Services in getrennten Bereichen – zum Beispiel eines pro Team oder Projekt. Ressourcen wie Nodes, PersistentVolumes oder ClusterRoles sind dagegen clusterweit und gehören keinem Namespace an.

Die Standard-Namespaces

  • default – für Workloads, die ohne Namespace-Angabe erstellt werden; für Produktion ungeeignet.
  • kube-system – beherbergt die Control-Plane-Komponenten wie API-Server, kube-scheduler und CoreDNS.
  • kube-public – öffentlich lesbar, für Cluster-Informationen.
  • kube-node-lease – hält die Lease-Objekte für die Node-Heartbeats.

Namespace anlegen und nutzen

kubectl create namespace dev
kubectl get namespaces
kubectl get pods -n dev
kubectl delete namespace dev

kubectl -n <name> oder --namespace wählt den Bereich einer Abfrage. Namespace-Namen folgen den RFC-1123-Label-Regeln und sind auf 63 Zeichen begrenzt. Das Löschen eines Namespace entfernt alle darin enthaltenen Objekte.

Warum Namespaces? Abgrenzung zur vollen Isolation

Namespaces ermöglichen getrennte RBAC-Berechtigungen und eigene ResourceQuotas sowie LimitRanges pro Team. Sie schaffen damit organisatorische Trennung – aber keine vollständige Sicherheits-Isolation: Für die Netz-Trennung zwischen Namespaces sind NetworkPolicies zuständig, für harte Mandanten-Trennung Techniken wie dedizierte Cluster oder Virtualisierung.

Die Prioritäts-Klasse Kubernetes PriorityClass wirkt clusterweit und ergänzt die namespace-bezogene Ressourcen-Steuerung.

Verwandte Grundlagen: Kubernetes, Pod, kubectl-Befehle.