Unterstützung für die Verbesserung dieser Seite beitragen
Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.
Erstellen einer Speicherklasse
Eine StorageClass im Amazon EKS Auto Mode definiert, wie Amazon-EBS-Volumes automatisch bereitgestellt werden, wenn Anwendungen persistenten Speicher anfordern. Auf dieser Seite wird erläutert, wie Sie eine StorageClass erstellen und konfigurieren, das mit dem Amazon EKS Auto Mode zusammenarbeitet, um EBS-Volumes bereitzustellen.
Durch die Konfiguration einer StorageClass können Sie Standardeinstellungen für Ihre EBS-Volumes festlegen, darunter Volume-Typ, Verschlüsselung, IOPS und andere Speicherparameter. Sie können StorageClass auch so konfigurieren, dass AWS-KMS-Schlüssel für die Verschlüsselungsverwaltung verwendet werden.
EKS Auto Mode erstellt keine StorageClass für Sie. Sie müssen eine StorageClass-Referenzierung ebs.csi.eks.amazonaws.com erstellen, um die Speicherfunktion von EKS Auto Mode zu nutzen.
Erstellen Sie zunächst eine Datei mit dem Namen storage-class.yaml:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: auto-ebs-sc annotations: storageclass.kubernetes.io/is-default-class: "true" allowedTopologies: - matchLabelExpressions: - key: eks.amazonaws.com/compute-type values: - auto provisioner: ebs.csi.eks.amazonaws.com volumeBindingMode: WaitForFirstConsumer parameters: type: gp3 encrypted: "true"
Wenden Sie anschließend die Speicherklasse auf Ihren Cluster an.
kubectl apply -f storage-class.yaml
Zentrale Komponenten:
-
provisioner: ebs.csi.eks.amazonaws.com– Verwendet EKS Auto Mode -
allowedTopologies– Durch die Angabe vonmatchLabelExpressionsfür die Übereinstimmung miteks.amazonaws.com/compute-type:autowird sichergestellt, dass Ihre Pods, die ein Volume benötigen, das automatisch im Automatikmodus bereitgestellt wird, nicht auf Nicht-Automatik-Knoten geplant werden. -
volumeBindingMode: WaitForFirstConsumer– Verzögert die Volume-Erstellung, bis ein Pod sie benötigt -
type: gp3– Gibt den EBS-Volume-Typ an -
encrypted: "true"– EBS verschlüsselt alle Volumes, die mitStorageClasserstellt wurden. EBS verwendet denaws/ebs-Standard-Schlüssel-Alias. Weitere Informationen finden Sie unter So funktioniert die Amazon-EBS-Verschlüsselung im Amazon-EBS-Benutzerhandbuch. Dieser Wert ist optional, wird jedoch empfohlen. -
storageclass.kubernetes.io/is-default-class: "true"– Kubernetes verwendet standardmäßig diese Speicherklasse, sofern Sie nicht für einen persistenten Volume-Anspruch eine andere Volume-Klasse angeben. Dieser Wert ist optional. Seien Sie beim Festlegen dieses Werts vorsichtig, wenn Sie von einem anderen Speicher-Controller migrieren.
Selbstverwalteter KMS-Schlüssel zur Verschlüsselung von EBS-Volumes verwenden
Um einen selbstverwalteten KMS-Schlüssel zur Verschlüsselung von EBS-Volumes zu verwenden, die durch EKS Auto Mode automatisiert werden, müssen Sie folgende Schritte ausführen:
-
Erstellen Sie einen selbstverwalteten KMS-Schlüssel.
-
Weitere Informationen finden Sie unter Erstellen eines symmetrischen KMS-Verschlüsselungsschlüssels oder So verwendet Amazon Elastic Block Store (Amazon EBS) KMS im KMS-Benutzerhandbuch.
-
-
Erstellen Sie eine neue Richtlinie, die den Zugriff auf den KMS-Schlüssel zulässt.
-
Verwenden Sie die unten aufgeführte Beispiel-IAM-Richtlinie, um die Richtlinie zu erstellen. Geben Sie die ARN des neuen selbstverwalteten KMS-Schlüssels ein. Weitere Informationen finden Sie unter Erstellen von Rollen und Anhängen von Richtlinien (Konsole) im AWS-IAM-Benutzerhandbuch.
-
-
Fügen Sie die Richtlinie der EKS- Cluster-Rolle an.
-
Verwenden Sie die AWS-Konsole, um die ARN der EKS-Cluster-Rolle zu ermitteln. Die Rollen-Informationen sind im Abschnitt Übersicht einsehbar. Weitere Informationen finden Sie unter Amazon-EKS-Cluster-IAM-Rolle.
-
-
Aktualisieren Sie
StorageClass, um auf die KMS-Schlüssel-ID imparameters.kmsKeyId-Feld zu verweisen.
Beispiel für eine selbstverwaltete KMS-IAM-Richtlinie
Aktualisieren Sie die folgenden Werte in der unten aufgeführten Richtlinie:
-
<account-id>– Ihre AWS-Konto-ID, wie z. B.111122223333 -
<aws-region>– Die AWS-Region Ihres Clusters, z. B.us-west-2
{ "Version": "2012-10-17", "Id": "key-auto-policy-3", "Statement": [ { "Sid": "Enable IAM User Permissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::<account-id>:root" }, "Action": "kms:*", "Resource": "*" }, { "Sid": "Allow access through EBS for all principals in the account that are authorized to use EBS", "Effect": "Allow", "Principal": { "AWS": "*" }, "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:CreateGrant", "kms:DescribeKey" ], "Resource": "*", "Condition": { "StringEquals": { "kms:CallerAccount": "<account-id>", "kms:ViaService": "ec2.<aws-region>.amazonaws.com" } } } ] }
Beispiel für ein selbstverwaltetes KMS StorageClass
parameters: type: gp3 encrypted: "true" kmsKeyId: <custom-key-arn>
StorageClass-Parameter-Referenz
Allgemeine Informationen zu den StorageClass-Kubernetes-Ressourcen finden Sie unter Speicherklassen
Der parameters-Abschnitt der StorageClass-Ressource ist spezifisch für AWS. Verwenden Sie die folgende Tabelle, um die verfügbaren Optionen zu überprüfen.
| Parameter | Werte | Standard | Beschreibung |
|---|---|---|---|
|
„csi.storage.k8s.io/fstype“ |
xfs, ext2, ext3, ext4 |
ext4 |
Dateisystemtyp, der während der Volume-Erstellung formatiert wird. Bei diesem Parameter wird zwischen Groß- und Kleinschreibung unterschieden! |
|
„type“ |
io1, io2, gp2, gp3, sc1, st1, standard, sbp1, sbg1 |
gp3 |
EBS-Volume-Typ. |
|
„iopsPerGB“ |
E/A-Vorgänge pro Sekunde pro GiB. Kann für IO1-, IO2- und GP3-Volumes angegeben werden. |
||
|
„allowAutoIOPSPerGBIncrease“ |
true, false |
false |
Bei |
|
„iops“ |
E/A-Vorgänge pro Sekunde. Kann für IO1-, IO2- und GP3-Volumes angegeben werden. |
||
|
„throughput“ |
125 |
Durchsatz in MiB/s. Nur wirksam, wenn der Datenträgertyp gp3 angegeben ist. |
|
|
„verschlüsselt“ |
true, false |
false |
Ob das Volume verschlüsselt werden soll oder nicht. Gültige Werte sind „wahr“ oder „falsch“. |
|
„blockExpress“ |
true, false |
false |
Ermöglicht die Erstellung von io2-Block-Express-Volumes. |
|
„kmsKeyId“ |
Die vollständige ARN des Schlüssels, der bei der Verschlüsselung des Volumes verwendet werden soll. Wenn nicht angegeben, verwendet AWS den Standard-KMS-Schlüssel für die Region, in der sich das Volume befindet. Wenn dieser nicht geändert wird, handelt es sich um einen automatisch generierten Schlüssel mit dem Namen |
||
|
„blockSize“ |
Die Blockgröße, die beim Formatieren des zugrunde liegenden Dateisystems verwendet werden soll. Wird nur auf Linux-Knoten und mit fstype |
||
|
„inodeSize“ |
Die Inode-Größe, die beim Formatieren des zugrunde liegenden Dateisystems verwendet werden soll. Wird nur auf Linux-Knoten und mit fstype |
||
|
„bytesPerInode“ |
Die |
||
|
„numberOfInodes“ |
Die |
||
|
„ext4BigAlloc“ |
true, false |
false |
Ändert das |
|
„ext4ClusterSize“ |
Die Cluster-Größe, die beim Formatieren eines |
Weitere Informationen finden Sie unter AWS-EBS-CSI-Treiber
Überlegungen
Anmerkung
Sie können Workloads, die von EKS-Auto-Mode-StorageClasses abhängen, nur auf EKS-Auto-Mode-Knoten bereitstellen. Wenn Sie über einen Cluster mit kombinierten Knotentypen verfügen, müssen Sie Ihre Workloads so konfigurieren, dass sie ausschließlich in EKS-Auto-Mode-Knoten ausgeführt werden. Weitere Informationen finden Sie unter Überprüfen, ob eine Workload in Knoten von EKS Auto Mode bereitgestellt wird.
Die Blockspeicherfunktion des EKS Auto Mode unterscheidet sich vom EBS-CSI-Treiber.
-
Statische Bereitstellung
-
Wenn Sie extern erstellte EBS-Volumes mit EKS Auto Mode verwenden möchten, müssen Sie manuell einen AWS-Tag mit dem Schlüssel
eks:eks-cluster-nameund dem Wert des Cluster-Namens hinzufügen.
-
-
Knoten-Startup-Taint
-
Es ist nicht möglich, das Node-Startup-Taint-Feature zu verwenden, um die Pod-Planung zu verhindern, bevor die Speicherkapazität bereit ist.
-
-
Benutzerdefinierte Tags auf dynamisch bereitgestellten Volumes
-
Sie können das CLI-Flag „extra-tag“ nicht verwenden, um benutzerdefinierte Tags für dynamisch bereitgestellte EBS-Volumes zu konfigurieren.
-
Sie können
StorageClass-Kennzeichnung verwenden, um benutzerdefinierte Tags hinzuzufügen. EKS Auto Mode fügt den zugehörigen AWS-Ressourcen Tags hinzu. Sie müssen die Cluster-IAM-Rolle für benutzerdefinierte Tags aktualisieren. Weitere Informationen finden Sie unter Benutzerdefinierte AWS-Tags für EKS-Automatik-Ressourcen.
-
-
Detaillierte EBS-Leistungsmetriken
-
Sie können nicht auf Prometheus-Metriken für die detaillierte EBS-Leistung zugreifen
-
Add-On „CSI-Snapshot Controller“ installieren
EKS Auto Mode ist mit dem Amazon-EKS-Add-On „CSI Snapshot Controller“ kompatibel.
AWS schlägt vor, dass Sie dieses Add-On so konfigurieren, dass es auf dem integrierten system-Knoten-Pool ausgeführt wird.
Weitere Informationen finden Sie unter:
So installieren Sie den Snapshot-Controller im System-Knoten-Pool
-
Öffnen Sie Ihren AWS-EKS-Cluster in der Konsole
-
Wählen Sie auf der Registerkarte Add-Ons die Option Weitere Add-Ons abrufen
-
Wählen Sie den CSI Snapshot Controller und dann Weiter
-
Wählen Sie auf der Seite Einstellungen für ausgewählte Add-Ons konfigurieren die Option Optionale Konfigurationseinstellungen aus, um das Add-On-Konfigurationsschema anzuzeigen.
-
Fügen Sie das folgende YAML ein, um den Snapshot-Controller dem
system-Knoten-Pool zuzuordnen. Der Snapshot-Controller enthält eine Toleranz für denCriticalAddonsOnly-Taint.{ "nodeSelector": { "karpenter.sh/nodepool": "system" } } -
Klicken Sie auf Weiter
-
-
Überprüfen Sie die Add-On-Konfiguration und wählen Sie dann Erstellen aus