View a markdown version of this page

Verwenden Sie den Amazon S3 S3-Dateisystemspeicher mit dem Amazon EFS CSI-Treiber - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

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.

Um zu diesem Benutzerhandbuch beizutragen, wählen Sie den GitHub Link Diese Seite bearbeiten auf, der sich im rechten Bereich jeder Seite befindet.

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.

Verwenden Sie den Amazon S3 S3-Dateisystemspeicher mit dem Amazon EFS CSI-Treiber

S3 Files ist ein gemeinsam genutztes Dateisystem, das jede AWS Datenverarbeitung direkt mit Ihren Daten in Amazon S3 verbindet. Es bietet schnellen, direkten Zugriff auf all Ihre S3-Daten als Dateien mit vollständiger Dateisystemsemantik und geringer Latenz, ohne dass Ihre Daten S3 jemals verlassen. Das bedeutet, dass dateibasierte Anwendungen, Agenten und Teams mithilfe der Tools, von denen sie bereits abhängig sind, auf S3-Daten als Dateisystem zugreifen und mit ihnen arbeiten können. Der Amazon EFS Container Storage Interface (CSI) -Treiber ermöglicht es Kubernetes-Clustern, AWS auf denen Amazon S3 S3-Dateisysteme ab Version 3.0.0 als persistente Volumes bereitgestellt werden. In diesem Thema erfahren Sie, wie Sie den Amazon EFS CSI-Treiber verwenden, um das Amazon S3 S3-Dateisystem auf Ihrem Amazon EKS-Cluster zu verwalten.

Überlegungen

  • Der Amazon-EFS-CSI-Treiber ist nicht mit Windows-basierten Container-Images kompatibel.

  • EKS Fargate unterstützt keine S3-Dateien.

  • Der Amazon-EFS-CSI-Treiber ist mit Amazon EKS Hybrid Nodes nicht kompatibel.

  • Die Unterstützung von Amazon S3 S3-Dateien im Amazon EFS CSI-Treiber beginnt ab Version 3.0.0.

Voraussetzungen

  • Der Amazon EFS CSI-Treiber benötigt AWS Identity and Access Management (IAM) -Berechtigungen.

  • Version 2.12.3 oder höher oder Version 1.27.160 oder höher der auf Ihrem Gerät installierten und konfigurierten AWS Befehlszeilenschnittstelle (AWS CLI) oder AWS CloudShell. Um Ihre aktuelle Version zu überprüfen, verwenden Sie aws --version | cut -d / -f2 | cut -d ' ' -f1. Paketmanager wie yumapt-get, oder Homebrew für macOS liegen oft mehrere Versionen hinter der neuesten Version der AWS CLI. Informationen zur Installation der neuesten Version finden Sie unter Installation und Schnellkonfiguration mit aws configure im Benutzerhandbuch für die AWS Befehlszeilenschnittstelle. Die AWS CLI-Version, in der installiert ist, AWS CloudShell kann auch mehrere Versionen hinter der neuesten Version liegen. Informationen zur Aktualisierung finden Sie im AWS CloudShell Benutzerhandbuch unter AWS CLI in Ihrem Home-Verzeichnis installieren.

  • Das kubectl-Befehlszeilen-Tool ist auf Ihrem Gerät oder in der AWS CloudShell installiert. Die Version kann mit der Kubernetes-Version Ihres Clusters identisch sein oder bis zu einer Nebenversion älter oder neuer sein. Wenn Ihre Clusterversion beispielsweise 1.29 ist, können Sie kubectl-Version 1.28, 1.29, oder 1.30 damit verwenden. Informationen zum Installieren oder Aktualisieren von kubectl finden Sie unter kubectl und eksctl einrichten.

Schritt 1: IAM-Rollen erstellen

Der Amazon-EFS-CSI-Treiber benötigt IAM-Berechtigungen, um mit Ihrem Dateisystem zu interagieren. Der EFS-CSI-Treiber verwendet zwei Dienstkonten mit separaten IAM-Rollen:

  • efs-csi-controller-sa— wird vom Controller verwendet, erfordertAmazonS3FilesCSIDriverPolicy.

  • efs-csi-node-sa— wird vom Node-DaemonSet verwendet, benötigt:

    • AmazonS3ReadOnlyAccess— ermöglicht das direkte Streamen von Lesevorgängen aus Ihrem S3-Bucket für einen höheren Durchsatz.

    • AmazonElasticFileSystemsUtils— ermöglicht die Veröffentlichung von efs-utils-Protokollen auf Amazon, um Einblick in Mount-Operationen CloudWatch zu erhalten und die Fehlerbehebung zu vereinfachen.

