

 **Ajudar a melhorar esta página** 

Para contribuir com este guia de usuário, escolha o link **Editar esta página no GitHub**, disponível no painel direito de cada página.

# Implantar o driver do FSx para Lustre
<a name="fsx-csi-create"></a>

Este tópico mostra como implantar o [driver de CSI do FSx para Lustre](fsx-csi.md) no cluster do Amazon EKS e verificar se ele funciona. Recomendamos o uso da versão mais recente do driver. Para ver as versões disponíveis, consulte [CSI Specification Compatibility Matrix](https://github.com/kubernetes-sigs/aws-fsx-csi-driver/blob/master/docs/README.md#csi-specification-compatibility-matrix) (Matriz de compatibilidade de especificações de CSI) no GitHub.

**nota**  
O driver não é compatível com o Fargate ou o Amazon EKS Hybrid Nodes.

Para obter descrições detalhadas dos parâmetros disponíveis e exemplos completos que demonstram os recursos do driver, consulte o projeto [FSx for Lustre Container Storage Interface (CSI) driver](https://github.com/kubernetes-sigs/aws-fsx-csi-driver) no GitHub.

## Pré-requisitos
<a name="fsx-csi-prereqs"></a>
+ Um cluster existente.
+ O complemento do driver CSI do Amazon FSx para o EKS requer o agente da Identidade de Pods do EKS para autenticação. Sem esse componente, o complemento falhará com o erro `Amazon EKS Pod Identity agent is not installed in the cluster`, impedindo operações de volume. Instale o atendente da Identidade de Pods antes ou depois de implantar o complemento do driver CSI do FSx. Para obter mais informações, consulte [Configurar o atndente do Identidade de Pods do Amazon EKS](pod-id-agent-setup.md).
+ Versão `2.12.3` ou posterior ou versão `1.27.160` ou posterior da AWS Command Line Interface (AWS CLI) instalada e configurada no seu dispositivo ou no AWS CloudShell. Para verificar sua versão atual, use `aws --version | cut -d / -f2 | cut -d ' ' -f1`. Os gerenciadores de pacotes, como `yum`, `apt-get` ou Homebrew para macOS, geralmente estão várias versões atrás da versão mais recente da AWS CLI. Para instalar a versão mais recente, consulte [Installing](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html) e [Quick configuration with aws configure](https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-quickstart.html#cli-configure-quickstart-config), no *Guia do usuário da AWS Command Line Interface*. A versão da AWS CLI instalada no AWS CloudShell também pode estar várias versões atrás da versão mais recente. Para atualizá-lo, consulte [Instalar a AWS CLI no seu diretório pessoal](https://docs.aws.amazon.com/cloudshell/latest/userguide/vm-specs.html#install-cli-software), no * Guia do usuário do AWS CloudShell*.
+ Versão `0.215.0` ou posterior da ferramenta de linha de comando da `eksctl` instalada no seu dispositivo ou AWS CloudShell. Para instalar ou atualizar o `eksctl`, consulte [Instalação](https://eksctl.io/installation) na documentação do `eksctl`.
+ A ferramenta da linha de comando `kubectl` está instalada no seu dispositivo ou no AWS CloudShell. A versão pode ser a mesma ou até uma versão secundária anterior ou posterior à versão do Kubernetes do seu cluster. Por exemplo, se a versão do cluster for a `1.29`, você poderá usar o `kubectl` versão `1.28`, `1.29` ou `1.30` com ele. Para instalar ou atualizar o `kubectl`, consulte [Configurar o `kubectl` e o `eksctl`](install-kubectl.md).

## Etapa 1: criar um perfil do IAM
<a name="fsx-create-iam-role"></a>

O plug-in do CSI para Amazon FSx requer permissões do IAM para fazer chamadas para APIs da AWS em seu nome.

**nota**  
Os pods terão acesso às permissões atribuídas ao perfil do IAM, a menos que você bloqueie o acesso ao IMDS. Para obter mais informações, consulte [Proteger os clusters do Amazon EKS com as práticas recomendadas](security-best-practices.md).

O procedimento a seguir mostra como criar um perfil do IAM e associar a política gerenciada da AWS a ele.

1. Crie um perfil do IAM e anexe a política do IAM gerenciada pela AWS com o comando a seguir. Substitua `my-cluster` pelo nome do cluster que você deseja usar. O comando implementa uma pilha do AWS CloudFormation que cria um perfil do IAM e anexa a política do IAM a ela.

   ```
   eksctl create iamserviceaccount \
       --name fsx-csi-controller-sa \
       --namespace kube-system \
       --cluster my-cluster \
       --role-name AmazonEKS_FSx_CSI_DriverRole \
       --role-only \
       --attach-policy-arn arn:aws:iam::aws:policy/AmazonFSxFullAccess \
       --approve
   ```

   Você verá várias linhas de resultado à medida que a conta de serviço é criada. As últimas linhas de saída são semelhantes às seguintes:

   ```
   [ℹ]  1 task: {
       2 sequential sub-tasks: {
           create IAM role for serviceaccount "kube-system/fsx-csi-controller-sa",
           create serviceaccount "kube-system/fsx-csi-controller-sa",
       } }
   [ℹ]  building iamserviceaccount stack "eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa"
   [ℹ]  deploying stack "eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa"
   [ℹ]  waiting for CloudFormation stack "eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa"
   [ℹ]  created serviceaccount "kube-system/fsx-csi-controller-sa"
   ```

   Observe o nome da pilha do AWS CloudFormation que foi implantada. No resultado do exemplo anterior, a pilha é denominada `eksctl-my-cluster-addon-iamserviceaccount-kube-system-fsx-csi-controller-sa`.

Agora que criou o perfil do IAM do driver CSI do Amazon FSx, você poderá avançar para a próxima seção. Quando você implanta o complemento com esse perfil do IAM, ele cria e é configurado para usar uma conta de serviço chamada `fsx-csi-controller-sa`. A conta de serviço está vinculada a um `clusterrole` do Kubernetes que recebe as permissões necessárias do Kubernetes.

## Etapa 2: instalar o driver CSI do Amazon FSx
<a name="fsx-csi-deploy-driver"></a>

Recomendamos que você instale o driver CSI do Amazon FSx usando o complemento do Amazon EKS para reforçar a segurança e reduzir o volume do trabalho. Para adicionar um complemento do Amazon EKS ao cluster, consulte [Criar um complemento do Amazon EKS](creating-an-add-on.md). Para obter mais informações sobre complementos, consulte [Complementos do Amazon EKS](eks-add-ons.md).

**Importante**  
Instalações preexistentes do driver CSI do Amazon FSx no cluster podem causar falhas na instalação do complemento. Quando você tentar instalar a versão do complemento do Amazon EKS quando houver um driver CSI do FSx que não seja para o EKS, a instalação falhará devido a conflitos de recursos. Use o sinalizador `OVERWRITE` durante a instalação para resolver esse problema.  

```
aws eks create-addon --addon-name aws-fsx-csi-driver --cluster-name my-cluster --resolve-conflicts OVERWRITE
```

Como alternativa, se quiser uma instalação autogerenciada do driver CSI do Amazon FSx, consulte [Installation](https://github.com/kubernetes-sigs/aws-fsx-csi-driver/blob/master/docs/install.md) no GitHub.

## Etapa 3: implantar uma classe de armazenamento, uma solicitação de volume persistente e uma aplicação de exemplo
<a name="fsx-csi-deploy-storage-class"></a>

Este procedimento usa o repositório GitHub do [driver Container Storage Interface (CSI) do FSx para Lustre](https://github.com/kubernetes-sigs/aws-fsx-csi-driver) para consumir um volume provisionado dinamicamente do Amazon FSx para Lustre.

1. Observe o grupo de segurança do seu cluster. Você pode vê-lo em Console de gerenciamento da AWS na seção **Networking** ou usando o seguinte comando da AWS CLI. Substitua `my-cluster` pelo nome do cluster que você deseja usar.

   ```
   aws eks describe-cluster --name my-cluster --query cluster.resourcesVpcConfig.clusterSecurityGroupId
   ```

1. Crie um grupo de segurança para seu sistema de arquivos Amazon FSx conforme os critérios mostrados em [Grupos de segurança de Amazon VPC](https://docs.aws.amazon.com/fsx/latest/LustreGuide/limit-access-security-groups.html#fsx-vpc-security-groups), no Guia do usuário do Amazon FSx para Lustre. Para a **VPC**, selecione a VPC do seu cluster, conforme mostrado na seção **Networking** (Redes). Para os “grupos de segurança associados aos seus clientes Lustre”, utilize o grupo de segurança do seu cluster. É possível deixar as regras de saída sozinhas para permitir **Todo o tráfego**.

1. Baixe o manifesto da classe de armazenamento com o seguinte comando:

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/storageclass.yaml
   ```

1. Edite a seção de parâmetros do arquivo `storageclass.yaml`. Substitua cada valor de exemplo por seus próprios valores.

   ```
   parameters:
     subnetId: subnet-0eabfaa81fb22bcaf
     securityGroupIds: sg-068000ccf82dfba88
     deploymentType: PERSISTENT_1
     automaticBackupRetentionDays: "1"
     dailyAutomaticBackupStartTime: "00:00"
     copyTagsToBackups: "true"
     perUnitStorageThroughput: "200"
     dataCompressionType: "NONE"
     weeklyMaintenanceStartTime: "7:09:00"
     fileSystemTypeVersion: "2.12"
   ```
   +  ** `subnetId` ** – o ID de da sub-rede em que o sistema de arquivos do Amazon FSx para Lustre deve ser criado. O Amazon FSx for Lustre não conta com suporte em todas as zonas de disponibilidade. Abra o console do Amazon FSx for Lustre em https://console.aws.amazon.com/fsx/ para confirmar se a sub-rede que você deseja usar está em uma zona de disponibilidade compatível. A sub-rede pode incluir os nós ou pode ser uma sub-rede ou uma VPC diferente:
     + É possível verificar as sub-redes do nó no Console de gerenciamento da AWS, selecionando o grupo de nós na seção **Compute** (Computação).
     + Se a sub-rede especificada não for a mesma sub-rede em que os nós estiverem localizados, as VPCs deverão estar [conectadas](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/amazon-vpc-to-amazon-vpc-connectivity-options.html), e você deverá garantir que as portas necessárias estejam abertas nos grupos de segurança.
   +  ** `securityGroupIds` ** – o ID do grupo de segurança criado para o sistema de arquivos.
   +  ** `deploymentType` (opcional)**: o tipo de implantação do sistema de arquivos. Os valores válidos são `SCRATCH_1`, `SCRATCH_2`, `PERSISTENT_1` e `PERSISTENT_2`. Para obter mais informações sobre os tipos de implantação, consulte [Create your Amazon FSx for Lustre file system](https://docs.aws.amazon.com/fsx/latest/LustreGuide/getting-started-step1.html) (Criar o sistema de arquivos do Amazon FSx for Lustre).
   +  **outros parâmetros (opcionais)**: para obter informações sobre outros parâmetros, consulte [Editar StorageClass](https://github.com/kubernetes-sigs/aws-fsx-csi-driver/tree/master/examples/kubernetes/dynamic_provisioning#edit-storageclass), no GitHub.

1. Crie o manifesto da classe de armazenamento.

   ```
   kubectl apply -f storageclass.yaml
   ```

   Veja um exemplo de saída abaixo.

   ```
   storageclass.storage.k8s.io/fsx-sc created
   ```

1. Faça download do manifesto de declaração de volume persistente.

   ```
   curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/claim.yaml
   ```

1. (Opcional) Edite o arquivo `claim.yaml`. Altere `1200Gi` para um dos seguintes valores de incremento com base nos requisitos de armazenamento e no `deploymentType` selecionado em uma etapa anterior.

   ```
   storage: 1200Gi
   ```
   +  `SCRATCH_2` e `PERSISTENT` a `1.2 TiB`, `2.4 TiB` ou incrementos de 2,4 TiB, com mais de 2,4 TiB.
   +  `SCRATCH_1` – `1.2 TiB`, `2.4 TiB`, `3.6 TiB`, a , , ou incrementos de 3,6 TiB, com mais de 3,6 TiB.

1. Crie a declaração de volume persistente.

   ```
   kubectl apply -f claim.yaml
   ```

   Veja um exemplo de saída abaixo.

   ```
   persistentvolumeclaim/fsx-claim created
   ```

1. Confirme se o sistema de arquivos está provisionado.

   ```
   kubectl describe pvc
   ```

   Veja um exemplo de saída abaixo.

   ```
   Name:          fsx-claim
   Namespace:     default
   StorageClass:  fsx-sc
   Status:        Bound
   [...]
   ```
**nota**  
O `Status` pode ser exibido como `Pending` por 5 a 10 minutos, antes de mudar para `Bound`. Não prossiga para a próxima etapa até o `Status` for `Bound`. Se `Status` mostrar `Pending` por mais de 10 minutos, use mensagens de aviso em `Events` como referência para resolver problemas.

1. Implante a aplicação de exemplo.

   ```
   kubectl apply -f https://raw.githubusercontent.com/kubernetes-sigs/aws-fsx-csi-driver/master/examples/kubernetes/dynamic_provisioning/specs/pod.yaml
   ```

1. Verifique se a aplicação de exemplo está em execução.

   ```
   kubectl get pods
   ```

   Veja um exemplo de saída abaixo.

   ```
   NAME      READY   STATUS              RESTARTS   AGE
   fsx-app   1/1     Running             0          8s
   ```

1. Verifique se o sistema de arquivos está montado corretamente pela aplicação.

   ```
   kubectl exec -ti fsx-app -- df -h
   ```

   Veja um exemplo de saída abaixo.

   ```
   Filesystem                   Size  Used Avail Use% Mounted on
   overlay                       80G  4.0G   77G   5% /
   tmpfs                         64M     0   64M   0% /dev
   tmpfs                        3.8G     0  3.8G   0% /sys/fs/cgroup
   192.0.2.0@tcp:/abcdef01      1.1T  7.8M  1.1T   1% /data
   /dev/nvme0n1p1                80G  4.0G   77G   5% /etc/hosts
   shm                           64M     0   64M   0% /dev/shm
   tmpfs                        6.9G   12K  6.9G   1% /run/secrets/kubernetes.io/serviceaccount
   tmpfs                        3.8G     0  3.8G   0% /proc/acpi
   tmpfs                        3.8G     0  3.8G   0% /sys/firmware
   ```

1. Verifique se os dados foram gravados no sistema de arquivos do FSx for Lustre pela aplicação de exemplo.

   ```
   kubectl exec -it fsx-app -- ls /data
   ```

   Veja um exemplo de saída abaixo.

   ```
   out.txt
   ```

   Essa saída de exemplo indica que a aplicação de amostra gravou com êxito o arquivo `out.txt` no sistema de arquivos.

**nota**  
Antes de excluir o cluster, não esqueça de excluir o sistema de arquivos do FSx for Lustre. Para obter mais informações, consulte [Limpar os recursos](https://docs.aws.amazon.com/fsx/latest/LustreGuide/getting-started-step4.html) no *Guia do usuário do FSx for Lustre*.

## Ajuste de performance para o FSx para Lustre
<a name="_performance_tuning_for_fsx_for_lustre"></a>

Ao usar o FSx para Lustre com o Amazon EKS, você pode otimizar a performance aplicando ajustes do Lustre durante a inicialização de nós. A abordagem recomendada é usar os dados do usuário do modelo de inicialização para garantir uma configuração consistente em todos os nós.

Esses ajustes incluem:
+ Otimizações de rede e RPC
+ Gerenciamento do módulo Lustre
+ Ajustes da LRU (unidade de bloqueio de recursos)
+ Configurações de controle de cache do cliente
+ Controles de RPC para OST e MDC

Para obter instruções detalhadas sobre a implementação desses ajustes de performance:
+ Para otimizar a performance de nós padrão (não EFA), consulte [Otimizar a performance do Amazon FSx para Lustre em nós (não EFA)](fsx-csi-tuning-non-efa.md) para obter um script completo que pode ser adicionado aos dados do usuário do modelo de inicialização.
+ Para otimizar a performance de nós habilitados para o EFA, consulte [Otimizar a performance do Amazon FSx para Lustre em nós (EFA)](fsx-csi-tuning-efa.md).