Kubernetes-Konzepte für GDC

In diesem Dokument werden die Grundlagen der Open-Source-Plattform zur Containerorchestrierung, Kubernetes, beschrieben. Viele Komponenten von Google Distributed Cloud (GDC) Air-Gapped basieren auf Kubernetes. In einem Großteil der Dokumentation wird davon ausgegangen, dass Sie bereits mit den grundlegenden Kubernetes-Konzepten und der Terminologie vertraut sind. Wenn Sie sich mit Kubernetes nicht auskennen, können Sie dieses Dokument als Referenz für empfohlene Lektüre verwenden, um den Einstieg zu erleichtern.

Die Grundlagen von Kubernetes sind unerlässlich für das Design, die Bereitstellung und die Verwaltung von GDC-Anwendungen und zugrunde liegenden Systemkomponenten. Die folgenden technischen Fachkräfte müssen Kubernetes verstehen, um GDC erfolgreich zu betreiben:

  • Operatoren in der Infrastrukturoperatorgruppe, die für die Installation und Wartung der zugrunde liegenden GDC-Software- und Hardwareinfrastruktur verantwortlich sind.
  • Administratoren in der Plattformadministratorgruppe, die für die Entwicklung robuster Infrastruktur- und Anwendungsarchitekturen auf GDC verantwortlich sind.
  • Entwickler in der Gruppe der Anwendungsoperatoren, die für die Entwicklung von Anwendungen verantwortlich sind.

Weitere Informationen finden Sie unter Dokumentation zu Zielgruppen für GDC mit Air Gap.

Informationen zu Kubernetes

Kubernetes ist eine Open-Source-Plattform zur Containerorchestrierung. Im Grunde ist ein Kubernetes-Cluster eine Gruppe von Worker-Maschinen, die als Knoten bezeichnet werden und auf denen containerisierte Anwendungen ausgeführt werden. Der gesamte Cluster wird von der Steuerungsebene verwaltet, die Komponenten wie den API-Server, den Planer und die etcd-Datenbank umfasst und für die Aufrechterhaltung des Clusterstatus verantwortlich ist.

Anwendungen werden in Pods verpackt, den kleinsten bereitstellbaren Einheiten in Kubernetes, die einen oder mehrere Container enthalten und auf den Knoten ausgeführt werden können. Kubernetes verwendet Namespaces, um Ressourcen in einem Cluster zu organisieren, häufig für verschiedene Teams oder Umgebungen.

Der Lebenszyklus und der Status von Pods werden von Controllern verwaltet. Deployment-Objekte verwalten beispielsweise Rolling Updates und ReplicaSet-Objekte sorgen dafür, dass eine bestimmte Anzahl von Pod-Replikaten ausgeführt wird. Um stabile Netzwerkendpunkte wie IP-Adressen und DNS-Namen für den Zugriff auf Pods bereitzustellen, verwendet Kubernetes Dienste.

Da Containerspeicher standardmäßig sitzungsspezifisch ist, bietet Kubernetes verschiedene Speicherabstraktionen wie Volumes und PersistentVolumes zum Verwalten von Daten.

Um den Zugriff auf Clusterressourcen und die Kubernetes API zu schützen, verwendet Kubernetes die rollenbasierten Zugriffssteuerung (Role-based Access Control, RBAC), um Rollen, Clusterrollen und Bindungen zu definieren, mit denen Nutzern und Dienstkonten bestimmte Berechtigungen gewährt werden.

Wichtige Konzepte

Im Folgenden finden Sie einige wichtige Konzepte, die in der gesamten GDC-Dokumentation verwendet werden. Dies ist keine vollständige Liste der Kubernetes-Konzepte. Weitere Informationen finden Sie in den bereitgestellten Themen aus der Kubernetes-Dokumentation und in unserer Leseempfehlung.

Knoten und Cluster

