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) mit Air Gap basieren auf Kubernetes und in einem Großteil der Dokumentation wird davon ausgegangen, dass Sie bereits mit den grundlegenden Kubernetes-Konzepten und der Terminologie vertraut sind. Wenn Sie Kubernetes nicht kennen, können Sie dieses Dokument als Referenz für empfohlene Lektüre verwenden, um sich einzuarbeiten.

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

  • Operatoren in der Gruppe der Infrastrukturbetreiber, die für die Installation und Wartung der zugrunde liegenden GDC-Software- und ‑Hardwareinfrastruktur verantwortlich sind.
  • Administratoren in der Gruppe der Plattformadministratoren, die für das Design einer robusten Infrastruktur und Anwendungsarchitekturen in 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.

Kubernetes

Kubernetes ist eine Open-Source-Plattform zur Containerorchestrierung. Im Grunde besteht ein Kubernetes-Cluster aus einer Reihe 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. Um Ressourcen innerhalb eines Clusters zu organisieren, oft für verschiedene Teams oder Umgebungen, verwendet Kubernetes Namespaces.

Der Lebenszyklus und der Status von Pods werden von Controllern verwaltet. Beispielsweise verwalten Deployment-Objekte Rolling Updates und ReplicaSet-Objekte sorgen dafür, dass eine bestimmte Anzahl von Pod-Replikaten ausgeführt wird. Um stabile Netzwerk endpunkte 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 nichtflüchtige Volumes zum Verwalten von Daten.

Um den Zugriff auf Clusterressourcen und die Kubernetes API zu schützen, verwendet Kubernetes die rollenbasierte 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. In den bereitgestellten Themen aus der Kubernetes-Dokumentation und unserer empfohlenen Lektürefinden Sie viele weitere Informationen.

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, auf der Sie eine containerisierte Anwendung bereitstellen.

Weitere Informationen finden Sie in der Kubernetes-Dokumentation:

Kubernetes-Steuerungsebene

Die Kubernetes-Steuerungsebene ist eine Reihe von Systemkomponenten, die den Gesamtstatus Ihres Clusters verwalten, einschließlich des Kubernetes API-Servers, mit dem Sie über die kubectl CLI und andere Tools mit Ihren Clustern und Anwendungen interagieren können, eines Planers zum Planen von Pods auf verfügbaren Knoten und der Controller, die den Clusterstatus verfolgen und verwalten. Die Steuerungsebene wird von GDC bereitgestellt und verwaltet.

Weitere Informationen finden Sie in der Dokumentation zu den Kubernetes Komponenten der Steuerungsebene.

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 enthält 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 innerhalb eines Clusters. Beispiel: Sie haben mehrere Anwendungsteams, die Arbeitslasten in einem einzelnen Cluster ausführen.

Weitere Informationen finden Sie in der Kubernetes Dokumentation zu 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 das Verhalten für einen Cluster so festlegen, dass drei Pods mit einem bestimmten Container in jedem Pod ausgeführt werden. Verschiedene Controller verfolgen verschiedene 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 benutzerdefinierte StatefulSet-Ressource ähnelt einem Deployment, behält aber eine dauerhafte eindeutige Identität für jeden Pod bei. StatefulSet -Ressourcen können in Anwendungen mit persistentem Status nützlich sein, z. B. in zustandsorientierten Anwendungen.
  • DaemonSet: Mit einer DaemonSet benutzerdefinierten Ressource können Sie einigen oder allen Knoten Standard-Pods hinzufügen. Dabei handelt es sich oft um Hilfsdienste für Ihre Arbeitslasten, z. B. einen Daemon zur Logerfassung oder einen Monitoring-Daemon.
  • ReplicaSet: Eine benutzerdefinierte ReplicaSet-Ressource ist eine Gruppe identischer Pods. Ein 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, sodass Pods keine stabilen IP-Adressen haben. Um eine IP-Adresse für eine in Kubernetes ausgeführte Anwendung zu erhalten, müssen Sie eine Netzwerkabstraktion auf den Pods definieren, die als Kubernetes-Dienst bezeichnet wird. Ein Kubernetes-Dienst stellt einen stabilen Netzwerkendpunkt für eine Reihe von Pods bereit. Es gibt verschiedene Arten von Diensten, darunter LoadBalancer Dienste, die eine externe IP-Adresse bereitstellen, damit Sie von außerhalb des Clusters auf Anwendungen zugreifen 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 mit einer stabilen Adresse erreichen. Sie können diesen DNS-Namen nicht außerhalb des Clusters verwenden, z. B. über die gdcloud CLI.

Weitere Informationen finden Sie in der Kubernetes Dokumentation zu Diensten.

Speicher

Wenn Ihre Anwendungen Daten speichern müssen, die über die Lebensdauer des Pods hinaus bestehen bleiben sollen, z. B. in zustandsorientierten Anwendungen, können Sie mit einem Kubernetes-PersistentVolume-Objekt diesen Speicher bereitstellen. Sie können auch sitzungsspezifischen Speicher verwenden, der gelöscht wird, wenn der entsprechende Pod beendet wird.

Weitere Informationen finden Sie in der Kubernetes-Dokumentation:

Rollenbasierte Zugriffssteuerung

Kubernetes enthält einen Mechanismus für die rollenbasierte Zugriffssteuerung (Role-Based Access Control, RBAC), mit dem Sie Autorisierungsrichtlinien für den Zugriff auf Ihre Cluster und deren Ressourcen erstellen können. Wenn Sie GDC verwenden, 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 zur rollenbasierten Zugriffssteuerung.

In diesem Abschnitt finden Sie Links zu empfohlenen Ressourcen, mit denen Sie mehr über Kubernetes erfahren können. Insbesondere auf Kubernetes.io, der offiziellen Kubernetes-Website, finden Sie umfassende und zuverlässige Informationen zu allen Themen rund um Kubernetes.

Externe Anleitungen und Tutorials

  • Kubernetes-Übersicht: Eine umfassende konzeptionelle Übersicht über Kubernetes.
  • Tutorial: Kubernetes-Grundlagen: Lernen Sie die Grundlagen von Kubernetes anhand eines Beispiels.
  • Kubernetes-Tutorials: Wenn Sie die Grundlagen beherrschen, finden Sie in diesem Abschnitt der Kubernetes-Dokumentation Tutorials zu einer Vielzahl von Kubernetes-Themen, von zustandsorientierten Anwendungen bis hin zur Sicherheit.

Referenzdokumentation

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

Nächste Schritte