Como usar o armazenamento persistente no Amazon EKS?
Quero usar o armazenamento persistente no Amazon Elastic Kubernetes Service (Amazon EKS).
Breve descrição
Para usar o armazenamento persistente no Amazon EKS, conclua as etapas de uma das seguintes opções:
- Implante e teste o driver Interface de armazenamento de contêineres (Container Storage Interface, CSI) do Amazon Elastic Block Store (Amazon EBS).
- Implante e teste o driver da CSI do Amazon Elastic File System (Amazon EFS).
Observação: Para segurança e eficiência, é uma prática recomendada instalar o driver CSI por meio de um complemento do Amazon EKS. Também é uma prática recomendada instalar a versão mais recente dos drivers. Para ver as etapas de instalação e a versão mais recente do driver, consulte aws-ebs-csi-driver ou aws-efs-csi-driver no site do GitHub.
Resolução
Observação: se você receber erros ao executar comandos da AWS Command Line Interface (AWS CLI), consulte Solução de problemas da AWS CLI. Além disso, verifique se você está usando a versão mais recente da AWS CLI.
Pré-requisitos:
-
Configure uma versão do kubectl que se alinhe à sua versão do Kubernetes. Para obter mais informações sobre os requisitos de defasagem de versão, consulte kubectl no site do Kubernetes.
-
Instale ou atualize o eksctl. Para obter instruções, consulte Installation [Instalação] no site do eksctl.
-
Defina as permissões de Criar do AWS Identity and Access Management (AWS IAM). Em seguida, anexe a política ao perfil do driver CSI ou ao perfil do nó de processamento do Amazon EKS.
-
Crie seu cluster do Amazon EKS e anexe seus nós de processamento ao cluster. Para verificar se você anexou seus nós de processamento ao cluster, execute o seguinte comando:
kubectl get nodes -
Para verificar se existe um provedor IAM OpenID Connect (OIDC) para seu cluster, execute o seguinte comando describe-cluster da AWS CLI:
aws eks describe-cluster --name your_cluster_name --query "cluster.identity.oidc.issuer" --output textObservação: Substitua your_cluster_name pelo nome do seu cluster.
-
Para verificar se você configurou seu provedor de identidade OIDC, execute o seguinte comando list-open-id-connect-providers:
aws iam list-open-id-connect-providers | grep OIDC-IDObservação: Substitua OIDC-ID pelo ID do seu provedor OIDC. Se você receber uma mensagem de erro, crie um provedor de identidade OIDC"No OpenIDConnect provider found in your account".
Driver CSI do Amazon EBS
Para implantar o driver CSI do Amazon EBS, conclua as seguintes etapas:
-
Crie um arquivo de política de confiança do IAM semelhante ao exemplo a seguir:
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/OIDC-ID" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/OIDC-ID:aud": "sts.amazonaws.com", "oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/OIDC-ID:sub": "system:serviceaccount:kube-system:ebs-csi-controller-sa" } } } ] } EOFObservação: Substitua YOUR_AWS_ACCOUNT_ID pelo ID da sua conta da AWS, YOUR_AWS_REGION pela sua região da AWS e OIDC-ID pelo seu ID de provedor OIDC.
-
Para criar um perfil do IAM chamado AmazonEKS_EBS_CSI_DriverRole, execute o seguinte comando create-role:
aws iam create-role --role-name AmazonEKS_EBS_CSI_DriverRole --assume-role-policy-document file://"trust-policy.json" -
Para anexar a política do IAM gerenciada pela AWS do driver CSI ao perfil do IAM, execute o seguinte comando attach-role-policy:
aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy --role-name AmazonEKS_EBS_CSI_DriverRole -
Para implantar o driver CSI do Amazon EBS, você pode usar o Kustomize, o Helm ou um complemento gerenciado do Amazon EKS. Para obter instruções de implantação, consulte Installation [Instalação] no site do GitHub.
-
Teste seu driver CSI do Amazon EBS com uma aplicação de exemplo que usa provisionamento dinâmico para os pods. O driver CSI do Amazon EBS provisiona volumes do EBS sob demanda.
Driver CSI do Amazon EFS
Crie um perfil do IAM para o driver CSI
Conclua as etapas a seguir para um cluster com nós de processamento:
-
Para usar a AmazonEFSCSIDriverPolicy, consulte Se estiver usando perfis do IAM para contas de serviço. Em seguida, prossiga para a etapa 7.
Ou execute o comando a seguir para baixar o documento de política do IAM do GitHub:curl -o iam-policy-example.json https://raw.githubusercontent.com/kubernetes-sigs/aws-efs-csi-driver/master/docs/iam-policy-example.json -
Para criar uma política do IAM, execute o seguinte comando create-policy:
aws iam create-policy --policy-name AmazonEKS_EFS_CSI_Driver_Policy --policy-document file://iam-policy-example.json -
Execute o comando describe-cluster para determinar o ID de provedor OIDC do seu cluster:
aws eks describe-cluster --name your_cluster_name --query "cluster.identity.oidc.issuer" --output textObservação: Substitua your_cluster_name pelo nome do seu cluster.
-
Crie a seguinte política de confiança do IAM que concede a ação AssumeRoleWithWebIdentity à sua conta de serviço do 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/OIDC-ID" }, "Action": "sts:AssumeRoleWithWebIdentity", "Condition": { "StringEquals": { "oidc.eks.YOUR_AWS_REGION.amazonaws.com/id/OIDC-ID:sub": "system:serviceaccount:kube-system:efs-csi-controller-sa" } } } ] } EOFObservação: Substitua YOUR_AWS_ACCOUNT_ID pelo ID da sua conta, YOUR_AWS_REGION pela sua região e OIDC-ID pelo ID do provedor OIDC do seu cluster.
-
Para criar um perfil do IAM, execute o seguinte comando create-role:
aws iam create-role --role-name AmazonEKS_EFS_CSI_DriverRole --assume-role-policy-document file://"trust-policy.json" -
Para anexar sua nova política do IAM ao perfil, execute o seguinte comando attach-role-policy:
aws iam attach-role-policy --policy-arn arn:aws:iam::AWS_ACCOUNT_ID:policy/AmazonEKS_EFS_CSI_Driver_Policy --role-name AmazonEKS_EFS_CSI_DriverRoleObservação: Substitua YOUR_AWS_ACCOUNT_ID pelo ID da sua conta.
-
Se você usa um complemento gerenciado, prossiga com a Implantação do driver CSI do Amazon EFS. Para instalar um driver autogerenciado, conclua as etapas 7 a 10. Salve o conteúdo a seguir em um arquivo YAML chamado 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_DriverRoleObservação: Substitua YOUR_AWS_ACCOUNT_ID pelo ID da sua conta.
-
Para criar a conta de serviço do Kubernetes em seu cluster, execute o seguinte comando:
kubectl apply -f efs-service-account.yamlObservação: A conta de serviço do Kubernetes efs-csi-controller-sa tem a anotação do perfil do IAM que você criou.
-
Para baixar o manifesto do registro público do Amazon Elastic Container Registry (Amazon ECR), execute o seguinte comando:
kubectl kustomize "github.com/kubernetes-sigs/aws-efs-csi-driver/deploy/kubernetes/overlays/stable/?ref=release-VERSION" > public-ecr-driver.yamlObservação: Substitua VERSION pelo número da sua versão de lançamento. É uma prática recomendada usar a versão mais recente lançada. Para obter uma lista de branches ativas, consulte Branches no site do GitHub. É possível usar o Helm em vez do Kustomize para instalar o driver. Para ver as etapas, consulte Deploy the driver [Implantar o driver] no site do GitHub.
-
Edite o arquivo baixado para remover as seguintes linhas:
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/name: aws-efs-csi-driver name: efs-csi-controller-sa namespace: kube-system
Observação: Você não precisa incluir as linhas anteriores porque você já criou uma conta de serviço na etapa 7.
Implante o driver CSI do Amazon EFS
Para aplicar o manifesto, execute o seguinte comando:
kubectl apply -f public-ecr-driver.yaml
Se seu cluster não contiver nós e contiver somente pods do AWS Fargate, execute o seguinte comando para implantar o driver em todas as regiões:
kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-efs-csi-driver/master/deploy/kubernetes/base/csidriver.yaml
Crie um sistema de arquivos do EFS
Conclua as etapas a seguir:
- Para obter o ID da nuvem privada virtual (VPC) do seu cluster do Amazon EKS, execute o seguinte comando describe-cluster:
Observação: Substitua your_cluster_name pelo nome do seu cluster.aws eks describe-cluster --name your_cluster_name --query "cluster.resourcesVpcConfig.vpcId" --output text - Para obter o intervalo CIDR para seu cluster da VPC, execute o seguinte comando describe-vpcs:
Observação: Substitua YOUR_VPC_ID pelo ID da sua VPC.aws ec2 describe-vpcs --vpc-ids YOUR_VPC_ID --query "Vpcs[].CidrBlock" --output text - Para criar um grupo de segurança que permita o tráfego de entrada do sistema de arquivos de rede (network file system, NFS) para seus pontos de montagem do Amazon EFS, execute o seguinte comando create-security-group:
Observação: Substitua YOUR_VPC_ID pelo ID da sua VPC. Na saída, observe o valor do GroupId.aws ec2 create-security-group --description efs-test-sg --group-name efs-sg --vpc-id YOUR_VPC_ID - Para permitir que os recursos em sua VPC se comuniquem com seu sistema de arquivos do EFS, execute o seguinte comando authorize-security-group-ingress para adicionar uma regra de entrada NFS:
Observação: Substitua YOUR_VPC_CIDR pelo CIDR da sua VPC e sg-abc pelo ID do seu grupo de segurança.aws ec2 authorize-security-group-ingress --group-id sg-abc --protocol tcp --port 2049 --cidr YOUR_VPC_CIDR - Para criar um sistema de arquivos do EFS para seu cluster do Amazon EKS, execute o seguinte comando create-file-system:
Observação: Observe o FileSystemId.aws efs create-file-system --creation-token eks-efs - Para criar um destino de montagem para o Amazon EFS, execute o seguinte comando create-mount-target:
Observação: Substitua FileSystemId pelo seu ID do sistema de arquivos do EFS, sg-abc pelo ID do seu grupo de segurança e SubnetID pelo ID da sub-rede do seu nó de processamento. É uma prática recomendada executar o comando anterior para cada zona de disponibilidade em que seus nós de processamento são executados. Dessa forma, todas as instâncias do Amazon Elastic Compute Cloud (Amazon EC2) nessas zonas de disponibilidade podem usar o sistema de arquivos. Para criar destinos de montagem em várias sub-redes, execute o comando para cada ID de sub-rede.aws efs create-mount-target --file-system-id FileSystemId --subnet-id SubnetID --security-group sg-abc
Teste o driver CSI do Amazon EFS
Para implantar dois pods que gravam no mesmo arquivo, consulte Multiple Pods Read Write Many [Diversos pods gravam muitos] no site do GitHub.
Informações relacionadas
Solução de erros na operação de arquivos relacionados a cotas
Amazon EFS CSI driver [Driver CSI do Amazon EFS] no site do GitHub
Como soluciono problemas com minhas montagens de volumes do Amazon EBS no Amazon EKS?
Como soluciono problemas com minhas montagens de volumes do Amazon EFS no Amazon EKS?
- Tópicos
- Containers
- Idioma
- Português
Vídeos relacionados


Conteúdo relevante
- feita há um ano
- feita há 9 meses