Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
Come si usa l'archiviazione persistente in Amazon EKS?
Desidero utilizzare l'archiviazione persistente in Amazon Elastic Kubernetes Service (Amazon EKS).
Breve descrizione
Per utilizzare lo storage persistente in Amazon EKS, completa i passaggi per una delle seguenti opzioni:
- Implementa e testa la Driver Container Storage Interface (CSI) per Amazon Elastic Block Store (Amazon EBS).
- Implementa e testa la Driver Container Storage Interface (CSI) per Amazon Elastic File System (Amazon EFS).
Nota: è consigliabile assicurarsi di aver installato la versione più recente dei driver. Per istruzioni su come installare i driver più recenti, consulta aws-ebs-csi-driver e aws-efs-csi-driver sul sito Web GitHub.
Risoluzione
Nota: se ricevi messaggi di errore durante l'esecuzione dei comandi dell'interfaccia della linea di comando AWS (AWS CLI), consulta la sezione Troubleshoot AWS CLI errors. Inoltre, assicurati di utilizzare la versione più recente di AWS CLI.
Prerequisiti:
- Installare AWS CLI.
- Usa kubectl versione 1.14 o successiva per i comandi. Per ulteriori informazioni, consulta Installazione o aggiornamento di kubectl.
- Imposta le autorizzazioni AWS Identity and Access Management (IAM) su Crea. Quindi, allega una policy al ruolo del nodo di lavoro Amazon EKS CSI Driver Role.
- Crea il tuo cluster Amazon EKS e unisci i nodi worker al cluster.
Nota: esegui il comando get nodes di kubectl per verificare che i nodi worker siano collegati al cluster. - Per verificare che il provider AWS IAM OpenID Connect (OIDC) esiste per il cluster, esegui il comando seguente:
Nota: sostituisci your_cluster_name con il nome del tuo cluster.aws eks describe-cluster --name your_cluster_name --query "cluster.identity.oidc.issuer" --output text
- Esegui il seguente comando per verificare che il provider IAM OIDC sia configurato:
Nota: sostituisci l'ID del provider oidc con il tuo ID OIDC. Se ricevi il messaggio di errore "No OpenIDConnect provider found in your account", dovrai creare un provider IAM OIDC.aws iam list-open-id-connect-providers | grep <ID of the oidc provider>
- Installa o aggiorna eksctl. Per istruzioni, consulta Installazione sul sito web eksctl.
- Esegui il seguente comando per creare un provider IAM OIDC:
Nota: sostituisci my-cluster con il nome del tuo cluster.eksctl utils associate-iam-oidc-provider --cluster my-cluster --approve
Driver Amazon EBS CSI
Implementa il driver CSI per Amazon EBS
Completa i seguenti passaggi:
-
Crea un file di policy di attendibilità IAM simile all'esempio seguente:
cat <<EOF > trust-policy.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/<your OIDC ID>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>:aud": "sts.amazonaws.com", "oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" } } } ] } EOF
Nota: sostituisci YOUR_AWS_ACCOUNT_ID con l'ID del tuo account AWS, YOUR_AWS_REGION con la tua regione AWS e your OIDC ID con il tuo ID OIDC.
-
Crea un ruolo IAM denominato AmazonEKS_EBS_CSI_DriverRole:
aws iam create-role --role-name AmazonEKS_EBS_CSI_DriverRole --assume-role-policy-document file://"trust-policy.json"
-
Allega la policy IAM gestita da AWS del driver al ruolo IAM:
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy --role-name AmazonEKS_EBS_CSI_DriverRole
-
Implementa il driver CSI per Amazon EBS.
Nota: puoi implementare il driver CSI per EBS con Kustomize, Helm o un componente aggiuntivo gestito da Amazon EKS. Per istruzioni su come distribuire il driver EBS CSI, consulta Installazione sul sito Web di GitHub.
Testa il driver CSI per Amazon EBS
Testa il driver CSI per Amazon EBS con un'applicazione di esempio che utilizzi il provisioning dinamico per i pod. Il volume Amazon EBS viene assegnato su richiesta.
Driver CSI Amazon EFS
Crea un ruolo IAM per il driver CSI
Completa i seguenti passaggi:
-
Scarica il documento della policy IAM da GitHub:
curl -o iam-policy-example.json https://raw.githubusercontent.com/kubernetes-sigs/aws-efs-csi-driver/master/docs/iam-policy-example.json
-
Crea una policy IAM:
aws iam create-policy --policy-name AmazonEKS_EFS_CSI_Driver_Policy --policy-document file://iam-policy-example.json
-
Esegui il comando seguente per determinare l'ID del provider OIDC del tuo cluster:
aws eks describe-cluster --name your_cluster_name --query "cluster.identity.oidc.issuer" --output text
Nota: sostituisci your_cluster_name con il nome del tuo cluster.
-
Crea la seguente policy di attendibilità IAM, poi assegna l'azione AssumeRoleWithWebIdentity al tuo account di servizio Kubernetes:
cat <<EOF > trust-policy.json { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Federated": "arn:aws:iam::YOUR_AWS_ACCOUNT_ID:oidc-provider/oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/<XXXXXXXXXX45D83924220DC4815XXXXX>:sub": "system:serviceaccount:kube-system:efs-csi-controller-sa" } } } ] } EOF
Nota: sostituisci YOUR_AWS_ACCOUNT_ID con l'ID del tuo account, YOUR_AWS_REGION con la tua regione AWS e XXXXXXXXXX45D83924220DC4815XXXXX con l'ID del provider OIDC del tuo cluster.
-
Crea un ruolo IAM:
aws iam create-role --role-name AmazonEKS_EFS_CSI_DriverRole --assume-role-policy-document file://"trust-policy.json"
-
Collega la nuova policy IAM al ruolo:
aws iam attach-role-policy --policy-arn arn:aws:iam::<AWS_ACCOUNT_ID>:policy/AmazonEKS_EFS_CSI_Driver_Policy --role-name AmazonEKS_EFS_CSI_DriverRole
-
Salva i contenuti seguenti in un file denominato efs-service-account.yaml:
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: aws-efs-csi-driver name: efs-csi-controller-sa namespace: kube-system annotations: eks.amazonaws.com/role-arn: arn:aws:iam::<AWS_ACCOUNT_ID>:role/AmazonEKS_EFS_CSI_DriverRole
-
Crea l'account di servizio di Kubernetes nel tuo cluster:
kubectl apply -f efs-service-account.yaml
**Nota:**L'account di servizio di Kubernetes denominato efs-csi-controller-sa è annotato con il ruolo IAM che hai creato.
-
Scarica il manifesto dal registro pubblico Amazon ECR e utilizza le immagini per installare il driver:
$ kubectl kustomize "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-1.5" > public-ecr-driver.yaml
Nota: è possibile installare il driver CSI per EFS utilizzando Helm e un Kustomize con registro privato o pubblico AWS. Per istruzioni su come installare il driver EFS CSI, consulta il driver AWS EFS CSI sul sito Web di GitHub.
-
Modifica il file public-ecr-driver.yaml e annota la sezione dell'account di servizio Kubernetes efs-csi-controller-sa con l'ARN del ruolo IAM creato:
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: aws-efs-csi-driver annotations: eks.amazonaws.com/role-arn: arn:aws:iam::<accountid>:role/AmazonEKS\_EFS\_CSI\_DriverRole name: efs-csi-controller-sa namespace: kube-system
Implementa il driver CSI per Amazon EFS
Completa i seguenti passaggi:
-
Applica il manifesto:
$ kubectl apply -f public-ecr-driver.yaml
-
Se il cluster contiene solo pod AWS Fargate (nessun nodo), implementa il driver con il seguente comando (per tutte le regioni):
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-efs-csi-driver/master/deploy/kubernetes/base/csidriver.yaml
Crea un file system Amazon EFS
Completa i seguenti passaggi:
- Per ottenere l'ID del cloud privato virtuale (VPC) del tuo cluster Amazon EKS, esegui il seguente comando:
Nota: sostituisci your_cluster_name con il nome del tuo cluster.aws eks describe-cluster --name your_cluster_name --query "cluster.resourcesVpcConfig.vpcId" --output text
- Per ottenere l'intervallo CIDR per il tuo cluster VPC, esegui il seguente comando:
Nota: sostituisci YOUR_VPC_ID con il tuo ID VPC.aws ec2 describe-vpcs --vpc-ids YOUR_VPC_ID --query "Vpcs[].CidrBlock" --output text
- Crea un gruppo di sicurezza che consenta il traffico Network File System (NFS) in entrata per i punti di montaggio di Amazon EFS:
Nota: sostituisci YOUR_VPC_ID con il tuo ID VPC. Annota il GroupId da utilizzare in seguito.aws ec2 create-security-group --description efs-test-sg --group-name efs-sg --vpc-id YOUR_VPC_ID
- Aggiungi una regola NFS in entrata in modo che le risorse nel VPC possano comunicare con il file system di Amazon EFS:
Nota: sostituisci YOUR_VPC_CIDR con il tuo VPC CIDR e sg-xxx con l'ID del tuo gruppo di sicurezza.aws ec2 authorize-security-group-ingress --group-id sg-xxx --protocol tcp --port 2049 --cidr YOUR_VPC_CIDR
- Crea un file system di Amazon EFS per il cluster Amazon EKS:
Nota: annota il FileSystemId da utilizzare in seguito.aws efs create-file-system --creation-token eks-efs
- Per creare un target di montaggio per Amazon EFS, esegui il comando seguente:
Importante: assicurati di eseguire il comando per tutte le zone di disponibilità con il SubnetID nella zona di disponibilità in cui sono in esecuzione i nodi worker. Sostituisci FileSystemId con l'ID del tuo file system EFS, sg-xxx con l'ID del tuo gruppo di sicurezza e SubnetID con l'ID della sottorete del tuo nodo di lavoro. Per creare destinazioni di montaggio in più sottoreti, esegui il comando per ogni ID di sottorete. È consigliabile creare un target di montaggio in ogni zona di disponibilità in cui sono in esecuzione i nodi worker. È possibile creare target di montaggio per tutte le zone di disponibilità in cui vengono avviati i nodi worker. A questo punto, tutte le istanze Amazon Elastic Compute Cloud (Amazon EC2) nella zona di disponibilità con il target di montaggio possono utilizzare il file system.aws efs create-mount-target --file-system-id FileSystemId --subnet-id SubnetID --security-group sg-xxx
Testa il driver CSI per Amazon EFS
Per distribuire due pod che scrivono nello stesso file, vedi Multiple Pods Read Write Many sul sito Web GitHub.
Informazioni correlate
Video correlati


Contenuto pertinente
- AWS UFFICIALEAggiornata un anno fa
- AWS UFFICIALEAggiornata 7 mesi fa
- AWS UFFICIALEAggiornata 3 anni fa