Anmerkung

Wenn Sie sowohl das Amazon S3 S3-Dateisystem als auch den Amazon EFS-Speicher verwenden möchten, müssen Sie AmazonS3FilesCSIDriverPolicy sowohl die als auch die AmazonEFSCSIDriverPolicy verwalteten Richtlinien an die Controller-Rolle anhängen. Weitere Informationen zum Amazon EFS-Speicher finden Sie unterVerwendung von elastischem Dateisystemspeicher mit Amazon EFS.

Um dieses Verfahren umzusetzen, können Sie eines dieser Tools verwenden:

Anmerkung

Die spezifischen Schritte in diesem Verfahren sind für die Verwendung des Treibers als Amazon-EKS-Add-on geschrieben. Ausführliche Informationen zu selbstverwalteten Installationen finden Sie auf GitHub unter Set up driver permission.

eksctl

Bei Verwendung von Pod Identities

Führen Sie die folgenden Befehle aus, um IAM-Rollen und Pod-Identity-Verknüpfungen mit eksctl zu erstellen. Ersetze es my-cluster durch deinen Wert.

export cluster_name=my-cluster # Create the controller role eksctl create podidentityassociation \ --service-account-name efs-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name AmazonEKS_EFS_CSI_ControllerRole \ --permission-policy-arns arn:aws: iam::aws:policy/service-role/AmazonS3FilesCSIDriverPolicy # Create the node role eksctl create podidentityassociation \ --service-account-name efs-csi-node-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name AmazonEKS_EFS_CSI_NodeRole \ --permission-policy-arns arn:aws: iam::aws:policy/AmazonS3ReadOnlyAccess,arn:aws: iam::aws:policy/AmazonElasticFileSystemsUtils

Bei Verwendung von IAM-Rollen für Servicekonten

Führen Sie die folgenden Befehle aus, um IAM-Rollen mit eksctl zu erstellen. my-clusterErsetzen Sie es durch Ihren Clusternamen und region-code durch Ihren AWS Regionalcode.

export cluster_name=my-cluster export region_code=region-code # Create the controller role export controller_role_name=AmazonEKS_EFS_CSI_ControllerRole eksctl create iamserviceaccount \ --name efs-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name $controller_role_name \ --attach-policy-arn arn:aws: iam::aws:policy/service-role/AmazonS3FilesCSIDriverPolicy \ --approve \ --region $region_code # Create the node role export node_role_name=AmazonEKS_EFS_CSI_NodeRole eksctl create iamserviceaccount \ --name efs-csi-node-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name $node_role_name \ --attach-policy-arn arn:aws: iam::aws:policy/AmazonS3ReadOnlyAccess \ --attach-policy-arn arn:aws: iam::aws:policy/AmazonElasticFileSystemsUtils \ --approve \ --region $region_code

AWS-Managementkonsole

