Speichern Kubernetes Volumen mit Amazon EBS - Amazon EKS

Hilf mit, diese Seite zu verbessern

Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle zu verbessern.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Speichern Kubernetes Volumen mit Amazon EBS

Der Amazon Elastic Block Store (AmazonEBS) Container Storage Interface (CSI) -Treiber verwaltet den Lebenszyklus von EBS Amazon-Volumes als Speicher für Kubernetes Volumes, die Sie erstellen. Der EBS CSI Amazon-Treiber erstellt EBS Amazon-Volumen für diese Arten von Kubernetes Volumen: generische kurzlebige Volumen und persistente Volumen.

Überlegungen

  • Sie können keine EBS Amazon-Volumes auf Fargate mounten Pods.

  • Sie können den EBS CSI Amazon-Controller auf Fargate-Knoten ausführen, aber auf dem EBS CSI Amazon-Knoten DaemonSet kann nur auf EC2 Amazon-Instances ausgeführt werden.

  • Support wird für die neueste Add-On-Version und eine frühere Version bereitgestellt. In der neuesten Version gefundene Fehler oder Sicherheitslücken werden in einer neuen Nebenversion auf die vorherige Version zurückportiert.

Wichtig

Um die Snapshot-Funktionalität des EBS CSI Amazon-Treibers nutzen zu können, müssen Sie zuerst den CSI Snapshot-Controller installieren. Weitere Informationen finden Sie unter Snapshot-Funktionalität 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
  • Ein vorhandenes AWS Identity and Access Management (IAM) OpenID Connect (OIDC) Anbieter für Ihren Cluster. Informationen zum Feststellen, ob Sie bereits über einen verfügen oder einen erstellen müssen, finden Sie unter Erstelle eine IAM OIDC Anbieter für Ihren Cluster.

  • Wenn Sie ein clusterweites eingeschränktes PodSecurityPolicy verwenden, stellen Sie sicher, dass das Add-On über ausreichende Berechtigungen für die Bereitstellung verfügt. Für die Berechtigungen, die für jedes Add-on erforderlich sind Podfinden Sie in der entsprechenden Add-On-Manifestdefinition unter GitHub.

Schritt 1: Eine IAM Rolle erstellen

Das EBS CSI Amazon-Plugin benötigt IAM Berechtigungen, um in AWS APIs Ihrem Namen Anrufe tätigen zu können. Wenn Sie diese Schritte nicht ausführen, kubectl describe pvc wird beim Versuch, das Add-on zu installieren und auszuführenfailed to provision volume with StorageClass, ein could not create volume in EC2: UnauthorizedOperation Fehler angezeigt. Weitere Informationen finden Sie unter Treiberberechtigungen einrichten für GitHub.

Anmerkung

Pods hat Zugriff auf die Berechtigungen, die der IAM Rolle zugewiesen sind, es sei denn, Sie blockieren den Zugriff aufIMDS. Weitere Informationen finden Sie unter Schützen Sie EKS Amazon-Cluster mit Best Practices.

Das folgende Verfahren zeigt Ihnen, wie Sie eine IAM Rolle erstellen und ihr die AWS verwaltete Richtlinie zuordnen. Sie können eksctl, die AWS Management Console oder die AWS CLI verwenden.

Anmerkung

Die spezifischen Schritte in diesem Verfahren wurden für die Verwendung des Treibers als EKS Amazon-Add-on geschrieben. Es sind verschiedene Schritte erforderlich, um den Treiber als selbstverwaltetes Add-on zu verwenden. Weitere Informationen finden Sie unter Fahrerberechtigungen einrichten auf GitHub.

eksctl
Um Ihre EBS CSI IAM Amazon-Plug-in-Rolle zu erstellen mit eksctl
  1. Erstellen Sie eine IAM Rolle und fügen Sie eine Richtlinie hinzu. AWS verwaltet eine AWS verwaltete Richtlinie oder Sie können Ihre eigene benutzerdefinierte Richtlinie erstellen. Mit dem folgenden Befehl können Sie eine IAM Rolle erstellen und die AWS verwaltete Richtlinie anhängen. Ersetzen mein-Cluster mit dem Namen Ihres Clusters. Der Befehl stellt einen AWS CloudFormation Stack bereit, der eine IAM Rolle erstellt und ihr die IAM Richtlinie anhängt. Wenn sich Ihr Cluster in den Ländern AWS GovCloud (USA-Ost) oder AWS GovCloud (US-West) befindet AWS-Regionen, ersetzen Sie ihn durch. arn:aws: arn:aws-us-gov:

    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
  2. Wenn Sie einen benutzerdefinierten KMSSchlüssel für die Verschlüsselung Ihrer EBS Amazon-Volumes verwenden, passen Sie die IAM Rolle nach Bedarf an. Führen Sie beispielsweise folgende Schritte aus:

    1. Kopieren Sie den folgenden Code und fügen Sie diesen in eine neue kms-key-for-encryption-on-ebs.json-Datei ein. custom-key-arnErsetzen Sie ihn durch den benutzerdefinierten KMSSchlü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"] } ] }
    2. Erstellen Sie die Richtlinie. Sie können KMS_Key_For_Encryption_On_EBS_Policy in 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
    3. Hängen Sie die IAM Richtlinie mit dem folgenden Befehl an die Rolle an. Ersetzen Sie 111122223333 durch Ihre Konto-ID. Wenn sich Ihr Cluster in den Ländern AWS GovCloud (US-Ost) oder AWS GovCloud (US-West) befindet AWS-Regionen, ersetzen Sie ihn durcharn:aws:. arn:aws-us-gov:

      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 Management Console
