In diesem Dokument erfahren Sie, wie Sie Ihre GKE-Knotenkonfiguration (Google Kubernetes Engine) mithilfe einer Konfigurationsdatei anpassen, die als Knotensystemkonfiguration bezeichnet wird.
Eine Knotensystemkonfiguration ist eine Konfigurationsdatei, mit der Sie eine begrenzte Anzahl von Systemeinstellungen anpassen können. In Ihrem Knotenpool können Sie eine Knotensystemkonfiguration verwenden, um benutzerdefinierte Einstellungen für den Kubernetes-Knoten-Agenten kubelet und für Linux-Kernel-Konfigurationen auf niedriger Ebene sysctl anzugeben.
In diesem Dokument werden die verfügbaren Konfigurationen für eine Knotensystemkonfiguration beschrieben und es wird erläutert, wie Sie sie auf Ihre GKE Standard-Knotenpools anwenden. Da GKE Autopilot-Cluster eine stärker verwaltete Knotenumgebung haben, sind die Optionen für die direkte Knotenkonfiguration im Vergleich zu GKE Standard-Knotenpools eingeschränkt.
Vorteile von Knotensystemkonfigurationen
Knotensystemkonfigurationen bieten folgende Vorteile:
- Leistungsoptimierung:Optimieren Sie die Leistung des Netzwerkstacks, die Arbeitsspeicherverwaltung, die CPU-Planung oder das E/A-Verhalten für anspruchsvolle Anwendungen wie KI-Training oder ‑Bereitstellung, Datenbanken, Webserver mit hohem Traffic oder latenzempfindliche Dienste.
- Sicherheitshärtung:Wenden Sie bestimmte Sicherheitseinstellungen auf Kernelebene an oder schränken Sie bestimmte Systemverhalten ein, um die Angriffsfläche zu verringern.
- Ressourcenverwaltung:Hier können Sie genau festlegen, wie
kubeletPIDs, Speicherplatz, die Bereinigung von Image-Restmüll oder CPU- und Arbeitsspeicherressourcen verwaltet. - Kompatibilität von Arbeitslasten:Damit wird sichergestellt, dass die Knotenumgebung bestimmte Voraussetzungen für spezielle Software oder ältere Anwendungen erfüllt, die bestimmte Kerneleinstellungen erfordern.
Weitere Optionen zum Anpassen von Knotenkonfigurationen
Sie können die Knotenkonfiguration auch mit anderen Methoden anpassen:
- Laufzeitkonfigurationsdatei: Wenn Sie die containerd-Containerlaufzeit auf Ihren GKE-Knoten anpassen möchten, können Sie eine andere Datei verwenden, die als Laufzeitkonfigurationsdatei bezeichnet wird. Weitere Informationen finden Sie unter containerd-Konfiguration in GKE-Knoten anpassen.
- ComputeClass: Sie können Knotenattribute in der GKE-Spezifikation für ComputeClass angeben. Sie können ComputeClasses sowohl im GKE Autopilot-Modus als auch im Standardmodus in GKE-Version 1.32.1-gke.1729000 und höher verwenden. Weitere Informationen finden Sie unter Knotensystemkonfiguration anpassen.
- DaemonSets: Sie können auch DaemonSets verwenden, um Knoten anzupassen. Weitere Informationen finden Sie unter Automatisches Bootstrapping von GKE-Knoten mit DaemonSets.
Knotensystemkonfigurationen werden in Windows Server-Knoten nicht unterstützt.
Hinweise
Bevor Sie beginnen, müssen Sie Folgendes tun:
- Befehlszeilentools installieren:
- Wenn Sie die gcloud CLI-Beispiele in diesem Dokument verwenden, müssen Sie die Google Cloud CLI installieren und konfigurieren.
- Wenn Sie die Terraform-Beispiele verwenden, müssen Sie Terraform installieren und konfigurieren.
- Berechtigungen erteilen: Sie benötigen die entsprechenden IAM-Berechtigungen zum Erstellen und Aktualisieren von GKE-Clustern und Knotenpools, z. B.
container.clusterAdminoder eine andere Rolle mit entsprechenden Berechtigungen. - Mögliche Unterbrechungen von Arbeitslasten einplanen: Benutzerdefinierte Knotenkonfigurationen werden auf Knotenpoolebene angewendet. Änderungen lösen in der Regel ein Rolling Update der Knoten im Pool aus, bei dem die Knoten neu erstellt werden. Planen Sie potenzielle Arbeitslastunterbrechungen ein und verwenden Sie gegebenenfalls Budgets für Pod-Störungen (Pod Disruption Budgets, PDBs).
- Alle Änderungen sichern und testen:Testen Sie Konfigurationsänderungen immer in einer Staging- oder Entwicklungsumgebung, bevor Sie sie in der Produktionsumgebung anwenden. Falsche Einstellungen können zu Knoteninstabilität oder Arbeitslastfehlern führen.
- GKE-Standardeinstellungen prüfen:GKE-Knoten-Images enthalten optimierte Standardkonfigurationen. Passen Sie Parameter nur an, wenn Sie einen bestimmten Bedarf haben und sich der Auswirkungen Ihrer Änderungen bewusst sind.
Knotensystemkonfiguration im GKE-Standardmodus verwenden
Wenn Sie eine Knotensystemkonfiguration verwenden, nutzen Sie eine YAML-Datei, die die Konfigurationsparameter für kubelet und den Linux-Kernel enthält. Knotensystemkonfigurationen sind auch im GKE-Autopilot-Modus verfügbar. In diesem Dokument wird jedoch beschrieben, wie Sie eine Konfigurationsdatei für den GKE-Standardmodus erstellen und verwenden.
So verwenden Sie eine Knotensystemkonfiguration im GKE Standard-Modus:
- Erstellen Sie eine Konfigurationsdatei. Diese Datei enthält die Konfigurationen
kubeletundsysctl. - Fügen Sie die Konfiguration hinzu, wenn Sie einen Cluster erstellen oder einen Knotenpool erstellen oder aktualisieren.
Konfigurationsdatei erstellen
Schreiben Sie die Konfiguration des Knotensystems in YAML. Im folgenden Beispiel werden Konfigurationen für die Optionen kubelet und sysctl hinzugefügt:
kubeletConfig:
cpuManagerPolicy: static
allowedUnsafeSysctls:
- 'kernel.shm*'
- 'kernel.msg*'
- 'kernel.sem'
- 'fs.mqueue*'
- 'net.*'
linuxConfig:
sysctl:
net.core.somaxconn: '2048'
net.ipv4.tcp_rmem: '4096 87380 6291456'
In diesem Beispiel gilt Folgendes:
- Mit dem Feld
cpuManagerPolicy: staticwirdkubeletso konfiguriert, dass die statische CPU-Verwaltungsrichtlinie verwendet wird. + Das Feldnet.core.somaxconn: '2048'begrenzt den Rückstandsocket listen()auf 2.048 Byte. - Das Feld
net.ipv4.tcp_rmem: '4096 87380 6291456'legt den Mindest-, Standard- und Höchstwert für den TCP-Socket-Empfang-Zwischenspeicher auf 4.096 Byte, 87.380 Byte bzw. 6.291.456 Byte fest.
Wenn Sie Konfigurationen nur für kubelet oder sysctl hinzufügen möchten, fügen Sie nur diesen Abschnitt in die Konfiguration Ihres Knotensystems ein. Wenn Sie beispielsweise eine kubelet-Konfiguration hinzufügen möchten, erstellen Sie die folgende Datei:
kubeletConfig:
cpuManagerPolicy: static
Eine vollständige Liste der Felder, die Sie der Konfiguration Ihres Knotensystems hinzufügen können, finden Sie in den Abschnitten Kubelet-Konfigurationsoptionen und Sysctl-Konfigurationsoptionen.
Konfiguration einem Standard-Knotenpool hinzufügen
Nachdem Sie die Knotenkonfiguration erstellt haben, fügen Sie das Flag --system-config-from-file über die Google Cloud CLI hinzu. Sie können dieses Flag hinzufügen, wenn Sie einen Cluster erstellen oder einen Knotenpool erstellen oder aktualisieren. Mit der Google Cloud Console können Sie keine Knotensystemkonfiguration hinzufügen.
Cluster mit der Knotensystemkonfiguration erstellen
Sie können eine Knotenkonfiguration während der Clustererstellung mit der gcloud CLI oder Terraform hinzufügen. In der folgenden Anleitung wird die Knotensystemkonfiguration auf den Standardknotenpool angewendet:
gcloud-CLI
gcloud container clusters create CLUSTER_NAME \
--location=LOCATION \
--system-config-from-file=SYSTEM_CONFIG_PATH
Ersetzen Sie Folgendes:
CLUSTER_NAMEist der Name des ClustersLOCATION: die Compute-Zone oder ‑Region des Clusters.SYSTEM_CONFIG_PATH: der Pfad zur Datei, die Ihrekubelet- undsysctl-Konfigurationen enthält
Nachdem Sie eine Knotensystemkonfiguration angewendet haben, verwendet der Standardknotenpool des Clusters die von Ihnen definierten Einstellungen.
Terraform
Informationen zum Erstellen eines regionalen Clusters mit einer benutzerdefinierten Knotensystemkonfiguration mit Terraform finden Sie im folgenden Beispiel:
Weitere Informationen zur Verwendung von Terraform finden Sie unter Terraform-Unterstützung für GKE.
Neuen Knotenpool mit der Knotensystemkonfiguration erstellen
Sie können eine Knotenkonfiguration hinzufügen, wenn Sie einen neuen Knotenpool mit der gcloud CLI oder Terraform erstellen.
In der folgenden Anleitung wird die Knotensystemkonfiguration auf einen neuen Knotenpool angewendet:
gcloud-CLI
gcloud container node-pools create POOL_NAME \
--cluster CLUSTER_NAME \
--location=LOCATION \
--system-config-from-file=SYSTEM_CONFIG_PATH
Ersetzen Sie Folgendes:
POOL_NAMEist der Name des KnotenpoolsCLUSTER_NAMEist der Name des Clusters, dem Sie einen Knotenpool hinzufügen möchtenLOCATION: die Compute-Zone oder ‑Region des Clusters.SYSTEM_CONFIG_PATH: der Pfad zur Datei, die Ihrekubelet- undsysctl-Konfigurationen enthält
Terraform
Informationen zum Erstellen eines Knotenpools mit einer benutzerdefinierten Knotensystemkonfiguration mit Terraform finden Sie im folgenden Beispiel:
Weitere Informationen zur Verwendung von Terraform finden Sie unter Terraform-Unterstützung für GKE.
Knotensystemkonfiguration eines vorhandenen Knotenpools aktualisieren
Sie können die Knotensystemkonfiguration eines vorhandenen Knotenpools mit dem folgenden Befehl aktualisieren:
gcloud container node-pools update POOL_NAME \
--cluster=CLUSTER_NAME \
--location=LOCATION \
--system-config-from-file=SYSTEM_CONFIG_PATH
Ersetzen Sie Folgendes:
POOL_NAMEist der Name des Knotenpools, den Sie aktualisieren möchten.CLUSTER_NAMEist der Name des Clusters, den Sie aktualisieren möchtenLOCATION: die Compute-Zone oder ‑Region des Clusters.SYSTEM_CONFIG_PATH: Der Pfad zur Datei, die Ihrekubelet- undsysctl-Konfigurationen enthält.
Für diese Änderung müssen die Knoten neu erstellt werden, was zu Unterbrechungen Ihrer laufenden Arbeitslasten führen kann. Weitere Informationen zu dieser speziellen Änderung finden Sie in der entsprechenden Zeile in der Tabelle Manuelle Änderungen, bei denen die Knoten mit einer Knotenupgrade-Strategie neu erstellt werden, ohne die Wartungsrichtlinien zu berücksichtigen.
Weitere Informationen zu Knoten-Updates finden Sie unter Unterbrechungen durch Knoten-Updates planen.
Knotensystemkonfiguration bearbeiten
Zum Bearbeiten einer Konfiguration für ein Knotensystem können Sie einen neuen Knotenpool mit der gewünschten Konfiguration erstellen oder die Knotensystemkonfiguration eines vorhandenen Knotenpools aktualisieren.
Bearbeitung durch Erstellen eines Knotenpools
So bearbeiten Sie eine Knotensystemkonfiguration durch Erstellen eines Knotenpools:
- Erstellen Sie eine Konfigurationsdatei mit der gewünschten Konfiguration.
- Fügen Sie die Konfiguration einem neuen Knotenpool hinzu.
- Migrieren Sie Ihre Arbeitslasten zum neuen Knotenpool.
- Löschen Sie den alten Knotenpool.
Bearbeitung durch Aktualisieren eines vorhandenen Knotenpools
Wenn Sie die Knotensystemkonfiguration eines vorhandenen Knotenpools bearbeiten möchten, folgen Sie der Anleitung auf dem Tab Knotenpool aktualisieren unter Konfiguration einem Knotenpool hinzufügen. Wenn Sie eine Knotensystemkonfiguration aktualisieren und die neue Konfiguration die vorhandene Systemkonfiguration des Knotenpools überschreibt, müssen die Knoten neu erstellt werden. Wenn Sie Parameter während einer Aktualisierung weglassen, werden sie auf die entsprechenden Standardwerte zurückgesetzt.
Wenn Sie die Knotensystemkonfiguration auf die Standardeinstellungen zurücksetzen möchten, aktualisieren Sie Ihre Konfigurationsdatei mit leeren Werten für die Felder kubelet und sysctl, z. B.:
kubeletConfig: {}
linuxConfig:
sysctl: {}
Knotensystemkonfiguration löschen
So entfernen Sie eine Knotensystemkonfiguration:
- Erstellen Sie einen Knotenpool.
- Migrieren Sie Ihre Arbeitslasten zum neuen Knotenpool.
- Löschen Sie den Knotenpool mit der alten Knotensystemkonfiguration.
Konfigurationsoptionen für kubelet
In den Tabellen in diesem Abschnitt werden die kubelet-Optionen beschrieben, die Sie ändern können.
CPU-Verwaltung
In der folgenden Tabelle werden die Optionen für die CPU-Verwaltung für kubelet beschrieben.
kubelet-Konfigurationseinstellungen |
Beschränkungen | Standardeinstellung | Beschreibung |
|---|---|---|---|
cpuCFSQuota |
Muss true oder false sein. |
true |
Diese Einstellung erzwingt das CPU-Limit des Pods. Wenn Sie diesen Wert auf false setzen, werden die CPU-Limits für Pods ignoriert.Das Ignorieren von CPU-Limits kann in bestimmten Szenarien, in denen Pods empfindlich auf CPU-Limits reagieren, wünschenswert sein. Das Risiko, cpuCFSQuota zu deaktivieren, besteht darin, dass ein nicht autorisierter Pod mehr CPU-Ressourcen verbrauchen kann als beabsichtigt. |
cpuCFSQuotaPeriod |
Muss eine Zeitdauer sein. | "100ms" |
Mit dieser Einstellung wird der Wert des CPU-CFS-Kontingentbereichs cpu.cfs_period_us festgelegt, der angibt, wie oft der Zugriff einer Gruppe auf CPU-Ressourcen verteilt werden soll. Mit dieser Option können Sie das CPU-Drosselungsverhalten anpassen. |
Speicherverwaltung und Entfernung
In der folgenden Tabelle werden die änderbaren Optionen für die Speicherverwaltung und das Entfernen von Daten beschrieben. Dieser Abschnitt enthält auch eine separate Tabelle mit den änderbaren Optionen für das evictionSoft-Flag.
kubelet-Konfigurationseinstellungen |
Beschränkungen | Standardeinstellung | Beschreibung |
|---|---|---|---|
evictionSoft |
Zuordnung von Signalnamen. Informationen zu Wertbeschränkungen finden Sie in der folgenden Tabelle. | none |
Mit dieser Einstellung werden Signalnamen einer Menge oder einem Prozentsatz zugeordnet, der die Grenzwerte für das vorläufige Entfernen definiert. Für einen Schwellenwert für den vorläufigen Ausschluss muss es eine Kulanzfrist geben. Der kubelet entfernt Pods erst, wenn der Kulanzzeitraum überschritten wurde. |
evictionSoftGracePeriod |
Zuordnung von Signalnamen. Der Wert muss für jeden Signalnamen eine positive Dauer sein, die kleiner als 5m ist. Gültige Zeiteinheiten sind ns, us (oder µs), ms, s oder m. |
none |
Mit dieser Einstellung werden Signalnamen Zeiträumen zugeordnet, die Kulanzzeiten für Soft-Eviction-Schwellenwerte definieren. Für jeden Schwellenwert für den sanften Ausschluss muss ein entsprechender Kulanzzeitraum angegeben werden. |
evictionMinimumReclaim |
Zuordnung von Signalnamen. Der Wert muss für jeden Signalnamen ein positiver Prozentsatz unter 10% sein. |
none |
Mit dieser Einstellung werden Signalnamen Prozentwerten zugeordnet, die den Mindestbetrag einer bestimmten Ressource definieren, die kubelet zurückfordert, wenn ein Pod entfernt wird. |
evictionMaxPodGracePeriodSeconds |
Der Wert muss eine Ganzzahl zwischen 0 und 300 sein. |
0 |
Diese Einstellung definiert in Sekunden den maximalen Kulanzzeitraum für die Pod-Beendigung während des Entfernens. |
In der folgenden Tabelle sind die änderbaren Optionen für das Flag evictionSoft aufgeführt.
Dieselben Optionen gelten auch für die Flags evictionSoftGracePeriod und evictionMinimumReclaim, allerdings mit anderen Einschränkungen.
kubelet-Konfigurationseinstellungen |
Beschränkungen | Standardeinstellung | Beschreibung |
|---|---|---|---|
memoryAvailable |
Der Wert muss eine Menge sein, die größer als 100Mi und kleiner als 50% des Arbeitsspeichers des Knotens ist. |
none |
Diese Einstellung gibt die Menge an Arbeitsspeicher an, die vor dem Soft Eviction verfügbar ist. Definiert die Menge des memory.available-Signals in der kubelet . |
nodefsAvailable |
Wert muss zwischen 10% und 50% liegen |
none |
Diese Einstellung gibt den verfügbaren nodefs vor dem Soft Eviction an. Definiert die Menge des nodefs.available-Signals in der kubelet . |
nodefsInodesFree |
Wert muss zwischen 5% und 50% liegen |
none |
Diese Einstellung gibt die Anzahl der nodefs-Inodes an, die vor dem Soft-Eviction frei sind. Definiert die Menge des nodefs.inodesFree-Signals in der kubelet . |
imagefsAvailable |
Wert muss zwischen 15% und 50% liegen |
none |
Diese Einstellung gibt das verfügbare Image-Dateisystem vor dem Soft Eviction an. Definiert die Menge des imagefs.available-Signals im kubelet . |
imagefsInodesFree |
Wert muss zwischen 5% und 50% liegen |
none |
Diese Einstellung gibt die Imagefs-Inodes an, die vor dem Soft Eviction frei sind. Definiert die Menge des imagefs.inodesFree-Signals im kubelet. |
pidAvailable |
Wert muss zwischen 10% und 50% liegen |
none |
Diese Einstellung gibt die PIDs an, die vor dem Soft Eviction verfügbar sind. Definiert die Menge des pid.available-Signals im kubelet. |
singleProcessOOMKill
|
Der Wert muss true oder false sein. |
true für cgroupv1-Knoten, false für cgroupv2-Knoten. |
Mit dieser Einstellung wird festgelegt, ob die Prozesse im Container einzeln oder als Gruppe beendet werden.
Verfügbar in GKE-Versionen 1.32.4-gke.1132000, 1.33.0-gke.1748000 oder höher. |
PID-Verwaltung
In der folgenden Tabelle werden die änderbaren Optionen für die PID-Verwaltung beschrieben.
kubelet-Konfigurationseinstellungen |
Beschränkungen | Standardeinstellung | Beschreibung |
|---|---|---|---|
podPidsLimit |
Wert muss zwischen 1024 und 4194304 liegen |
none |
Mit dieser Einstellung wird die maximale Anzahl von Prozess-IDs (PIDs) festgelegt, die jeder Pod verwenden kann. |
Logging
In der folgenden Tabelle werden die änderbaren Optionen für die Protokollierung beschrieben.
kubelet-Konfigurationseinstellungen |
Beschränkungen | Standardeinstellung | Beschreibung |
|---|---|---|---|
containerLogMaxSize |
Der Wert muss eine positive Zahl und ein Einheitssuffix zwischen 10Mi und 500Mi (einschließlich) sein. |
10Mi |
Mit dieser Einstellung wird die Einstellung containerLogMaxSize der Richtlinie zur Container-Logrotation gesteuert. Damit können Sie die maximale Größe für jede Logdatei konfigurieren. Der Standardwert ist 10Mi. Gültige Einheiten sind Ki, Mi und Gi. |
containerLogMaxFiles |
Der Wert muss eine Ganzzahl zwischen 2 und 10 (einschließlich) sein. |
5 |
Mit dieser Einstellung wird die Einstellung containerLogMaxFiles der Rotationsrichtlinie für Container-Logdateien gesteuert. Damit können Sie die maximal zulässige Anzahl von Dateien für jeden Container konfigurieren. Der Standardwert ist 5. Die Gesamtprotokollgröße (container_log_max_size*container_log_max_files) pro Container darf 1% des Gesamtspeichers des Knotens nicht überschreiten. |
Automatische Speicherbereinigung von Bildern
In der folgenden Tabelle werden die änderbaren Optionen für die automatische Löschung von Bildern beschrieben.
kubelet-Konfigurationseinstellungen |
Beschränkungen | Standardeinstellung | Beschreibung |
|---|---|---|---|
imageGCHighThresholdPercent |
Der Wert muss eine ganze Zahl zwischen 10 und 85 (einschließlich) und höher als imageGcLowThresholdPercent sein. |
85 |
Mit dieser Einstellung wird der Prozentsatz der Laufwerknutzung angegeben, oberhalb dessen die automatische Speicherbereinigung für Images ausgeführt wird. Sie stellt die höchste Laufwerknutzung dar, die für die automatische Speicherbereinigung erreicht werden soll. Der Prozentsatz wird berechnet, indem der Wert dieses Felds durch 100 geteilt wird. |
imageGCLowThresholdPercent |
Der Wert muss eine Ganzzahl zwischen 10 und 85 (einschließlich) und kleiner als imageGcHighThresholdPercent sein. |
80 |
Diese Einstellung definiert den Prozentsatz der Laufwerknutzung, unterhalb dessen die automatische Speicherbereinigung von Images nie ausgeführt wird. Sie stellt die niedrigste Laufwerknutzung dar, die für die automatische Speicherbereinigung erreicht werden soll. Der Prozentsatz wird berechnet, indem der Wert dieses Felds durch 100 geteilt wird. |
imageMinimumGcAge |
Der Wert muss eine Zeitdauer sein, die nicht länger als 2m ist. Gültige Zeiteinheiten sind ns, us (oder µs), ms, s, m oder h. |
2m |
Mit dieser Einstellung wird das Mindestalter für ein nicht verwendetes Bild festgelegt, bevor es automatisch bereinigt wird. |
imageMaximumGcAge |
Der Wert muss eine Zeitdauer sein. | 0s |
Mit dieser Einstellung wird das maximale Alter festgelegt, das ein Bild haben darf, bevor es gelöscht wird. Der Standardwert dieses Felds ist Verfügbar in GKE-Versionen 1.30.7-gke.1076000, 1.31.3-gke.1023000 oder höher. |
Image-Abruf
In der folgenden Tabelle werden die änderbaren Optionen für das Pullen von Images beschrieben.
kubelet-Konfigurationseinstellungen |
Beschränkungen | Standardeinstellung | Beschreibung |
|---|---|---|---|
maxParallelImagePulls |
Der Wert muss eine Ganzzahl zwischen 2 und 5 sein. | 2 oder 3, je nach Laufwerkstyp. |
Diese Einstellung definiert die maximale Anzahl paralleler Image-Pulls. Der Standardwert wird durch den Typ des Bootlaufwerks bestimmt. |
Sicherheit und unsichere Vorgänge
In der folgenden Tabelle werden die änderbaren Optionen zum Konfigurieren der Sicherheit und zum Verarbeiten unsicherer Vorgänge beschrieben.
kubelet-Konfigurationseinstellungen |
Beschränkungen | Standardeinstellung | Beschreibung |
|---|---|---|---|
allowedUnsafeSysctls |
Liste der Namen oder Gruppen von
|
none |
Mit dieser Einstellung wird eine durch Kommas getrennte Zulassungsliste mit unsicheren sysctl-Namen oder sysctl-Gruppen definiert, die für die Pods festgelegt werden können. |
insecureKubeletReadonlyPortEnabled |
Der Wert muss ein boolescher Wert sein, entweder true oder false. |
true |
Mit dieser Einstellung wird der unsichere schreibgeschützte Port kubelet 10255 für jeden neuen Knotenpool in Ihrem Cluster deaktiviert. Wenn Sie diese Einstellung in dieser Datei konfigurieren, können Sie die Einstellung nicht mit einem GKE API-Client auf Clusterebene ändern. |
Resource Manager
Kubernetes bietet eine Reihe von Ressourcenmanagern. Sie können diese Ressourcenmanager so konfigurieren, dass sie die Ausrichtung von Knotenressourcen für Pods koordinieren und optimieren, die mit bestimmten Anforderungen an CPU-, Geräte- und Speicherressourcen (Huge Pages) konfiguriert sind.
In der folgenden Tabelle werden die änderbaren Optionen für Ressourcenmanager beschrieben.
kubelet-Konfigurationseinstellungen |
Beschränkungen | Standardeinstellung | Beschreibung |
|---|---|---|---|
cpuManagerPolicy |
Der Wert muss none oder static sein. |
none |
Diese Einstellung steuert die CPU-Manager-Richtlinie von kubelet. Der Standardwert ist none. Dies ist das Standard-CPU-Affinitätsschema und bietet keine Affinität, die über den Autoscaling-Planer hinaus automatisch erfolgt.Wenn Sie diesen Wert auf static setzen, kann Pods, die sowohl in der QoS-Klasse Guaranteed sind als auch ganzzahlige CPU-Anfragen haben, die exklusive Verwendung von CPUs zugewiesen werden. |
memoryManager.policy |
Der Wert muss None oder Static sein. |
None |
Mit dieser Einstellung wird die Wenn Sie diesen Wert auf Diese Einstellung wird für Cluster unterstützt, deren Steuerungsebene die GKE-Version 1.32.3-gke.1785000 oder höher ausführt. |
topologyManager |
Der Wert muss eine der unterstützten Einstellungen für die jeweiligen Felder sein. Sie können das Feld |
|
Mit diesen Einstellungen wird die Sie können die Richtlinien- und Bereichseinstellungen unabhängig voneinander festlegen. Weitere Informationen zu diesen Einstellungen finden Sie unter Topology Manager-Bereiche und -Richtlinien. Die folgenden GKE-Ressourcen unterstützen diese Einstellung:
|
Sysctl-Konfigurationsoptionen
Zur Optimierung der Leistung Ihres Systems können Sie Linux-Kernel-Parameter ändern. In den Tabellen in diesem Abschnitt werden die verschiedenen Kernelparameter beschrieben, die Sie konfigurieren können.
Dateisystemparameter (fs.*)
In der folgenden Tabelle werden die änderbaren Parameter für das Linux-Dateisystem beschrieben. Mit diesen Einstellungen wird das Verhalten des Linux-Dateisystems gesteuert, z. B. Dateihandle-Limits und Ereignisüberwachung.
Sysctl Parameter |
Beschränkungen | Beschreibung |
|---|---|---|
fs.aio-max-nr |
Muss zwischen [65536, 4194304] liegen. | Diese Einstellung definiert die maximale systemweite Anzahl asynchroner E/A-Anfragen. |
fs.file-max |
Muss zwischen [104857, 67108864] liegen. | Diese Einstellung definiert die maximale Anzahl von Dateihandles, die der Linux-Kernel zuweisen kann. |
fs.inotify.max_user_instances |
Muss zwischen [8192, 1048576] liegen. | Mit dieser Einstellung wird die maximale Anzahl von inotify-Instanzen festgelegt, die ein Nutzer erstellen kann. |
fs.inotify.max_user_watches |
Muss zwischen [8192, 1048576] liegen. | Mit dieser Einstellung wird die maximale Anzahl von inotify-Watches festgelegt, die ein Nutzer erstellen kann. |
fs.nr_open |
Muss zwischen [1048576, 2147483584] liegen. | Mit dieser Einstellung wird die maximale Anzahl von Dateideskriptoren definiert, die von einem Prozess geöffnet werden können. |
Kernelparameter (kernel.*)
In der folgenden Tabelle werden die änderbaren Parameter für den Linux-Kernel beschrieben. Mit diesen Einstellungen werden wichtige Kernelfunktionen konfiguriert, einschließlich der Zuweisung von gemeinsam genutztem Speicher.
| Sysctl-Parameter | Beschränkungen | Beschreibung |
|---|---|---|
kernel.shmmni |
Muss zwischen [4096, 32768] liegen. | Diese Einstellung definiert die systemweite maximale Anzahl von Segmenten für gemeinsam genutzten Speicher. Wenn dieser Wert nicht festgelegt ist, wird standardmäßig 4096 verwendet. |
kernel.shmmax |
Muss zwischen [0, 18446744073692774399] liegen. | Diese Einstellung definiert die maximale Größe eines einzelnen Shared-Memory-Segments in Byte, das vom Kernel zugelassen wird. Dieser Wert wird ignoriert, wenn er größer als die tatsächliche Menge an RAM ist. Das bedeutet, dass der gesamte verfügbare RAM freigegeben werden kann. |
kernel.shmall |
Muss zwischen [0, 18446744073692774399] liegen. | Mit dieser Einstellung wird die Gesamtzahl der gemeinsam genutzten Speicherseiten definiert, die gleichzeitig im System verwendet werden können. Eine Seite hat auf der AMD64- und Intel 64-Architektur eine Größe von 4.096 Byte. |
kernel.perf_event_paranoid |
Muss zwischen [-1, 3] liegen. | Mit dieser Einstellung wird die Verwendung des Systems für Leistungsereignisse durch Nutzer ohne Berechtigungen ohne CAP_PERFMON gesteuert. Der Standardwert im Kernel ist 2. |
kernel.sched_rt_runtime_us |
Muss zwischen [-1, 1000000] liegen. | Mit dieser Einstellung wird ein globales Limit für die Zeit festgelegt, die für die Echtzeitplanung verwendet werden kann. |
kernel.softlockup_panic |
Optional (boolesch). | Mit dieser Einstellung wird gesteuert, ob der Kernel abstürzt, wenn ein Soft Lockup erkannt wird. |
kernel.yama.ptrace_scope |
Muss zwischen 0 und 3 liegen. |
Mit dieser Einstellung werden der Umfang und die Einschränkungen für den Systemaufruf
|
kernel.kptr_restrict |
Muss zwischen 0 und 2 liegen. | Diese Einstellung gibt an, ob Einschränkungen für die Offenlegung von Kerneladressen über /proc und andere Schnittstellen gelten. |
kernel.dmesg_restrict |
Optional (boolesch). | Mit dieser Einstellung wird angegeben, ob Nutzer ohne Berechtigungen daran gehindert werden, mit dmesg(8) Nachrichten aus dem Logpuffer des Kernels aufzurufen. |
kernel.sysrq |
Muss zwischen [0, 511] liegen. |
Mit dieser Einstellung wird festgelegt, welche Funktionen über die SysRq-Taste aufgerufen werden dürfen. Mögliche Werte:
|
Netzwerkparameter (net.*)
In der folgenden Tabelle werden die änderbaren Parameter für die Netzwerkfunktionen beschrieben. Mit diesen Einstellungen wird die Leistung und das Verhalten des Netzwerk-Stacks optimiert, von Socket-Puffern bis zur Verbindungsverfolgung.
| Sysctl-Parameter | Beschränkungen | Beschreibung |
|---|---|---|
net.core.busy_poll |
Beliebige positive Ganzzahl, die kleiner als 2.147.483.647 ist. | Mit dieser Einstellung wird das Zeitlimit für die Busy-Abfrage mit niedriger Latenz für „Poll and Select“ definiert. Sie gibt die ungefähre Zeit in Mikrosekunden an, die mit dem Warten auf Ereignisse verbracht wird. |
net.core.busy_read |
Beliebige positive Ganzzahl, die kleiner als 2.147.483.647 ist. | Mit dieser Einstellung wird das Zeitlimit für das Busy-Polling mit niedriger Latenz für Socket-Lesevorgänge definiert. Sie gibt die ungefähre Zeit in Mikrosekunden an, die für das Busy-Loop-Warten auf Pakete in der Geräte-Warteschlange benötigt wird. |
net.core.netdev_max_backlog |
Beliebige positive Ganzzahl, die kleiner als 2.147.483.647 ist. | Diese Einstellung definiert die maximale Anzahl von Paketen, die auf der INPUT-Seite in die Warteschlange gestellt werden, wenn die Schnittstelle Pakete schneller empfängt, als der Kernel sie verarbeiten kann. |
net.core.rmem_default |
Beliebige positive Ganzzahl, die kleiner als 2.147.483.647 ist. | Mit dieser Einstellung wird die Standardgröße des Empfangssocket-Puffers in Byte definiert. |
net.core.rmem_max |
Beliebige positive Ganzzahl, die kleiner als 2.147.483.647 ist. | Diese Einstellung definiert die maximale Größe des Socket-Zwischenspeichers für eingehende Daten in Byte. |
net.core.wmem_default |
Beliebige positive Ganzzahl, die kleiner als 2.147.483.647 ist. | Diese Einstellung definiert die Standardeinstellung für den Socket-Sende-Puffer in Byte. |
net.core.wmem_max |
Beliebige positive Ganzzahl, die kleiner als 2.147.483.647 ist. | Diese Einstellung definiert die maximale Größe des Socket-Zwischenspeichers für ausgehende Daten in Byte. |
net.core.optmem_max |
Beliebige positive Ganzzahl, die kleiner als 2.147.483.647 ist. | Mit dieser Einstellung wird die maximal zulässige Größe des Hilfspuffers pro Socket definiert. |
net.core.somaxconn |
Muss zwischen [128, 2147483647] liegen. | Mit dieser Einstellung wird das Limit für den socket listen()-Backlog definiert, der im Userspace als SOMAXCONN bekannt ist. Die Standardeinstellung ist 128. |
net.ipv4.tcp_rmem |
{min, default, max} (jeweils > 0, Arbeitsspeicher in Byte). | Diese Einstellung definiert die Mindestgröße des Zwischenspeichers für eingehende Daten, der von UDP-Sockets bei der Moderation verwendet wird. Die Standardeinstellung ist 1 Seite. |
net.ipv4.tcp_wmem |
{min, default, max} (jeweils > 0, Arbeitsspeicher in Byte). | Diese Einstellung definiert die Mindestgröße des Sendepuffers, der von UDP-Sockets in der Moderation verwendet wird, in Byte. Die Standardeinstellung ist 1 Seite. |
net.ipv4.tcp_tw_reuse |
Muss zwischen 0 und 1 liegen. | Mit dieser Einstellung wird festgelegt, ob die Wiederverwendung von Sockets im Status TIME_WAIT für neue Verbindungen zulässig ist, wenn dies aus Protokollsicht sicher ist. Der Standardwert ist 0. |
net.ipv4.tcp_max_orphans |
Muss zwischen [16384, 262144] liegen. | Mit dieser Einstellung wird die maximale Anzahl von TCP-Sockets definiert, die keinem Nutzer-Datei-Handle zugeordnet sind. |
net.ipv4.tcp_max_tw_buckets |
Muss zwischen [4096, 2147483647] liegen. | Diese Einstellung definiert die maximale Anzahl von Timewait-Sockets, die gleichzeitig vom System gehalten werden. Wenn diese Zahl überschritten wird, wird der Time-Wait-Socket sofort zerstört und eine Warnung ausgegeben. |
net.ipv4.tcp_syn_retries |
Muss zwischen [1, 127] liegen. | Mit dieser Einstellung wird die Anzahl der Wiederholungen für die Übertragung von anfänglichen SYNs für einen aktiven TCP-Verbindungsversuch festgelegt. |
net.ipv4.tcp_ecn |
Muss zwischen 0 und 2 liegen. | Mit dieser Einstellung wird die Verwendung von ECN (Explicit Congestion Notification) durch TCP gesteuert. ECN wird nur verwendet, wenn beide Enden der TCP-Verbindung die Unterstützung dafür angeben. |
net.ipv4.tcp_mtu_probing |
Muss zwischen 0 und 2 liegen. |
Mit dieser Einstellung wird die TCP-Paketierungsschicht-Path MTU Discovery gesteuert. Folgende Werte werden unterstützt:
|
net.ipv4.tcp_congestion_control |
Muss einer der unterstützten Werte aus der Spalte Beschreibung sein. | Diese Einstellung wird nicht unterstützt, wenn GKE Dataplane V2 im Cluster aktiviert ist. Die folgenden unterstützten Werte sind vom Bildtyp abhängig:
|
net.ipv6.conf.all.disable_ipv6 |
Boolescher Wert. | Wenn Sie diesen Wert ändern, ändern Sie auch die Einstellung conf/default/disable_ipv6 und alle disable_ipv6-Einstellungen pro Schnittstelle in denselben Wert. |
net.ipv6.conf.default.disable_ipv6 |
Boolescher Wert. | Durch diese Einstellung wird der Betrieb von IPv6 deaktiviert. |
net.netfilter.nf_conntrack_acct |
Muss zwischen 0 und 1 liegen. | Mit dieser Einstellung wird die Abrechnung des Connection-Tracking-Ablaufs aktiviert. Der Standardwert ist 0. Das bedeutet, dass die Einstellung deaktiviert ist. Verfügbar in GKE-Versionen 1.32.0-gke.1448000 oder höher. |
net.netfilter.nf_conntrack_max |
Muss zwischen [65536, 4194304] liegen. | Diese Einstellung definiert die Größe der Tabelle für das Verbindungs-Tracking. Wenn der Maximalwert erreicht ist, schlägt die neue Verbindung fehl. Verfügbar in GKE-Versionen 1.32.0-gke.1448000 oder höher. |
net.netfilter.nf_conntrack_buckets |
Muss zwischen [65536, 524288] liegen. |
Mit dieser Einstellung wird die Größe der Hashtabelle definiert. Die empfohlene Einstellung ist das Ergebnis von: Verfügbar in GKE-Versionen 1.32.0-gke.1448000 oder höher. |
net.netfilter.nf_conntrack_tcp_timeout_close_wait |
Muss zwischen [60, 3600] liegen. |
Mit dieser Einstellung wird der Zeitraum in Sekunden definiert, in dem die TCP-Verbindungen im Status Verfügbar in GKE-Versionen 1.32.0-gke.1448000 oder höher. |
net.netfilter.nf_conntrack_tcp_timeout_established |
Muss zwischen [600, 86400] liegen. |
Mit dieser Einstellung wird die Dauer in Sekunden für inaktive Verbindungen festgelegt, bevor sie automatisch aus der Verbindungstabelle gelöscht werden. Verfügbar in GKE-Versionen 1.32.0-gke.1448000 oder höher. |
net.netfilter.nf_conntrack_tcp_timeout_time_wait |
Muss zwischen 1 und 600 liegen. |
Mit dieser Einstellung wird der Zeitraum in Sekunden definiert, in dem die TCP-Verbindungen im Status Verfügbar in GKE-Versionen 1.32.0-gke.1448000 oder höher. |
Parameter für den virtuellen Arbeitsspeicher (vm.*)
In der folgenden Tabelle werden die änderbaren Parameter für das Subsystem für virtuellen Speicher beschrieben. Mit diesen Einstellungen wird das Subsystem für virtuellen Speicher verwaltet, das steuert, wie der Kernel Speicher, Swapping und Festplatten-Caching verarbeitet.
sysctl Parameter |
Beschränkungen | Beschreibung |
|---|---|---|
vm.max_map_count |
Muss zwischen [65536, 2147483647] liegen. | In dieser Datei wird die maximale Anzahl von Memory-Map-Bereichen definiert, die ein Prozess haben kann. |
vm.dirty_background_ratio |
Muss zwischen 1 und 100 liegen. | Mit dieser Einstellung wird der Prozentsatz des Systemspeichers definiert, der mit „dirty pages“ gefüllt werden kann, bevor Hintergrund-Kernel-Flusher-Threads mit dem Writeback beginnen. Der Wert muss kleiner als der Wert des Felds vm.dirty_ratio sein. |
vm.dirty_background_bytes |
Muss zwischen [0, 68719476736] liegen. |
Mit dieser Einstellung wird die Menge an nicht bereinigtem Arbeitsspeicher definiert, bei der die Hintergrund-Kernel-Flusher-Threads mit dem Writeback beginnen.
|
vm.dirty_expire_centisecs |
Muss zwischen [0, 6000] liegen. | Diese Einstellung definiert das maximale Alter in Hundertstelsekunden, das schmutzige Daten im Arbeitsspeicher haben können, bevor Kernel-Flusher-Threads sie auf die Festplatte schreiben. |
vm.dirty_ratio |
Muss zwischen 1 und 100 liegen. | Mit dieser Einstellung wird der Prozentsatz des Systemspeichers definiert, der mit „dirty pages“ gefüllt werden kann, bevor Prozesse, die Schreibvorgänge ausführen, zum Blockieren und synchronen Schreiben von „dirty data“ gezwungen werden. |
vm.dirty_bytes |
Muss zwischen [0, 68719476736] liegen. |
Mit dieser Einstellung wird die Menge an nicht bereinigtem Arbeitsspeicher definiert, ab der ein Prozess, der Festplattenzugriffe generiert, selbst mit dem Writeback beginnt. Der zulässige Mindestwert für
|
vm.dirty_writeback_centisecs |
Muss zwischen 0 und 1.000 liegen. | Mit dieser Einstellung wird das Intervall in Hundertstelsekunden definiert, in dem Kernel-Flusher-Threads aktiviert werden, um alte, nicht gespeicherte Daten auf die Festplatte zu schreiben. |
vm.overcommit_memory |
Muss zwischen {0, 1, 2} liegen. |
Mit dieser Einstellung wird die Strategie des Kernels für den Umgang mit Memory Overcommitment festgelegt. Die Werte sind folgende:
|
vm.overcommit_ratio |
Muss zwischen [0, 100] liegen. | Mit dieser Einstellung wird der Prozentsatz des physischen RAM definiert, der für Overcommit zulässig ist, wenn der Wert des Felds vm.overcommit_memory auf 2 festgelegt ist. |
vm.vfs_cache_pressure |
Muss zwischen [0, 100] liegen. | Mit dieser Einstellung wird die Präferenz des Kernels für das Freigeben von Arbeitsspeicher angepasst, der für Dentry- (Verzeichnis-) und Inode-Caches verwendet wird. |
vm.swappiness |
Muss zwischen [0, 200] liegen. | Mit dieser Einstellung wird die Tendenz des Kernels gesteuert, Prozesse aus dem physischen Arbeitsspeicher auf die Swap-Festplatte zu verschieben. Der Standardwert ist 60. |
vm.watermark_scale_factor |
Muss zwischen [10, 3000] liegen. | Mit dieser Einstellung wird die Aggressivität von kswapd gesteuert. Sie definiert den verbleibenden Speicher, bevor kswapd aktiviert wird, und den Speicher, der freigegeben werden muss, bevor kswapd in den Ruhezustand wechselt. Der Standardwert ist 10. |
vm.min_free_kbytes |
Muss zwischen [67584, 1048576] liegen. | Mit dieser Einstellung wird der minimale freie Speicher vor OOM definiert. Der Standardwert ist 67584. |
Weitere Informationen zu den unterstützten Werten für die einzelnen sysctl-Flags finden Sie in der gcloud CLI-Dokumentation zu --system-config-from-file.
Unterschiedliche Linux-Namespaces können eindeutige Werte für ein bestimmtes sysctl-Flag haben, während andere global für den gesamten Knoten gelten. Durch das Aktualisieren der sysctl-Optionen mithilfe einer Knotensystemkonfiguration wird sichergestellt, dass sysctl global auf den Knoten und in jedem Namespace angewendet wird. Dadurch hat jeder Pod identische sysctl-Werte in jedem Linux-Namespace.
Konfigurationsoptionen für den Linux-cgroup-Modus
Die Containerlaufzeit und kubelet verwenden Linux-Kernel-cgroups für die Ressourcenverwaltung, z. B. wie viel CPU oder Arbeitsspeicher auf jeden Container in einem Pod zugreifen kann. Es gibt zwei Versionen des cgroup-Subsystems im Kernel: cgroupv1 und cgroupv2.
Die Kubernetes-Unterstützung für cgroupv2 wurde in Kubernetes-Version 1.18 als Alphaversion, in Version 1.22 als Betaversion und in Version 1.25 als allgemein verfügbar eingeführt. Weitere Informationen finden Sie in der Dokumentation zu Kubernetes cgroups v2.
Mit der Knotensystemkonfiguration können Sie die cgroup-Konfiguration Ihrer Knotenpools anpassen. Sie können cgroupv1 oder cgroupv2 verwenden. In GKE wird cgroupv2 für neue Standardknotenpools mit Version 1.26 und höher und cgroupv1 für Knotenpools mit Versionen vor 1.26 verwendet. Bei Knotenpools, die mit der automatischen Knotenbereitstellung erstellt wurden, hängt die cgroup-Konfiguration von der ursprünglichen Clusterversion ab, nicht von der Knotenpoolversion. cgroupv1 wird auf Arm-Computern nicht unterstützt.
Mit der Knotensystemkonfiguration können Sie die Einstellung für einen Knotenpool so ändern, dass cgroupv1 oder cgroupv2 explizit verwendet wird. Durch das Upgrade eines vorhandenen Knotenpools, der cgroupv1 verwendet, auf Version 1.26 wird die Einstellung nicht auf cgroupv2 geändert.
Vorhandene Knotenpools, auf denen eine Version vor 1.26 ausgeführt wird und die keine benutzerdefinierte cgroup-Konfiguration enthalten, verwenden weiterhin cgroupv1.
Wenn Sie die Einstellung ändern möchten, müssen Sie cgroupv2 für den vorhandenen Knotenpool explizit angeben.
Wenn Sie Ihren Knotenpool beispielsweise für die Verwendung von cgroupv2 konfigurieren möchten, verwenden Sie eine Knotensystemkonfigurationsdatei wie diese:
linuxConfig:
cgroupMode: 'CGROUP_MODE_V2'
Die unterstützten cgroupMode-Optionen sind:
CGROUP_MODE_V1:cgroupv1für den Knotenpool verwenden.CGROUP_MODE_V2:cgroupv2für den Knotenpool verwenden.CGROUP_MODE_UNSPECIFIED: Verwende die standardmäßige GKE-cgroup-Konfiguration.
Für die Verwendung von cgroupv2 gelten die folgenden Anforderungen und Einschränkungen:
- Für einen Knotenpool, auf dem eine Version vor 1.26 ausgeführt wird, müssen Sie die gcloud CLI-Version 408.0.0 oder höher verwenden. Alternativ können Sie gcloud beta mit Version 395.0.0 oder höher verwenden.
- Ihre Cluster und Ihre Knotenpools müssen die GKE-Version 1.24.2-gke.300 oder höher ausführen.
- Sie müssen entweder das Container-Optimized OS mit containerd oder das Ubuntu mit containerd-Knoten-Image verwenden.
- Wenn eine Ihrer Arbeitslasten vom Lesen des cgroup-Dateisystems (
/sys/fs/cgroup/...) abhängt, sorgen Sie dafür, dass sie mit dercgroupv2API kompatibel sind. - Wenn Sie Monitoring-Tools oder Drittanbieter-Tools verwenden, achten Sie darauf, dass sie mit
cgroupv2kompatibel sind. - Wenn Sie Java-Arbeitslasten (JDK) verwenden, empfehlen wir Ihnen, Versionen zu verwenden, die cgroupv2 vollständig unterstützen, einschließlich JDK
8u372, JDK 11.0.16 oder höher oder JDK 15 oder höher.
Cgroup-Konfiguration prüfen
Wenn Sie eine Knotensystemkonfiguration hinzufügen, müssen die Knoten in GKE neu erstellt werden, um die Änderungen zu implementieren. Nachdem Sie die Konfiguration einem Knotenpool hinzugefügt und die Knoten neu erstellt haben, können Sie die neue Konfiguration überprüfen.
Sie können die cgroup-Konfiguration für Knoten in einem Knotenpool mit der gcloud CLI oder dem kubectl-Befehlszeilentool prüfen:
gcloud-CLI
Prüfen Sie die cgroup-Konfiguration für einen Knotenpool:
gcloud container node-pools describe POOL_NAME \
--format='value(Config.effectiveCgroupMode)'
Ersetzen Sie dabei POOL_NAME durch den Namen Ihres Knotenpools.
Die mögliche Ausgabe ist eine der folgenden:
EFFECTIVE_CGROUP_MODE_V1: Die Knoten verwendencgroupv1.EFFECTIVE_CGROUP_MODE_V2: Die Knoten verwendencgroupv2.
Die Ausgabe zeigt erst dann die neue cgroup-Konfiguration an, wenn die Knoten im Knotenpool neu erstellt wurden. Die Ausgabe ist für Windows Server-Knotenpools leer, die cgroup nicht unterstützen.
kubectl
Wählen Sie einen Knoten aus und stellen Sie so eine Verbindung zu ihm her, um die cgroup-Konfiguration für Knoten in diesem Knotenpool mit kubectl zu prüfen:
- Erstellen Sie eine interaktive Shell mit einem beliebigen Knoten im Knotenpool. Ersetzen Sie im Befehl
mynodedurch den Namen eines beliebigen Knotens im Knotenpool. - Cgroup-Version auf Linux-Knoten ermitteln.
Konfigurationsoptionen für Linux-Huge-Pages
Sie können eine Konfigurationsdatei des Knotensystems verwenden, um Huge Pages vorab zuzuweisen. Kubernetes unterstützt vorab zugewiesene Huge Pages als Ressourcentyp, ähnlich wie CPU oder Arbeitsspeicher.
Für die Verwendung von Huge Pages gelten die folgenden Einschränkungen und Anforderungen:
- Damit der Knoten nicht vollständig von Huge Pages belegt wird, darf die Gesamtgröße der zugewiesenen Huge Pages nicht mehr als einer der folgenden Werte betragen:
- Auf Geräten mit weniger als 30 GB Arbeitsspeicher: 60% des gesamten Arbeitsspeichers. Auf einer e2-standard-2-Maschine mit 8 GB Arbeitsspeicher können Sie beispielsweise nicht mehr als 4,8 GB für Huge Pages zuweisen.
- Auf Maschinen mit mehr als 30 GB Arbeitsspeicher: 80% des gesamten Arbeitsspeichers. Auf c4a-standard-8-Maschinen mit 32 GB Arbeitsspeicher dürfen Huge Pages beispielsweise nicht größer als 25,6 GB sein.
- Große Seiten mit 1 GB sind nur für die Maschinentypen A3, C2D, C3, C3D, C4, C4A, C4D, CT5E, CT5LP, CT6E, H3, M2, M3, M4 oder Z3 verfügbar.
In der folgenden Tabelle werden die änderbaren Einstellungen für Linux-Hugepages beschrieben.
| Konfigurationsparameter | Beschränkungen | Standardwert | Beschreibung |
|---|---|---|---|
hugepage_size2m |
Ganzzahlanzahl. Vorbehaltlich der zuvor beschriebenen Speicherzuweisungslimits. | 0 |
Mit dieser Einstellung wird eine bestimmte Anzahl von 2 MB-Hugepages vorab zugewiesen. |
hugepage_size1g |
Ganzzahlanzahl. Unterliegt sowohl den zuvor beschriebenen Arbeitsspeicher- als auch den Maschinentypbeschränkungen. | 0 |
Mit dieser Einstellung wird eine bestimmte Anzahl von 1-GB-Hugepages vorab zugewiesen. |
Transparent Huge Pages (THP)
Sie können eine Konfigurationsdatei des Knotensystems verwenden, um die Unterstützung für transparente Huge Pages des Linux-Kernels zu aktivieren. Bei THP weist der Kernel Prozessen automatisch Huge Pages zu, ohne dass eine manuelle Vorabzuweisung erforderlich ist.
In der folgenden Tabelle werden die änderbaren Parameter für THP beschrieben.
| Konfigurationsparameter | Unterstützte Werte | Standardwert | Beschreibung |
|---|---|---|---|
transparentHugepageEnabled |
|
UNSPECIFIED |
Mit dieser Einstellung wird gesteuert, ob THP für anonymen Speicher aktiviert ist. |
transparentHugepageDefrag |
|
UNSPECIFIED |
Mit dieser Einstellung wird die Defragmentierungskonfiguration für THP definiert. |
THP ist in GKE-Version 1.33.2-gke.4655000 oder höher verfügbar. Sie ist auch für neue TPU-Knotenpools in GKE-Version 1.33.2-gke.4655000 oder höher standardmäßig aktiviert. THP wird nicht aktiviert, wenn Sie vorhandene Knotenpools auf eine unterstützte Version oder höher aktualisieren.