Führen Sie Folgendes aus, um eine IAM-Rolle mit AWS-Managementkonsole zu erstellen.

  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. Bei Verwendung von EKS Pod Identities:

      1. Wählen Sie im Abschnitt Vertrauenswürdiger Entitätstyp die Option AWS Service aus.

      2. Wählen Sie im Dropdown-Menü Service oder Anwendungsfall die Option EKS aus.

      3. Wählen Sie im Abschnitt Anwendungsfall die Option EKS – Pod Identity aus.

      4. Wählen Sie Weiter aus.

    2. Bei Verwendung von IAM-Rollen für Servicekonten:

      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 (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).

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

      4. Wählen Sie Weiter aus.

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

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

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

    3. Wählen Sie Weiter aus.

  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_EFS_CSI_ControllerRole.

    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 Markieren von IAM-Ressourcen im IAM-Benutzerhandbuch.

    3. Wählen Sie Rolle erstellen aus.

  7. Nachdem die Rolle erstellt wurde:

    1. Bei Verwendung von EKS Pod Identities:

      1. Öffnen Sie die Amazon-EKS-Konsole.

      2. Wählen Sie im linken Navigationsbereich Cluster aus und anschließend den Namen des Clusters, für den Sie die EKS-Pod-Identity-Zuordnung konfigurieren möchten.

      3. Wählen Sie die Registerkarte Zugriff aus.

      4. Wählen Sie unter Pod-Identity-Zuordnungen die Option Erstellen aus.

      5. Wählen Sie das Dropdown-Menü IAM-Rolle und wählen Sie Ihre neu erstellte Rolle aus.

      6. Wählen Sie das Feld Kubernetes-Namespace und geben Sie kube-system ein.

      7. Wählen Sie das Feld Kubernetes-Servicekonto und geben Sie efs-csi-controller-sa ein.

      8. Wählen Sie Erstellen aus.

      9. Weitere Informationen zum Erstellen von Pod-Identity-Zuordnungen finden Sie unter Erstellen Sie eine Pod Identity-Zuordnung (AWS Konsole).

      10. Wiederholen Sie die obigen Schritte, um eine zweite Rolle für das Node-Dienstkonto zu erstellen. Fügen Sie auf der Seite Berechtigungen hinzufügen AmazonElasticFileSystemsUtils stattdessen AmazonS3ReadOnlyAccess und hinzu. Erstellen Sie dann eine Pod Identity-Zuordnung mit efs-csi-node-sa für das Feld Kubernetes-Dienstkonto.

    2. Bei Verwendung von IAM-Rollen für Servicekonten:

      1. Wählen Sie die Rolle aus, um sie zur Bearbeitung zu öffnen.

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

      3. Suchen Sie die Zeile, die der folgenden Zeile ähnelt:

        "oidc.eks.region-code.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:aud": "sts.amazonaws.com"

        Fügen Sie die folgende Zeile über der vorherigen Zeile hinzu. <region-code>Ersetzen Sie es durch die AWS Region, in der sich Ihr Cluster befindet. Ersetzen Sie <EXAMPLED539D4633E53DE1B71EXAMPLE> mit dem OIDC-Anbieter-ID Ihres Clusters.

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

      5. Wiederholen Sie die obigen Schritte, um eine zweite Rolle für das Node-Dienstkonto zu erstellen. Fügen Sie auf der Seite Berechtigungen hinzufügen AmazonElasticFileSystemsUtils stattdessen AmazonS3ReadOnlyAccess und hinzu. Verwenden Sie in der Vertrauensrichtlinie den Wert efs-csi-node-sa für die :sub Bedingung.

AWS CLI

Führen Sie die folgenden Befehle aus, um IAM-Rollen mit AWS CLI zu erstellen.

