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.