Benutzerdefiniertes Bootlaufwerk konfigurieren


Auf dieser Seite wird erläutert, wie Sie ein Bootlaufwerk für Knoten in Ihren Clustern und Knotenpools in Google Kubernetes Engine anpassen.

Überblick

Wenn Sie einen GKE-Cluster oder -Knotenpool erstellen, können Sie für jeden Knoten den nichtflüchtigen Speichertyp auswählen, in dem das Kubernetes-Knotendateisystem installiert wird. Standardmäßig verwendet GKE abgestimmte nichtflüchtige Speicher in Version 1.24 oder höher. Sie können auch andere Arten von nichtflüchtigen Speichern angeben, z. B. Standard oder SSD. Weitere Informationen dazu finden Sie unter Speicheroptionen.

Die Kontingente für abgestimmte nichtflüchtige Speicher und nichtflüchtige SSD-Speicher unterscheiden sich von Kontingenten für nichtflüchtige Standardspeicher. Wenn Sie von Standardspeichern zu abgestimmten nichtflüchtigen Speichern wechseln, müssen Sie unter Umständen eine Kontingenterhöhung anfordern. Weitere Informationen finden Sie unter Ressourcenkontingente.

Vorteile von SSD-Bootlaufwerken

Die Verwendung eines nichtflüchtigen SSD-Speichers als Bootlaufwerk für Ihre Knoten bietet einige Leistungsvorteile:

  • Die Startzeit der Knoten verkürzt sich.
  • Binärdateien und von Containern auf dem Knoten bereitgestellte Dateien sind schneller verfügbar. Dadurch erhöht sich die Leistung bei E-/A-intensiven Arbeitslasten wie Webanwendungen, die statische Dateien oder E-/A-intensive Batchjobs mit kurzer Laufzeit hosten.
  • So kann sich für Dateien, die auf dem lokalen Medium des Knotens gespeichert sind und über das Volume hostPath oder emptyDir verfügbar gemacht werden, die E/A-Leistung verbessern.

Bootlaufwerktyp für Knoten angeben

Sie können den Bootlaufwerktyp beim Erstellen eines Clusters oder Knotenpools angeben.

gcloud

Mit dem folgenden Befehl erstellen Sie einen Cluster mit einem benutzerdefinierten Bootlaufwerk.

[DISK-TYPE] kann einer der folgenden Werte sein:

  • pd-balanced (Standardeinstellung in Version 1.24 oder höher)
  • pd-standard (Standardeinstellung in Version 1.23 oder früher)
  • pd-ssd
  • hyperdisk-balanced

Weitere Informationen zu dieser Auswahl finden Sie unter Nichtflüchtige Speichertypen.

gcloud container clusters create [CLUSTER_NAME] --disk-type [DISK_TYPE]

So erstellen Sie einen Knotenpool in einem vorhandenen Cluster:

gcloud container node-pools create [POOL_NAME] --disk-type [DISK_TYPE]

Mit dem folgenden Befehl legen Sie beispielsweise den Cluster example-cluster mit einem nichtflüchtigen SSD-Speicher (pd-ssd) an:

gcloud container clusters create example-cluster --disk-type pd-ssd

Console

So wählen Sie beim Erstellen des Clusters mit der Google Cloud Console das Bootlaufwerk aus:

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite „Google Kubernetes Engine“

  2. Klicken Sie auf Erstellen.

  3. Konfigurieren Sie den Cluster nach Bedarf.

  4. Maximieren Sie im Navigationsmenü default-pool und klicken Sie auf Knoten.

  5. Wählen Sie in der Drop-down-Liste Bootlaufwerktyp einen Typ für den nichtflüchtigen Speicher aus.

  6. Klicken Sie auf Erstellen.

So erstellen Sie einen Knotenpool mit einem benutzerdefinierten Bootlaufwerk für einen vorhandenen Cluster:

  1. Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.

    Zur Seite "Google Kubernetes Engine"

  2. Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.

  3. Klicken Sie auf Knotenpool hinzufügen .

  4. Konfigurieren Sie den Knotenpool nach Bedarf.

  5. Klicken Sie im Navigationsmenü auf Knoten.

  6. Wählen Sie in der Drop-down-Liste Bootlaufwerktyp einen Typ für den nichtflüchtigen Speicher aus.

  7. Klicken Sie auf Erstellen.

Bootlaufwerke von Knoten schützen

Auf dem Bootlaufwerk eines Knotens werden standardmäßig das Containerimage, einige Systemprozesslogs, Podlogs und die beschreibbare Containerebene gespeichert.