Bei Verwendung von Pod Identities

  1. Erstellen Sie die IAM-Rolle, die dem pods---eks.amazonaws.com.rproxy.goskope.com-Service die Aktionen AssumeRole und TagSession gewährt.

    1. Kopieren Sie den folgenden Inhalt in eine Datei namens aws-efs-csi-driver-trust-policy-pod-identity.json.

      { "Version":"2012-10-17", "Statement": [ { "Sid": "AllowEksAuthToAssumeRoleForPodIdentity", "Effect": "Allow", "Principal": { "Service": "pods.eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }
    2. Erstellen Sie die Rolle. Ersetzen Sie my-cluster mit Ihrem Clusternamen.

      export cluster_name=my-cluster export controller_role_name=AmazonEKS_EFS_CSI_ControllerRole aws iam create-role \ --role-name $controller_role_name \ --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy-pod-identity.json"
  2. Hängen Sie die erforderliche AWS verwaltete Richtlinie an die Controller-Rolle an.

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/service-role/AmazonS3FilesCSIDriverPolicy \ --role-name $controller_role_name
  3. Erstellen Sie die Knoten-IAM-Rolle mit derselben Vertrauensrichtlinie.

    export node_role_name=AmazonEKS_EFS_CSI_NodeRole aws iam create-role \ --role-name $node_role_name \ --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy-pod-identity.json"
  4. Hängen Sie die erforderlichen AWS verwalteten Richtlinien an die Knotenrolle an.

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonS3ReadOnlyAccess \ --role-name $node_role_name aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonElasticFileSystemsUtils \ --role-name $node_role_name
  5. Führen Sie die folgenden Befehle aus, um die Pod Identity-Zuordnungen zu erstellen. Ersetzen Sie <111122223333> durch Ihre Konto-ID.

    aws eks create-pod-identity-association --cluster-name $cluster_name --role-arn {arn-aws}iam::<111122223333>:role/$controller_role_name --namespace kube-system --service-account efs-csi-controller-sa
    aws eks create-pod-identity-association --cluster-name $cluster_name --role-arn {arn-aws}iam::<111122223333>:role/$node_role_name --namespace kube-system --service-account efs-csi-node-sa
  6. Weitere Informationen zum Erstellen von Pod-Identity-Zuordnungen finden Sie unter Erstellen Sie eine Pod Identity-Zuordnung (AWS Konsole).

Bei Verwendung von IAM-Rollen für Servicekonten

  1. Zeigen Sie die OIDC-Anbieter-URL Ihres Clusters an. Ersetzen Sie my-cluster mit Ihrem Clusternamen.

    export cluster_name=my-cluster aws eks describe-cluster --name $cluster_name --query "cluster.identity.oidc.issuer" --output text

    Eine Beispielausgabe sieht wie folgt aus.

    https://oidc.eks.<region-code>.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>

    Wenn die Ausgabe des Befehls None ist, überprüfen Sie die Voraussetzungen.

  2. Erstellen Sie die IAM-Rolle für das Controller-Dienstkonto.

    1. Kopieren Sie den folgenden Inhalt in eine Datei namens controller-trust-policy.json. Ersetzen Sie <111122223333> durch Ihre Konto-ID. Ersetzen Sie <EXAMPLED539D4633E53DE1B71EXAMPLE> und <region-code> mit den im vorherigen Schritt zurückgegebenen Werten.

      { "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:efs-csi-controller-sa" } } } ] }
    2. Erstellen Sie die Rolle.

      export controller_role_name=AmazonEKS_EFS_CSI_ControllerRole aws iam create-role \ --role-name $controller_role_name \ --assume-role-policy-document file://"controller-trust-policy.json"
  3. Fügen Sie der Controller-Rolle die erforderliche AWS verwaltete Richtlinie hinzu.

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/service-role/AmazonS3FilesCSIDriverPolicy \ --role-name $controller_role_name
  4. Erstellen Sie die IAM-Rolle für das Knotendienstkonto.

    1. Kopieren Sie den folgenden Inhalt in eine Datei namens node-trust-policy.json. Ersetzen Sie <111122223333> durch Ihre Konto-ID. Ersetzen Sie <EXAMPLED539D4633E53DE1B71EXAMPLE> und <region-code> durch die in Schritt 1 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>:sub": "system:serviceaccount:kube-system:efs-csi-node-sa", "oidc.eks.<region-code>.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:aud": "sts.amazonaws.com" } } } ] }
    2. Erstellen Sie die Rolle.

      export node_role_name=AmazonEKS_EFS_CSI_NodeRole aws iam create-role \ --role-name $node_role_name \ --assume-role-policy-document file://"node-trust-policy.json"
  5. Ordnen Sie der Knotenrolle die erforderlichen AWS verwalteten Richtlinien zu.

    aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonS3ReadOnlyAccess \ --role-name $node_role_name aws iam attach-role-policy \ --policy-arn arn:aws: iam::aws:policy/AmazonElasticFileSystemsUtils \ --role-name $node_role_name
Anmerkung

Die AmazonS3ReadOnlyAccess Richtlinie gewährt Lesezugriff auf alle S3-Buckets. Um den Zugriff auf bestimmte Buckets einzuschränken, können Sie ihn trennen und durch eine tagbasierte Inline-Richtlinie ersetzen. Einzelheiten finden Sie in der IAM-Richtliniendokumentation GitHub für Amazon EFS CSI-Treiber unter.

Schritt 2: Amazon-EFS-CSI-Treiber herunterladen

Wir empfehlen, den Amazon-EFS-CSI-Treiber über das Amazon-EKS-Add-on zu installieren. 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. Wenn Sie das Amazon EKS-Add-on nicht verwenden können, empfehlen wir Ihnen, ein Problem mit der Begründung, warum Sie das nicht können, an das GitHub Container-Roadmap-Repository zu senden.

Wichtig

Bevor Sie den Amazon-EFS-Treiber als Amazon-EKS-Add-On hinzufügen, vergewissern Sie sich, dass auf Ihrem Cluster keine selbstverwaltete Version des Treibers installiert ist. Falls ja, finden Sie weitere Informationen unter Deinstallieren des Amazon EFS CSI-Treibers auf GitHub.

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

Schritt 3: Erstellen Sie ein Amazon S3 S3-Dateisystem

Informationen zum Erstellen eines Amazon S3 S3-Dateisystems finden Sie unter Erstellen eines Amazon S3 S3-Dateisystems für Amazon EKS auf GitHub.

Schritt 4: Beispielanwendung bereitstellen

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