Um Ihre EBS CSI IAM Amazon-Plug-in-Rolle mit dem zu erstellen AWS Management Console
  1. Öffnen Sie die IAM Konsole unter https://console.aws.amazon.com/iam/.

  2. Wählen Sie im linken Navigationsbereich Roles aus.

  3. Klicken Sie auf der Seite Roles (Rollen) auf Create role (Rolle erstellen).

  4. Gehen Sie auf der Seite Select trusted entity (Vertrauenswürdige Entität auswählen) wie folgt vor:

    1. Wählen Sie im Abschnitt Trusted entity type (Typ der vertrauenswürdigen Entität) die Option Web identity (Web-Identität) aus.

    2. Wählen Sie für Identity Provider die OpenID Connect Anbieter URL für Ihren Cluster (wie unter Übersicht in Amazon angezeigtEKS).

    3. Wählen Sie für Audience (Zielgruppe) sts.amazonaws.com.

    4. Wählen Sie Next (Weiter).

  5. Gehen Sie auf der Seite Add permissions (Berechtigungen hinzufügen) wie folgt vor:

    1. Geben Sie im Feld Filter policies (Filterrichtlinien) AmazonEBSCSIDriverPolicy ein.

    2. Aktivieren Sie das Kontrollkästchen links neben der AmazonEBSCSIDriverPolicy, die bei der Suche zurückgegeben wurde.

    3. Wählen Sie Next (Weiter).

  6. Gehen Sie auf der Seite Name, review, and create (Benennen, überprüfen und erstellen) wie folgt vor:

    1. Geben Sie unter Role name (Rollenname) einen eindeutigen Namen für die Rolle ein, z. B. AmazonEKS_EBS_CSI_DriverRole.

    2. 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 IAMRessourcen zum Taggen im IAMBenutzerhandbuch.

    3. Wählen Sie Create role (Rolle erstellen) aus.

  7. Nachdem die Rolle erstellt wurde, wählen Sie die Rolle in der Konsole aus, um sie zur Bearbeitung zu öffnen.

  8. Wählen Sie die Registerkarte Trust Relationships (Vertrauensstellungen) und dann Edit trust policy (Vertrauensrichtlinie bearbeiten) aus.

  9. 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. region-codeErsetzen Sie es durch AWS-Region das, in dem sich Ihr Cluster befindet. EXAMPLED539D4633E53DE1B71EXAMPLEErsetzen Sie durch die OIDC Provider-ID Ihres Clusters.

    "oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa"
  10. Wählen Sie Update Policy (Richtlinie aktualisieren) aus, um den Vorgang abzuschließen.

  11. Wenn Sie einen benutzerdefinierten KMSSchlüssel für die Verschlüsselung Ihrer EBS Amazon-Volumes verwenden, passen Sie die IAM Rolle nach Bedarf an. Führen Sie beispielsweise folgende Schritte aus:

    1. Wählen Sie im linken Navigationsbereich die Option Policies aus.

    2. Wählen Sie auf der Seite Policies (Richtlinien) die Option Create a policy (Richtlinie erstellen).

    3. Wählen Sie auf der Seite „Richtlinie erstellen JSON“ die Registerkarte aus.

    4. Kopieren Sie den folgenden Code und fügen Sie ihn in den Editor ein. custom-key-arn Ersetzen Sie ihn durch den benutzerdefinierten KMSSchlü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"] } ] }
    5. Wählen Sie Next: Markierungen (Weiter: Markierungen).

    6. Wählen Sie auf der Seite Add Tags (optional) (Tags hinzufügen (optional)) die Option Next: Review (Weiter: Prüfen).

    7. Geben Sie unter Name einen eindeutigen Namen für Ihre Richtlinie ein (z. B. KMS_Key_For_Encryption_On_EBS_Policy).

    8. Wählen Sie Create Policy (Richtlinie erstellen) aus.

    9. Wählen Sie im linken Navigationsbereich Roles aus.

    10. Wählen Sie das Symbol AmazonEKS_EBS_CSI_DriverRolein der Konsole, um ihn zur Bearbeitung zu öffnen.

    11. Wählen Sie in der Dropdown-Liste Add permissions (Berechtigungen hinzufügen) Attach policies (Richtlinien hinzufügen) aus.

    12. Geben Sie im Feld Filter policies (Filterrichtlinien) KMS_Key_For_Encryption_On_EBS_Policy ein.

    13. Aktivieren Sie das Kontrollkästchen links neben der KMS_Key_For_Encryption_On_EBS_Policy, die bei der Suche zurückgegeben wurde.

    14. Wählen Sie Attach Policies (Richtlinien hinzufügen).