Alle Kubernetes-Arbeitslasten werden auf Knoten ausgeführt. In GDC ist ein Knoten eine virtuelle Maschine (VM). Auf anderen Kubernetes-Plattformen kann ein Knoten entweder eine physische oder eine virtuelle Maschine sein. Jeder Knoten wird von der Kubernetes-Steuerungsebene verwaltet und enthält alle erforderlichen Komponenten zum Ausführen von Pods. Ein Cluster ist eine Gruppe von Knoten, die als eine Einheit behandelt werden können und auf denen Sie eine Containeranwendung bereitstellen.

Weitere Informationen finden Sie in der Kubernetes-Dokumentation:

Kubernetes-Steuerungsebene

Die Kubernetes-Steuerungsebene ist eine Reihe von Systemkomponenten, die den Gesamtzustand Ihres Clusters verwalten. Dazu gehören der Kubernetes API-Server, mit dem Sie über die kubectl-Befehlszeile und andere Tools mit Ihren Clustern und Anwendungen interagieren können, ein Planer zum Planen von Pods auf verfügbaren Knoten und die Controller, die den Clusterstatus verfolgen und verwalten. Die Steuerungsebene wird von GDC bereitgestellt und verwaltet.

Weitere Informationen finden Sie in der Kubernetes-Dokumentation unter Control plane components.

Pods

In Kubernetes werden containerisierte Anwendungen in einem Pod ausgeführt. Ein Pod ist die kleinste bereitstellbare Recheneinheit, die Sie in Kubernetes erstellen und verwalten können. Ein Pod hat einen oder mehrere Container. Wenn ein Pod mehrere Container ausführt, z. B. einen Anwendungsserver und einen Proxyserver, werden die Container als eine Einheit verwaltet und teilen die Ressourcen des Pods.

Weitere Informationen finden Sie in der Kubernetes-Dokumentation:

Namespaces

Kubernetes-Namespaces bieten einen Mechanismus zum weiteren Gruppieren und Auswählen von Ressourcen wie Pods und Diensten in einem Cluster. Das ist beispielsweise der Fall, wenn mehrere Anwendungsteams Arbeitslasten auf einem einzelnen Cluster ausführen.

Weitere Informationen finden Sie in der Kubernetes-Dokumentation unter Namespaces.

Controller

Kubernetes-Controller verfolgen und verwalten den Status Ihrer Cluster und Arbeitslasten basierend auf dem von Ihnen angegebenen Status (z. B. „Ich möchte drei dieser Pods in diesem Cluster mit diesem Container in jedem Pod ausführen“). Verschiedene Controller verfolgen verschiedene Kubernetes-Ressourcentypen, darunter die folgenden:

Kubernetes-Controller verfolgen und verwalten den Status Ihrer Cluster und Arbeitslasten basierend auf dem von Ihnen angegebenen Status. Sie können beispielsweise festlegen, dass in einem Cluster drei Pods mit einem bestimmten Container in jedem Pod ausgeführt werden. Verschiedene Controller verfolgen unterschiedliche Kubernetes-Ressourcentypen, darunter die folgenden:

  • Deployment: Eine benutzerdefinierte Deployment-Ressource ist ein Kubernetes-Objekt, das einen oder mehrere identische Pods darstellt, die als Replikate bezeichnet werden. Ein Deployment führt mehrere Replikate der Pods aus, die auf die Knoten eines Clusters verteilt sind. Ein Deployment ersetzt automatisch alle Pods, die fehlschlagen oder nicht mehr reagieren.
  • StatefulSet: Eine StatefulSet-benutzerdefinierte Ressource ähnelt einem Deployment, behält aber eine dauerhafte eindeutige Identität für jeden ihrer Pods bei. StatefulSet Ressourcen können in Anwendungen mit persistentem Status nützlich sein, z. B. in zustandsorientierten Anwendungen.
  • DaemonSet: Mit einer benutzerdefinierten DaemonSet-Ressource können Sie einigen oder allen Knoten Standard-Pods hinzufügen. Dies sind oft Hilfsdienste für Ihre Arbeitslasten, z. B. ein Daemon für die Logsammlung oder ein Monitoring-Daemon.
  • ReplicaSet: Eine benutzerdefinierte ReplicaSet-Ressource ist eine Gruppe identischer Pods. Eine ReplicaSet wird normalerweise als Teil einer Deployment-Ressource verwaltet.

