We couldn't find a match for given <KEYWORD>, please try again.

Was ist ein Kubernetes-Namespace?

Namespaces bieten eine Methode, um Cluster in virtuellen Subclustern zu organisieren. Sie sind hilfreich, wenn sich verschiedene Teams oder Projekte einen Kubernetes-Cluster teilen. Innerhalb eines Clusters wird eine beliebige Anzahl von Namespaces unterstützt, die jeweils logisch voneinander getrennt sind, jedoch miteinander kommunizieren können. Es ist nicht möglich, Namespaces ineinander zu verschachteln.

Jede Ressource innerhalb von Kubernetes befindet sich entweder im Standard-Namespace oder in einem vom Cluster-Operator erstellten Namespace. Außerhalb von Namespaces sind nur Knoten und persistente Storage-Volumes vorhanden. Diese untergeordneten Ressourcen sind stets für jeden Namespace im Cluster sichtbar.

Statusbericht zu Kubernetes

Kubernetes-Betrieb

Was ist der Standard-Namespace („default“) in Kubernetes?

Kubernetes verfügt grundsätzlich über drei Namespaces. Dabei handelt es sich um folgende:

  1. default: Wie der Name schon sagt, ist das der Namespace, der standardmäßig für jeden Kubernetes-Befehl referenziert wird und in dem sich jede Kubernetes-Ressource automatisch befindet. Bis neue Namespaces erstellt werden, befindet sich der gesamte Cluster in „default“.
  2. kube-system: Wird für Kubernetes-Komponenten verwendet und sollte vermieden werden.
  3. kube-public: Wird für öffentliche Ressourcen verwendet. Die Nutzung durch Anwender wird nicht empfohlen.

Wozu werden Kubernetes-Namespaces verwendet?

Es gibt viele Anwendungsbereiche für Kubernetes-Namespaces, darunter:

  • Eigene virtuelle Cluster für Teams oder Projekte, damit sie sich nicht gegenseitig behindern
  • Verbesserte rollenbasierte Zugriffskontrollen (Role-Based Access Control, RBAC), da Anwender und Prozesse auf bestimmte Namespaces beschränkt sind
  • Aufteilen von Clusterressourcen unter mehreren Teams und Anwendern durch Ressourcenkontingente
  • Einfache Trennung von Entwicklung, Test und Bereitstellung von containerbasierten Anwendungen, sodass der gesamte Lebenszyklus im selben Cluster stattfindet

Wann sollten mehrere Kubernetes-Namespaces verwendet werden?

Unter Umständen reicht der Standard-Namespace für kleine Teams oder kleinere Unternehmen vollkommen aus. Dies trifft insbesondere zu, wenn Entwickler oder Anwender nicht voneinander isoliert werden müssen. Mehrere Namespaces bieten jedoch viele nützliche Vorteile, darunter:

  • Isolation: Große oder wachsende Teams nutzen Namespaces, um ihre Projekte und Microservices voneinander zu isolieren. Teams können dieselben Ressourcennamen problemlos in verschiedenen Arbeitsumgebungen wiederverwenden. Außerdem wirken sich auf Elemente angewendete Aktionen in einer Arbeitsumgebung niemals auf andere Arbeitsumgebungen aus.
  • Organisation: Unternehmen, die einen einzigen Cluster für Entwicklung, Test und Produktion verwenden, nutzen Namespaces für Sandbox-Entwicklungs- und -Testumgebungen. Dadurch wird während des gesamten Anwendungslebenszyklus sichergestellt, dass Produktionscode nicht von Änderungen betroffen ist, die Entwickler oder Tester in ihren eigenen Namespaces vornehmen.
  • Berechtigungen: Namespaces unterstützen den Einsatz von Kubernetes RBAC, sodass Teams Rollen definieren können, die Listen von Berechtigungen oder Fähigkeiten unter einem einzigen Namen zusammenfassen. Somit haben nur autorisierte Anwender Zugriff auf Ressourcen in einem bestimmten Namespace.
  • Ressourcenkontrolle: Sie können richtliniengesteuerte Ressourcenbeschränkungen für Namespaces festlegen, indem Sie Ressourcenkontingente für die CPU- oder Arbeitsspeichernutzung definieren. Damit verfügen alle Projekte oder Namespaces über die erforderlichen Ressourcen und es wird sichergestellt, dass kein Namespace alle verfügbaren Ressourcen beansprucht.
  • Performance: Namespaces tragen unter Umständen zu einer besseren Clusterperformance bei. Wenn ein Cluster in mehrere Namespaces für verschiedene Projekte unterteilt ist, muss die Kubernetes-API bei der Durchführung von Vorgängen weniger Elemente durchsuchen. Dadurch wird die Latenz reduziert und die allgemeine Performance für jede im Cluster ausgeführte Anwendung beschleunigt.