Wenn Ihre Arbeitslasten das Volume configMap, emptyDir oder hostPath verwenden, kann es passieren, dass Ihre Pods zusätzliche Daten auf Knotenbootlaufwerke schreiben. Um dies zu verhindern, können Sie emptyDir so konfigurieren, dass es von tmpfs unterstützt wird. Informationen hierzu finden Sie in der Kubernetes-Dokumentation. Da die Volumes secret, downwardAPI und projected von tmpfs unterstützt werden, schreiben Pods, die diese Volumes verwenden, keine Daten auf das Bootlaufwerk des Knotens.

Standardmäßig werden in Google Cloud inaktive Kundeninhalte verschlüsselt (einschließlich der Bootlaufwerke für Knoten) und GKE übernimmt die Verschlüsselung ohne Ihr Zutun.

Wenn Sie jedoch Volumes verwenden, die auf das Bootlaufwerk des Knotens schreiben, möchten Sie die Art und Weise, wie die Daten Ihrer Arbeitslasten in GKE geschützt sind, vielleicht genauer steuern. Sie können dafür entweder verhindern, dass Pods auf die Bootlaufwerke von Knoten schreiben oder vom Kunden verwaltete Verschlüsselungsschlüssel (Customer Managed Encryption Keys, CMEK) für Knoten-Bootlaufwerke verwenden.

Verhindern, dass Pods auf Bootlaufwerke schreiben

Wenn Sie verhindern möchten, dass Pods Daten direkt auf das Bootlaufwerk des Knotens schreiben, verwenden Sie eine der folgenden Methoden.

Policy Controller

Policy Controller ist ein Feature von GKE Enterprise, mit dem Sie benutzerdefinierte Richtlinien in großem Umfang in Ihren GKE-Clustern in Flotten deklarieren und erzwingen können.

  1. Policy Controller installieren
  2. Definieren Sie mit der Einschränkungsvorlage k8sPspVolumeTypes eine Einschränkung, die die folgenden Volume-Typen einschränkt:

Mit der folgenden Beispieleinschränkung werden diese Volume-Typen in allen Pods im Cluster eingeschränkt:

apiVersion: constraints.gatekeeper.sh/v1beta1
kind: K8sPSPVolumeTypes
metadata:
  name: deny-boot-disk-writes
spec:
  match:
    kinds:
    - apiGroups: [""]
      kinds: ["Pod"]
  parameters:
    volumes:
    - configMap
    - emptyDir
    - hostPath

PodSecurity-Admission-Controller

Mit dem integrierten PodSecurity-Admission-Controller von Kubernetes können Sie in bestimmten Namespaces oder im Cluster verschiedene Ebenen der Pod-Sicherheitsstandards erzwingen. Die eingeschränkte Richtlinie verhindert, dass Pods auf das Bootlaufwerk des Knotens schreiben.

Informationen zur Verwendung des PodSecurity-Admission-Controllers finden Sie unter Vordefinierte Sicherheitsrichtlinien auf Pod-Ebene mit PodSecurity anwenden.

Vom Kunden verwaltete Verschlüsselung

Wenn Sie die Rotation von Verschlüsselungsschlüsseln selbst steuern und verwalten möchten, können Sie vom Kunden verwaltete Verschlüsselungsschlüssel (Customer Managed Encryption Keys, CMEK) verwenden. Mit diesen Schlüsseln werden Datenverschlüsselungsschlüssel verschlüsselt, die wiederum Ihre Daten verschlüsseln. Weitere Informationen zur Verwendung von CMEK für Bootlaufwerke von Knoten finden Sie unter Vom Kunden verwaltete Verschlüsselungsschlüssel verwenden.

Eine Einschränkung von CMEK für Bootlaufwerke von Knoten besteht darin, dass sie nach dem Erstellen des Knotenpools nicht mehr geändert werden können. Das heißt:

  • Wenn der Knotenpool mit einer vom Kunden verwalteten Verschlüsselung erstellt wurde, können Sie die Verschlüsselung auf den Bootlaufwerken im Nachhinein nicht deaktivieren.
  • Wenn der Knotenpool ohne vom Kunden verwaltete Verschlüsselung erstellt wurde, können Sie die Verschlüsselung nicht auf den Bootlaufwerken aktivieren. Sie können jedoch einen neuen Knotenpool mit aktivierter vom Kunden verwalteter Verschlüsselung erstellen und den vorherigen Knotenpool löschen.

Beschränkungen

Beachten Sie vor dem Konfigurieren eines benutzerdefinierten Bootlaufwerks folgende Beschränkungen:

Nächste Schritte