AWS CLI
Um Ihre EBS CSI IAM Amazon-Plug-in-Rolle mit dem zu erstellen AWS CLI
  1. Sehen Sie sich den OIDC Anbieter Ihres Clusters anURL. Ersetzen Sie my-cluster durch Ihren Clusternamen. Wenn die Ausgabe des Befehls None ist, überprüfen Sie die Voraussetzungen.

    aws eks describe-cluster --name my-cluster --query "cluster.identity.oidc.issuer" --output text

    Eine Beispielausgabe sieht wie folgt aus.

    https://oidc.eks.region-code.amazonaws.com/id/EXAMPLED539D4633E53DE1B71EXAMPLE
  2. Erstellen Sie die IAM Rolle und gewähren Sie die AssumeRoleWithWebIdentity Aktion.

    1. Kopieren Sie den folgenden Inhalt in eine Datei namens aws-ebs-csi-driver-trust-policy.json. Ersetzen Sie 111122223333 durch Ihre Konto-ID. Ersetzen Sie EXAMPLED539D4633E53DE1B71EXAMPLE und region-code mit den im vorherigen Schritt zurückgegebenen Werten. Wenn sich Ihr Cluster in den Ländern AWS GovCloud (USA-Ost) oder AWS GovCloud (US-West) befindet AWS-Regionen, ersetzen Sie ihn durcharn:aws:. arn:aws-us-gov:

      { "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" } } } ] }
    2. Erstellen Sie die -Rolle. Sie können AmazonEKS_EBS_CSI_DriverRole in 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"
  3. Hängen Sie eine Richtlinie an. AWS verwaltet eine AWS verwaltete Richtlinie oder Sie können Ihre eigene benutzerdefinierte Richtlinie erstellen. Hängen Sie die AWS verwaltete Richtlinie mit dem folgenden Befehl an die Rolle an. Wenn sich Ihr Cluster in den Ländern AWS GovCloud (USA-Ost) oder AWS GovCloud (US-West) befindet AWS-Regionen, ersetzen Sie ihn durcharn:aws:. arn:aws-us-gov:

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \ --role-name AmazonEKS_EBS_CSI_DriverRole
  4. Wenn Sie einen benutzerdefinierten KMSSchlüssel für die Verschlüsselung Ihrer EBS Amazon-Volumes verwenden, passen Sie die IAM Rolle nach Bedarf an. Führen Sie beispielsweise folgende Schritte aus:

    1. Kopieren Sie den folgenden Code und fügen Sie diesen in eine neue kms-key-for-encryption-on-ebs.json-Datei ein. custom-key-arnErsetzen Sie ihn durch den benutzerdefinierten KMSSchlü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"] } ] }
    2. Erstellen Sie die Richtlinie. Sie können KMS_Key_For_Encryption_On_EBS_Policy in 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
    3. Hängen Sie die IAM Richtlinie mit dem folgenden Befehl an die Rolle an. Ersetzen Sie 111122223333 durch Ihre Konto-ID. Wenn sich Ihr Cluster in den Ländern AWS GovCloud (US-Ost) oder AWS GovCloud (US-West) befindet AWS-Regionen, ersetzen Sie ihn durcharn:aws:. arn:aws-us-gov:

      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 EBS CSI IAM Amazon-Treiberrolle erstellt haben, können Sie mit dem nächsten Abschnitt fortfahren. Wenn Sie das Add-on mit dieser IAM Rolle bereitstellen, erstellt es ein benanntes Dienstkonto und ist für dessen Verwendung konfiguriertebs-csi-controller-sa. Das Dienstkonto ist gebunden an ein Kubernetes clusterroledem ist das Erforderliche zugewiesen Kubernetes Berechtigungen.

Schritt 2: Holen Sie sich den EBS CSI Amazon-Treiber

Wir empfehlen, den EBS CSI Amazon-Treiber über das EKS Amazon-Add-on zu installieren, um die Sicherheit zu verbessern und den Arbeitsaufwand zu reduzieren. Informationen zum Hinzufügen eines EKS Amazon-Add-ons zu Ihrem Cluster finden Sie unterEin EKS Amazon-Add-on erstellen. Weitere Informationen zu Add-ons finden Sie unter EKSAmazon-Add-Ons.

Wichtig

Bevor Sie den EBS Amazon-Treiber als EKS Amazon-Add-on hinzufügen, stellen Sie sicher, dass Sie keine selbstverwaltete Version des Treibers auf Ihrem Cluster installiert haben. Falls ja, finden Sie weitere Informationen unter Deinstallation eines selbstverwalteten EBS CSI Amazon-Treibers unter GitHub.

Wenn Sie alternativ eine selbstverwaltete Installation des EBS CSI Amazon-Treibers wünschen, finden Sie weitere Informationen unter Installation auf GitHub.

Schritt 3: Stellen Sie eine Beispielanwendung bereit

Sie können eine Vielzahl von Beispiel-Apps bereitstellen und diese nach Bedarf ändern. Weitere Informationen finden Sie unter Kubernetes Beispiele für GitHub.