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.
Kubernetes-Volume-Speicher mit Amazon EBS verwenden
Anmerkung
Neu: Amazon EKS Auto Mode automatisiert Routineaufgaben für Blockspeicher. Weitere Informationen erhalten Sie unter Bereitstellung einer Beispiel-Workload mit Statusverwaltung in EKS Auto Mode.
Der Amazon Elastic Block Store (Amazon EBS) Container-Storage-Interface (CSI)-Treiber
Überlegungen
-
Es ist nicht erforderlich, den Amazon-EBS-CSI-Controller in Clustern von EKS Auto Mode zu installieren.
-
Sie können Amazon-EBS-Volumes nicht in Fargate-Pods mounten.
-
Sie können den Amazon-EBS-CSI-Controller auf Fargate-Knoten ausführen, aber der Amazon-EBS-CSI-Knoten
DaemonSetkann nur auf Amazon-EC2-Instances ausgeführt werden. -
Amazon-EBS-Volumes und der Amazon-EBS-CSI-Treiber sind nicht mit Amazon EKS Hybrid Nodes kompatibel.
-
Support wird für die neueste Add-On-Version und eine vorherige Version bereitgestellt. Fehler oder Schwachstellen, die in der neuesten Version gefunden werden, werden in einer neuen Nebenversion auf die vorherige Version zurückportiert.
-
EKS Auto Mode erfordert, dass Speicherklassen
ebs---csi---eks.amazonaws.com.rproxy.govskope.caals Bereitsteller verwenden. Der Standard-Amazon-EBS-CSI-Treiber (ebs.csi.aws.com) verwaltet seine eigenen Volumes separat. Um vorhandene Volumes mit EKS Auto Mode zu verwenden, migrieren Sie diese mithilfe von Volume-Snapshots in eine Speicherklasse, die den Bereisteller im Automatikmodus verwendet.
Wichtig
Um die Snapshot-Funktionalität des Amazon-EBS-CSI-Treibers nutzen zu können, ist es erforderlich, zunächst den CSI-Snapshot-Controller zu installieren. Weitere Informationen finden Sie unter Snapshot-Funktion für CSI-Volumes aktivieren.
Voraussetzungen
-
Einen vorhandenen -Cluster. Führen Sie den folgenden Befehl aus, um die erforderliche Plattformversion anzuzeigen.
aws eks describe-addon-versions --addon-name aws-ebs-csi-driver -
Der EBS-CSI-Treiber benötigt AWS-IAM-Berechtigungen.
-
AWS empfiehlt die Verwendung von EKS Pod Identities. Weitere Informationen finden Sie unter Übersicht über die Einrichtung von EKS-Pod-Identitäten.
-
Informationen zu IAM-Rollen für Servicekonten finden Sie unter Erstellen Sie einen IAM-OIDC-Anbieter für Ihren Cluster.
-
Schritt 1: Erstellen einer IAM-Rolle
Das Amazon-EBS-CSI-Plugin benötigt IAM-Berechtigungen, um Anrufe an AWS-APIs in Ihrem Auftrag zu tätigen. Wenn Sie diese Schritte nicht ausführen, wird beim Versuch, das Add-On zu installieren und kubectl describe pvc auszuführen, failed to provision volume with StorageClass zusammen mit einem could not create volume in EC2: UnauthorizedOperation-Fehler angezeigt. Weitere Informationen finden Sie unter Treiberberechtigung einrichten
Anmerkung
Pods haben Zugriff auf die Berechtigungen, die der IAM-Rolle zugewiesen sind, es sei denn, Sie blockieren den Zugriff auf IMDS. Weitere Informationen finden Sie unter Amazon-EKS-Cluster mit bewährten Methoden sichern.
Das folgende Verfahren zeigt Ihnen, wie Sie eine IAM-Rolle erstellen und ihr die von AWS verwaltete Richtlinie hinzufügen. Um dieses Verfahren umzusetzen, können Sie eines dieser Tools verwenden:
Anmerkung
Sie können eine selbstverwaltete Richtlinie mit eingeschränkten Berechtigungen erstellen. Überprüfen Sie AmazonEBSCSIDriverPolicy und erstellen Sie eine benutzerdefinierte IAM-Richtlinie mit eingeschränkten Berechtigungen.
Anmerkung
Die spezifischen Schritte in diesem Verfahren sind für die Verwendung des Treibers als Amazon-EKS-Add-on geschrieben. Es sind verschiedene Schritte erforderlich, um den Treiber als selbstverwaltetes Add-on zu verwenden. Weitere Informationen finden Sie unter Treiberberechtigungen einrichten
eksctl
-
Erstellen Sie eine IAM-Rolle und fügen Sie eine Richtlinie an. AWS unterhält eine von AWS verwaltete Richtlinie oder Sie können eine eigene benutzerdefinierte Richtlinie erstellen. Sie können eine IAM-Rolle erstellen und die verwaltete Richtlinie AWS mit dem folgenden Befehl anhängen. Ersetzen Sie
my-clusterdurch den Namen Ihres Clusters. Der Befehl stellt einen AWS-CloudFormation-Stack bereit, der eine IAM-Rolle erstellt und ihr die IAM-Richtlinie anfügt.eksctl create iamserviceaccount \ --name ebs-csi-controller-sa \ --namespace kube-system \ --cluster my-cluster \ --role-name AmazonEKS_EBS_CSI_DriverRole \ --role-only \ --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --approve -
Sie können diesen Schritt überspringen, wenn Sie keinen benutzerdefinierten KMS-Schlüssel
verwenden. Wenn Sie einen zur Verschlüsselung Ihrer Amazon-EBS-Volumes verwenden, passen Sie die IAM-Rolle nach Bedarf an. Führen Sie beispielsweise folgende Schritte aus: -
Kopieren Sie den folgenden Code und fügen Sie diesen in eine neue
kms-key-for-encryption-on-ebs.json-Datei ein. Ersetzen Siecustom-key-arndurch die benutzerdefinierte KMS-Schlüssel-ARN.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] } -
Erstellen Sie die Richtlinie. Sie können
KMS_Key_For_Encryption_On_EBS_Policyin einen anderen Namen ändern. In diesem Fall ändern Sie sie auch in den späteren Schritten.aws iam create-policy \ --policy-name KMS_Key_For_Encryption_On_EBS_Policy \ --policy-document file://kms-key-for-encryption-on-ebs.json -
Hängen Sie die IAM-Richtlinie mit dem folgenden Befehl an die Rolle an. Ersetzen Sie
111122223333durch Ihre Konto-ID.aws iam attach-role-policy \ --policy-arn arn:aws:iam::111122223333:policy/KMS_Key_For_Encryption_On_EBS_Policy \ --role-name AmazonEKS_EBS_CSI_DriverRole
-
AWS-Managementkonsole
-
Öffnen Sie die IAM-Konsole unter https://console.aws.amazon.com/iam/
. -
Wählen Sie im linken Navigationsbereich Roles aus.
-
Klicken Sie auf der Seite Roles (Rollen) auf Create role (Rolle erstellen).
-
Gehen Sie auf der Seite Select trusted entity (Vertrauenswürdige Entität auswählen) wie folgt vor:
-
Wählen Sie im Abschnitt Trusted entity type (Typ der vertrauenswürdigen Entität) die Option Web identity (Web-Identität) aus.
-
Wählen Sie für Identity provider (Identitätsanbieter) die Option OpenID Connect provider URL (OpenID-Connect-Anbieter-URL) für Ihren Cluster aus (wie unter Overview (Übersicht) in Amazon EKS gezeigt).
-
Wählen Sie für Audience (Zielgruppe)
sts.amazonaws.com. -
Wählen Sie Weiter aus.
-
-
Gehen Sie auf der Seite Add permissions (Berechtigungen hinzufügen) wie folgt vor:
-
Geben Sie im Feld Filter policies (Filterrichtlinien)
AmazonEBSCSIDriverPolicyein. -
Aktivieren Sie das Kontrollkästchen links neben der
AmazonEBSCSIDriverPolicy, die bei der Suche zurückgegeben wurde. -
Wählen Sie Weiter aus.
-
-
Gehen Sie auf der Seite Name, review, and create (Benennen, überprüfen und erstellen) wie folgt vor:
-
Geben Sie unter Rollenname einen eindeutigen Namen für Ihre Rolle ein, beispielsweise
AmazonEKS_EBS_CSI_DriverRole. -
Fügen Sie der Rolle unter Tags hinzufügen (optional) Metadaten hinzu, indem Sie Tags als Schlüssel-Wert-Paare anfügen. Weitere Informationen zur Verwendung von Tags in IAM finden Sie unter Markieren von IAM-Ressourcen im IAM-Benutzerhandbuch.
-
Wählen Sie Create role (Rolle erstellen) aus.
-
-
Nachdem die Rolle erstellt wurde, wählen Sie die Rolle in der Konsole aus, um sie zur Bearbeitung zu öffnen.
-
Wählen Sie die Registerkarte Trust Relationships (Vertrauensstellungen) und dann Edit trust policy (Vertrauensrichtlinie bearbeiten) aus.
-
Suchen Sie die Zeile, die der folgenden Zeile ähnelt:
"oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com"Fügen Sie am Ende der vorherigen Zeile ein Komma hinzu und fügen Sie anschließend die folgende Zeile nach der vorherigen Zeile hinzu. Ersetzen Sie den
region-codedurch die AWS-Region, in der sich Ihr Cluster befindet. Ersetzen SieEXAMPLED539D4633E53DE1B71EXAMPLEmit der OIDC-Anbieter-ID Ihres Clusters."oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" -
Wählen Sie Update Policy (Richtlinie aktualisieren) aus, um den Vorgang abzuschließen.
-
Wenn Sie einen benutzerdefinierten KMS-Schlüssel
für die Verschlüsselung auf Ihren Amazon-EBS-Volumes verwenden, passen Sie die IAM-Rolle nach Bedarf an. Führen Sie beispielsweise folgende Schritte aus: -
Wählen Sie im linken Navigationsbereich die Option Policies aus.
-
Wählen Sie auf der Seite Policies (Richtlinien) die Option Create a policy (Richtlinie erstellen).
-
Wählen Sie auf der Seite Create policy (Richtlinie erstellen) die Registerkarte JSON aus.
-
Kopieren Sie den folgenden Code und fügen Sie ihn in den Editor ein. Ersetzen Sie dabei
custom-key-arndurch die benutzerdefinierte KMS-Schlüssel-ARN.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] } -
Wählen Sie Next: Markierungen (Weiter: Markierungen).
-
Wählen Sie auf der Seite Add Tags (optional) (Tags hinzufügen (optional)) die Option Next: Review (Weiter: Prüfen).
-
Geben Sie unter Name einen eindeutigen Namen für Ihre Richtlinie ein (z. B.
KMS_Key_For_Encryption_On_EBS_Policy). -
Wählen Sie Create Policy (Richtlinie erstellen) aus.
-
Wählen Sie im linken Navigationsbereich Roles aus.
-
Wählen Sie
AmazonEKS_EBS_CSI_DriverRolein der Konsole zum Bearbeiten aus. -
Wählen Sie in der Dropdown-Liste Add permissions (Berechtigungen hinzufügen) Attach policies (Richtlinien hinzufügen) aus.
-
Geben Sie im Feld Filterrichtlinien
KMS_Key_For_Encryption_On_EBS_Policyein. -
Aktivieren Sie das Kontrollkästchen links neben
KMS_Key_For_Encryption_On_EBS_Policy, das bei der Suche zurückgegeben wurde. -
Wählen Sie Richtlinien anfügen.
-
AWS-CLI
-
Zeigen Sie die OIDC-Anbieter-URL Ihres Clusters an. Ersetzen Sie den
cluster-namedurch Ihren Cluster-Namen. Wenn die Ausgabe des BefehlsNoneist, überprüfen Sie die Voraussetzungen.aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output textEine Beispielausgabe sieht wie folgt aus.
https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE -
Erstellen Sie die IAM-Rolle und gewähren Sie ihr die
AssumeRoleWithWebIdentity-Aktion.-
Kopieren Sie den folgenden Inhalt in eine Datei mit dem Namen
aws-ebs-csi-driver-trust-policy.json. Ersetzen Sie111122223333durch Ihre Konto-ID. Ersetzen SieEXAMPLED539D4633E53DE1B71EXAMPLEundregion-codedurch den im vorherigen Schritt zurückgegebenen Werte.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::111122223333:oidc-provider/oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:aud": "sts.amazonaws.com", "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" } } } ] } -
Erstellen Sie die -Rolle. Sie können
AmazonEKS_EBS_CSI_DriverRolein einen anderen Namen ändern. Wenn Sie es ändern, ändern Sie es in späteren Schritten.aws iam create-role \ --role-name AmazonEKS_EBS_CSI_DriverRole \ --assume-role-policy-document file://"aws-ebs-csi-driver-trust-policy.json"
-
-
Anfügen einer Richtlinie. AWS verwaltet eine AWS verwaltete Richtlinie oder Sie können Ihre eigene benutzerdefinierte Richtlinie erstellen. Hängen Sie die verwaltete Richtlinie AWS mit dem folgenden Befehl an die Rolle an.
aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --role-name AmazonEKS_EBS_CSI_DriverRole -
Wenn Sie einen benutzerdefinierten KMS-Schlüssel
für die Verschlüsselung auf Ihren Amazon-EBS-Volumes verwenden, passen Sie die IAM-Rolle nach Bedarf an. Führen Sie beispielsweise folgende Schritte aus: -
Kopieren Sie den folgenden Code und fügen Sie diesen in eine neue
kms-key-for-encryption-on-ebs.json-Datei ein. Ersetzen Siecustom-key-arndurch die benutzerdefinierte KMS-Schlüssel-ARN.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:CreateGrant", "kms:ListGrants", "kms:RevokeGrant" ], "Resource": ["custom-key-arn"], "Condition": { "Bool": { "kms:GrantIsForAWSResource": "true" } } }, { "Effect": "Allow", "Action": [ "kms:Encrypt", "kms:Decrypt", "kms:ReEncrypt*", "kms:GenerateDataKey*", "kms:DescribeKey" ], "Resource": ["custom-key-arn"] } ] } -
Erstellen Sie die Richtlinie. Sie können
KMS_Key_For_Encryption_On_EBS_Policyin einen anderen Namen ändern. In diesem Fall ändern Sie sie auch in den späteren Schritten.aws iam create-policy \ --policy-name KMS_Key_For_Encryption_On_EBS_Policy \ --policy-document file://kms-key-for-encryption-on-ebs.json -
Hängen Sie die IAM-Richtlinie mit dem folgenden Befehl an die Rolle an. Ersetzen Sie
111122223333durch Ihre Konto-ID.aws iam attach-role-policy \ --policy-arn arn:aws:iam::111122223333:policy/KMS_Key_For_Encryption_On_EBS_Policy \ --role-name AmazonEKS_EBS_CSI_DriverRole
-
Nachdem Sie die IAM-Rolle des Amazon-EBS-CSI-Treibers erstellt haben, können Sie mit dem nächsten Abschnitt fortfahren. Wenn Sie das Add-on mit dieser IAM-Rolle bereitstellen, wird ein Servicekonto mit dem Namen ebs-csi-controller-sa erstellt und für die Verwendung konfiguriert. Das Servicekonto ist an ein Kubernetes clusterrole gebunden, dem die erforderlichen Kubernetes-Berechtigungen zugewiesen sind.
Schritt 2: Amazon-EBS-CSI-Treiber herunterladen
Wir empfehlen Ihnen, den Amazon-EBS-CSI-Treiber über das Amazon-EKS-Add-On zu installieren, um die Sicherheit zu erhöhen und den Arbeitsaufwand zu reduzieren. Wenn Sie ein Amazon-EKS-Add-on zu Ihrem Cluster hinzufügen möchten, lesen Sie Erstellung eines Amazon-EKS-Add-Ons. Weitere Informationen zu Add-ons finden Sie unter Amazon-EKS-Add-ons.
Wichtig
Bevor Sie den Amazon-EBS-Treiber als Amazon-EKS-Add-On hinzufügen, stellen Sie sicher, dass Sie keine selbstverwaltete Version des Treibers auf Ihrem Cluster installiert haben. Wenn ja, lesen Sie Deinstallieren eines selbstverwalteten Amazon-EBS-CSI-Treibers
Wenn Sie eine selbstverwaltete Installation des Amazon-EBS-CSI-Treibers bevorzugen, finden Sie weitere Informationen unter Installation
Schritt 3: Beispielanwendung bereitstellen
Sie können eine Vielzahl von Beispiel-Apps bereitstellen und diese nach Bedarf ändern. Weitere Informationen finden Sie unter Kubernetes-Beispiele