Verwendung von elastischem Dateisystemspeicher mit Amazon EFS - Amazon EKS

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.

Verwendung von elastischem Dateisystemspeicher mit Amazon EFS

Amazon Elastic File System (Amazon EFS) bietet vollständig elastischen Serverless-Dateispeicher, sodass Sie Dateidaten gemeinsam nutzen können, ohne Speicherkapazität und Leistung bereitstellen oder verwalten zu müssen. Der Amazon EFS Container Storage Interface (CSI)-Treiber bietet eine CSI-Schnittstelle, die es Kubernetes-Clustern, die auf AWS ausgeführt werden, ermöglicht, den Lebenszyklus von Amazon EFS-Dateisystemen zu verwalten. In diesem Thema erfahren Sie, wie Sie den Amazon-EFS-CSI-Treiber für Ihren Amazon-EKS-Cluster bereitstellen.

Überlegungen

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

  • Sie können die dynamische Bereitstellung für persistente Volumes mit Fargate-Knoten nicht verwenden, aber Sie können die statische Bereitstellung verwenden.

  • Dynamische Bereitstellung erfordert Version 1.2 oder höher des Treibers. Sie können die statische Bereitstellung für persistente Volumes mithilfe der 1.1-Version des Treibers in jeder unterstützten Amazon-EKS-Cluster-Version verwenden (siehe Unterstützte Amazon-EKS-Versionen).

  • Version 1.3.2 oder höher dieses Treibers unterstützt die Arm64-Architektur, einschließlich auf Amazon EC2 Graviton basierenden Instances.

  • Version 1.4.2 oder höher dieses Treibers unterstützt die Verwendung von FIPS zum Einbinden von Dateisystemen.

  • Beachten Sie die Ressourcenkontingente für Amazon EFS. Beispielsweise gibt es ein Kontingent von 1 000 Zugriffspunkten, die für jedes Amazon-EFS-Dateisystem erstellt werden können. Weitere Informationen finden Sie unter Amazon-EFS-Ressourcenkontingente, die Sie nicht ändern können.

  • Ab Version 2.0.0 wurde bei diesem Treiber für TLS-Verbindungen von der Verwendung von stunnel auf efs-proxy umgestellt. Bei Verwendung von efs-proxy wird eine Anzahl von Threads geöffnet, die eins plus der Anzahl der Kerne des Knotens entspricht, auf dem er ausgeführt wird.

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

Voraussetzungen

  • Der Amazon-EFS-CSI-Treiber erfordert Berechtigungen für die AWS-Identitäts- und Zugriffsverwaltung (IAM).

  • Version 2.12.3 oder höher oder die Version 1.27.160 oder höher der AWS-Befehlszeilenschnittstelle (AWS-CLI), die auf Ihrem Gerät oder in AWS CloudShell installiert und konfiguriert sein muss. Um Ihre aktuelle Version zu überprüfen, verwenden Sie aws --version | cut -d / -f2 | cut -d ' ' -f1. Paket-Manager wie yum, apt-get oder Homebrew für macOS sind oft mehrere Versionen hinter der neuesten Version der AWS-CLI. Um die neueste Version zu installieren, lesen Sie Installation und Schnellkonfiguration mit aws configure im Benutzerhandbuch zur AWS-Befehlszeilenschnittstelle. Die in AWS CloudShell installierte AWS-CLI-Version kann auch mehrere Versionen hinter der neuesten Version liegen. Informationen zum Aktualisieren finden Sie unter Installieren der AWS CLI in Ihrem Stammverzeichnis im AWS-CloudShell-Benutzerhandbuch.

  • Das kubectl-Befehlszeilen-Tool ist auf Ihrem Gerät oder in 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.

Anmerkung

Ein in Fargate ausgeführter Pod bindet automatisch ein Amazon-EFS-Dateisystem ein, ohne dass manuelle Schritte zur Treiberinstallation erforderlich sind.

Schritt 1: Erstellen einer IAM-Rolle

Der Amazon-EFS-CSI-Treiber benötigt IAM-Berechtigungen, um mit Ihrem Dateisystem zu interagieren. Erstellen Sie eine IAM-Rolle und fügen Sie ihr die erforderliche von AWS verwaltete Richtlinie hinzu. 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. Weitere Informationen zu selbstverwalteten Installationen finden Sie unter Einrichten von Treiberberechtigungen auf GitHub.

eksctl

Bei Verwendung von Pod Identities