Wie kommunizieren Pods über Kubernetes-Namespaces hinweg?

Obwohl Namespaces voneinander getrennt sind, kommunizieren sie problemlos miteinander. Das Kubernetes-DNS-Serviceverzeichnis kann mithilfe der erweiterten DNS-Adressierung problemlos jeden Service anhand seines Namens finden:

..svc.cluster.local

Sie erhalten mühelos Zugriff auf Services in beliebigen Namespaces im Cluster, indem Sie den Namespace-Namen zum Servicenamen hinzufügen. Für den Zugriff auf den Service für Gehaltsabrechnungen im Entwicklungs-Namespace verwenden Sie folgende Adresse:
„payroll.development“.
Für den Zugriff auf den Service für Gehaltsabrechnungen im Produktions-Namespace verwenden Sie:
„payroll.production“.

Beachten Sie, dass Netzwerkrichtlinien optional eingesetzt werden, um den Zugriff zwischen Namespaces zu kontrollieren. Beispielsweise kann eine Netzwerkrichtlinie den gesamten Datenverkehr von anderen Namespaces zulassen oder ablehnen. Netzwerkrichtlinien gelten nur für Verbindungen und sind kein Ersatz für Firewalls, die Paketprüfungen durchführen.

Wie lauten die grundlegenden kubectl-Befehle für Namespaces?

Wie lautet der Befehl, um aktuelle Kubernetes-Namespaces zu suchen?

Sämtliche Namespaces im Cluster werden mit dem folgenden Befehl angezeigt:
„kubectl get namespace“.
Damit erhalten Sie eine Liste aller Namespaces im Cluster, einschließlich Standard-Namespaces, zusammen mit ihrem Status und Alter.

Wie lautet der Befehl, um einen neuen Kubernetes-Namespace zu erstellen?

Namespaces werden ganz einfach mit folgendem Befehl erstellt:
„kubectl create namespace“.
Wie bei allen anderen Kubernetes-Ressourcen kann auch eine YAML-Datei erzeugt und angewendet werden, um einen Namespace zu erstellen:

newspace.yaml:
kind: Namespace
apiVersion: v1
metadata:
name: newspace
labels:
name: newspacekubectl apply -f newspace.yaml

Wie wird zwischen Kubernetes-Namespaces gewechselt?

Um Namespaces zu adressieren, nachdem sie erstellt wurden, müssen Aktionen die Option „–namespace=“ im Befehl enthalten. Da dies unter Umständen mühsam wird, kann der Standard-Namespace mit dem Befehl „kubectl config“ geändert werden, um den Namespace im Clusterkontext festzulegen.
Um beispielsweise vom Standard-Namespace zu einem Namespace mit dem Namen „testing“ zu wechseln, geben Sie Folgendes ein:
„kubectl config set-context --current --namespace=testing“.
Dadurch wird der Standard-Namespace für alle künftigen kubectl-Befehle auf „testing“ festgelegt.

Wie wird ein Kubernetes-Namespace umbenannt?

Es ist nicht üblich, einen Kubernetes-Namespace umzubenennen. Wählen Sie daher Namespaces (außerhalb von „default“) sorgfältig aus.

Wie wird ein Kubernetes-Namespace gelöscht?

Namespaces werden mithilfe des folgenden Befehls gelöscht:
„kubectl delete namespaces“.
Da es sich bei der Löschung um eine asynchrone Aktivität handelt, wird der Namespace solange als „terminating“ angezeigt, bis er gelöscht wird.

Warnung: Löschung von Kubernetes-Namespaces

Die Löschung von Namespaces ist endgültig. Der gesamte Namespace, einschließlich aller Services, ausgeführter Pods und Artefakte, wird gelöscht. Die automatische Speicherbereinigung wird für alle Inhalte ausgeführt, die sich in diesem Namespace befanden. Vergewissern Sie sich, dass sämtliche Inhalte im Namespace gelöscht werden sollen, bevor Sie diese Aktion ausführen.

Zugehörige Lösungen und Produkte

Labs: Anwendungsmodernisierung

Verschieben Sie Ihre Anwendungen innerhalb weniger Wochen in die Cloud.

Tanzu for Kubernetes Operations

Die Grundlage für eine moderne Multi-Cloud-Container-Infrastruktur

Tanzu Application Platform

Erstklassige Multi-Cloud-Entwicklererfahrung auf Kubernetes