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
oderemptyDir
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:
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie auf add_box Erstellen.
Konfigurieren Sie den Cluster nach Bedarf.
Maximieren Sie im Navigationsmenü default-pool und klicken Sie auf Knoten.
Wählen Sie in der Drop-down-Liste Bootlaufwerktyp einen Typ für den nichtflüchtigen Speicher aus.
Klicken Sie auf Erstellen.
So erstellen Sie einen Knotenpool mit einem benutzerdefinierten Bootlaufwerk für einen vorhandenen Cluster:
Rufen Sie in der Google Cloud Console die Seite Google Kubernetes Engine auf.
Klicken Sie in der Clusterliste auf den Namen des Clusters, den Sie ändern möchten.
Klicken Sie auf Knotenpool hinzufügen add_box.
Konfigurieren Sie den Knotenpool nach Bedarf.
Klicken Sie im Navigationsmenü auf Knoten.
Wählen Sie in der Drop-down-Liste Bootlaufwerktyp einen Typ für den nichtflüchtigen Speicher aus.
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.
- Policy Controller installieren
- Definieren Sie mit der Einschränkungsvorlage
k8sPspVolumeTypes
eine Einschränkung, die die folgenden Volume-Typen einschränkt:configMap
emptyDir
(falls nicht von tmpfs unterstützt)hostPath
Eine Anleitung finden Sie in der Dokumentation zu Policy Controller unter Bibliothek mit Einschränkungsvorlagen verwenden.
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:
- Die C3-Maschinen-Serie und die G2-Maschinenserie unterstützen den
pd-standard
-Knoten-Bootlaufwerkstyp nicht.
Nächste Schritte
- Mindest-CPU-Plattform angeben
- Vom Kunden verwalteten Verschlüsselung
- Informationen zur Verwendung von vom Kunden verwalteten Verschlüsselungsschlüsseln in GKE