Führen Sie die folgenden Befehle aus, um eine IAM-Rolle und eine Pod-Identity-Zuordnung mit eksctl zu erstellen. Ersetzen Sie my-cluster mit Ihrem Clusternamen. Sie können AmazonEKS_EFS_CSI_DriverRole durch einen anderen Namen ersetzen.

export cluster_name=my-cluster export role_name=AmazonEKS_EFS_CSI_DriverRole eksctl create podidentityassociation \ --service-account-name efs-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name $role_name \ --permission-policy-arns arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy

Bei Verwendung von IAM-Rollen für Servicekonten

Führen Sie die folgenden Befehle aus, um eine IAM-Rolle mit eksctl zu erstellen. Ersetzen Sie my-cluster mit Ihrem Clusternamen. Sie können AmazonEKS_EFS_CSI_DriverRole durch einen anderen Namen ersetzen.

export cluster_name=my-cluster export role_name=AmazonEKS_EFS_CSI_DriverRole eksctl create iamserviceaccount \ --name efs-csi-controller-sa \ --namespace kube-system \ --cluster $cluster_name \ --role-name $role_name \ --role-only \ --attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --approve TRUST_POLICY=$(aws iam get-role --output json --role-name $role_name --query 'Role.AssumeRolePolicyDocument' | \ sed -e 's/efs-csi-controller-sa/efs-csi-*/' -e 's/StringEquals/StringLike/') aws iam update-assume-role-policy --role-name $role_name --policy-document "$TRUST_POLICY"

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 Typ der vertrauenswürdigen Entität 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) AmazonEFSCSIDriverPolicy ein.

    2. Aktivieren Sie das Kontrollkästchen links neben der AmazonEFSCSIDriverPolicy, 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_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 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 Pod-Identity-Zuordnung erstellen (AWS-Konsole).

    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. Ersetzen Sie <region-code> mit der 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-*",
      4. Ändern Sie den Condition-Operator von "StringEquals" zu "StringLike".

      5. Wählen Sie Update Policy (Richtlinie aktualisieren) aus, um den Vorgang abzuschließen.

AWS-CLI

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

Bei Verwendung von Pod Identities

  1. Erstellen Sie die IAM-Rolle, die dem pods---eks.amazonaws.com.rproxy.govskope.ca-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. Sie können AmazonEKS_EFS_CSI_DriverRole durch einen anderen Namen ersetzen.

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

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --role-name $role_name
  3. Führen Sie den folgenden Befehl aus, um die Pod-Identity-Zuordnung zu erstellen. Ersetzen Sie arn:aws:iam::<111122223333>:role/my-role durch die in den vorherigen Schritten erstellte Rolle.

    aws eks create-pod-identity-association --cluster-name $cluster_name --role-arn {arn-aws}iam::<111122223333>:role/my-role --namespace kube-system --service-account efs-csi-controller-sa
  4. Weitere Informationen zum Erstellen von Pod-Identity-Zuordnungen finden Sie unter Pod-Identity-Zuordnung erstellen (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. Sie können AmazonEKS_EFS_CSI_DriverRole durch einen anderen Namen ersetzen.

    export cluster_name=my-cluster export role_name=AmazonEKS_EFS_CSI_DriverRole 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, die die Aktion AssumeRoleWithWebIdentity erlaubt.

    1. Kopieren Sie den folgenden Inhalt in eine Datei namens aws-efs-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.

      { "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": { "StringLike": { "oidc.eks.region-code.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:sub": "system:serviceaccount:kube-system:efs-csi-*", "oidc.eks.region-code.amazonaws.com/id/<EXAMPLED539D4633E53DE1B71EXAMPLE>:aud": "sts.amazonaws.com" } } } ] }
    2. Erstellen Sie die -Rolle.

      aws iam create-role \ --role-name $role_name \ --assume-role-policy-document file://"aws-efs-csi-driver-trust-policy.json"
  3. Hängen Sie die erforderliche verwaltete AWS-Richtlinie mit dem folgenden Befehl an die Rolle an.

    aws iam attach-role-policy \ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEFSCSIDriverPolicy \ --role-name $role_name

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 zu den Gründen, warum Sie es nicht verwenden können, an das GitHub-Repository Containers Roadmap 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. Wenn das der Fall ist, lesen Sie den Abschnitt Deinstallieren des Amazon-EFS-CSI-Treibers auf GitHub.

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

Schritt 3: Erstellen eines Amazon EFS-Dateisystems

Informationen zum Erstellen eines Amazon-EFS-Dateisystems finden Sie unter Erstellen eines Amazon-EFS-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 auf GitHub.