Weitere Informationen finden Sie in der Kubernetes-Dokumentation:

Kubernetes-Dienst

Standardmäßig können Sie nicht steuern, auf welchem Clusterknoten ein Pod ausgeführt wird. Daher haben Pods keine stabilen IP-Adressen. Wenn Sie eine IP-Adresse für eine Anwendung abrufen möchten, die in Kubernetes ausgeführt wird, müssen Sie eine Netzwerkabstraktion auf den zugehörigen Pods definieren, die als Kubernetes-Dienst bezeichnet wird. Ein Kubernetes-Service stellt einen stabilen Netzwerkendpunkt für eine Reihe von Pods bereit. Es gibt verschiedene Diensttypen, darunter LoadBalancer-Dienste, die eine externe IP-Adresse bereitstellen, sodass Sie Anwendungen von außerhalb des Clusters erreichen können.

Kubernetes umfasst auch ein integriertes DNS-System für die interne Adressauflösung, das Diensten einen DNS-Namen wie helloserver.default.cluster.local zuweist. Dadurch können Pods im Cluster andere Pods im Cluster über eine stabile Adresse erreichen. Sie können diesen DNS-Namen nicht außerhalb des Clusters verwenden, z. B. in der gcloud CLI.

Weitere Informationen finden Sie in der Kubernetes-Dokumentation unter Services.

Speicher

Wenn Ihre Anwendungen Daten speichern müssen, die über die Lebensdauer des zugehörigen Pods hinaus bestehen, z. B. in zustandsorientierten Anwendungen, können Sie ein Kubernetes-PersistentVolume-Objekt verwenden, um diesen Speicher bereitzustellen. Sie können auch sitzungsspezifischen Speicher verwenden, der zerstört wird, wenn der entsprechende Pod beendet wird.

Weitere Informationen finden Sie in der Kubernetes-Dokumentation:

Rollenbasierte Zugriffssteuerung

Kubernetes bietet einen Mechanismus zur rollenbasierten Zugriffssteuerung (Role-Based Access Control, RBAC), mit dem Sie Autorisierungsrichtlinien für den Zugriff auf Ihre Cluster und deren Ressourcen erstellen können. Bei der Verwendung von GDC nutzen Sie häufig eine Kombination aus Kubernetes RBAC und der Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM) von GDC, um Ihre Anwendungen zu schützen.

Weitere Informationen finden Sie in der Kubernetes-Dokumentation unter Rollenbasierte Zugriffssteuerung.

In diesem Abschnitt finden Sie Links zu empfohlenen Ressourcen, mit denen Sie mehr über Kubernetes erfahren können. Insbesondere Kubernetes.io, die offizielle Kubernetes-Website, bietet umfassende und zuverlässige Informationen zu allen Aspekten von Kubernetes.

Externe Anleitungen und Tutorials

  • Kubernetes-Übersicht: Eine umfassende konzeptionelle Übersicht über Kubernetes.
  • Tutorial: Kubernetes-Grundlagen: In diesem Beispiel werden die Grundlagen von Kubernetes erläutert.
  • Kubernetes-Anleitungen: Wenn Sie über die Grundlagen hinausgehen möchten, finden Sie in diesem Abschnitt der Kubernetes-Dokumentation Anleitungen zu einer Vielzahl von Kubernetes-Themen, von zustandsorientierten Anwendungen bis hin zur Sicherheit.

Referenzdokumentation

  • Kubernetes-Glossar: Eine umfassende, standardisierte Liste von Kubernetes-Begriffen. Wenn Sie sich bei einem Kubernetes-Begriff nicht sicher sind, können Sie im Glossar nachsehen.

Nächste Schritte