# Kubernetes Namespaces: Logische Isolation & Multi-Tenancy Design

TL;DR / Management Summary Ein einzelner Kubernetes-Cluster wird oft von mehreren Teams oder Projekten gleichzeitig genutzt. Namespaces erlauben es, den Cluster in virtuelle Teilbereiche zu unterteilen. Ein Senior Admin nutzt Namespaces zur Isolation von Ressourcen, zur Durchsetzung von Quotas (Verbrauchslimits) und als Basis für das Berechtigungskonzept (RBAC). Ziel ist ein Multi-Tenant Cluster, in dem Team A niemals die Ressourcen oder Geheimnisse von Team B sehen oder stören kann.


# 1. Was ist ein Namespace?

Der virtuelle Cluster.

Ein Namespace ist ein logischer Container für Kubernetes-Objekte (Pods, Services, Deployments).


# 2. Multi-Tenancy Strategien

Grenzen ziehen.

# 1. Hard Multi-Tenancy

Jedes Team bekommt einen eigenen physischen Cluster (Teuer, hoher Wartungsaufwand).

# 2. Soft Multi-Tenancy (Empfohlen)

Alle Teams teilen sich einen Cluster, sind aber via Namespaces getrennt.


# 3. Deep Dive: Resource Quotas & Limits

Gerechtigkeit am Node.

Verhindern Sie, dass ein Team den gesamten Cluster “leersaugt”.

apiVersion: v1
kind: ResourceQuota
metadata:
  name: marketing-quota
  namespace: marketing
spec:
  hard:
    requests.cpu: "4"
    requests.memory: 8Gi
    limits.cpu: "8"
    limits.memory: 16Gi
    pods: "20"

# 4. Day-2 Operations: RBAC pro Namespace

Macht delegieren.

Nutzen Sie Roles und RoleBindings, um den Zugriff einzuschränken.


# 5. Troubleshooting & “War Stories”

Wenn die Wände durchlässig sind.

# Top 3 Herausforderungen

  1. Symptom: Pod kann Dienst im anderen Namespace nicht erreichen.

    • Ursache: DNS-Auflösung über Namespace-Grenzen erfordert den FQDN: <service>.<namespace>.svc.cluster.local.
    • Lösung: Dokumentieren Sie die DNS-Konventionen.
  2. Symptom: “Forbidden” Fehler beim Erstellen von Ressourcen.

    • Ursache: Das Resource-Quota wurde erreicht oder der User hat keine Rechte im Namespace.
    • Lösung: kubectl describe quota -n <namespace> prüfen.
  3. Symptom: Secrets aus Namespace A sind in B sichtbar.

    • Ursache: Fehlkonfiguration der Service-Accounts.

# “War Story”: Der “Vampir”-Entwickler

Ein Unternehmen betrieb einen Shared-Cluster ohne Quotas. Ein Entwickler startete ein Experiment mit maschinellem Lernen in seinem Namespace. Das Ereignis: Der ML-Job forderte 100% der verfügbaren GPU- und CPU-Ressourcen des gesamten Clusters an. Das Ergebnis: Da keine Quotas gesetzt waren, verdrängte der Test-Job die produktiven Webserver von den Nodes. Die Website war für 2 Stunden offline. Lehre: Namespaces ohne ResourceQuotas sind nur kosmetische Ordner. Wirkliche Sicherheit und Stabilität erfordern harte physikalische Grenzen.


# 6. Monitoring & Reporting

Verbrauch pro Mandant.

# Resource Usage Dashboard

Überwachen Sie in Grafana (Artikel 698):


# 7. Fazit & Empfehlung

Namespaces sind das Fundament für ein skalierbares Team-Modell.


# Anhang: Cheatsheet (kubectl namespace)

Aufgabe Befehl
Namespace erstellen kubectl create namespace <name>
Context wechseln kubectl config set-context --current --namespace=<name>
Ressourcen listen kubectl get all -n <name>
Quota prüfen kubectl get quota -n <name>

# Referenzen