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
Este tópico mostra como implantar o driver de CSI do FSx para Lustre 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
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
Pré-requisitos
-
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 agente da Identidade de Pods antes ou depois de implantar o complemento do driver CSI do FSx. Para obter mais informações, consulte Configurar o Amazon EKS Pod Identity Agent. -
Versão
2.12.3
ou posterior ou versão1.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, useaws --version | cut -d / -f2 | cut -d ' ' -f1
. Os gerenciadores de pacotes, comoyum
,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 e Quick configuration with aws configure, 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, no Guia do usuário do AWS CloudShell. -
Versão
0.210.0
ou posterior da ferramenta de linha de comando daeksctl
instalada no seu dispositivo ou AWS CloudShell. Para instalar ou atualizar oeksctl
, consulte Instalaçãona 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 a1.29
, você poderá usar okubectl
versão1.28
,1.29
ou1.30
com ele. Para instalar ou atualizar okubectl
, consulte Configurar o kubectl e o eksctl.
Etapa 1: Criar uma função do IAM
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.
O procedimento a seguir mostra como criar um perfil do IAM e associar a política gerenciada da AWS a ele.
-
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
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. Para obter mais informações sobre complementos, consulte Complementos do Amazon EKS.
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
Etapa 3: implantar uma classe de armazenamento, uma solicitação de volume persistente e uma aplicação de exemplo
Este procedimento usa o repositório GitHub do driver Container Storage Interface (CSI) do FSx para Lustre
-
Observe o grupo de segurança do seu cluster. Você pode vê-lo em AWS Management Console 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
-
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, 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.
-
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
-
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 AWS Management Console, 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, 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ãoSCRATCH_1
,SCRATCH_2
,PERSISTENT_1
ePERSISTENT_2
. Para obter mais informações sobre os tipos de implantação, consulte Create your Amazon FSx for Lustre file system (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
, no GitHub.
-
-
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
-
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
-
(Opcional) Edite o arquivo
claim.yaml
. Altere1200Gi
para um dos seguintes valores de incremento com base nos requisitos de armazenamento e nodeploymentType
selecionado em uma etapa anterior.storage: 1200Gi
-
SCRATCH_2
ePERSISTENT
a1.2 TiB
,2.4 TiB
ou incrementos de 2,4 TiB, com mais de 2,4 TiB. -
SCRATCH_1
a1.2 TiB
,2.4 TiB
,3.6 TiB
ou incrementos de 3,6 TiB, com mais de 3,6 TiB.
-
-
Crie a declaração de volume persistente.
kubectl apply -f claim.yaml
Veja um exemplo de saída abaixo.
persistentvolumeclaim/fsx-claim created
-
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 comoPending
por 5 a 10 minutos, antes de mudar paraBound
. Não prossiga para a próxima etapa até oStatus
forBound
. SeStatus
mostrarPending
por mais de 10 minutos, use mensagens de aviso emEvents
como referência para resolver problemas. -
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
-
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
-
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
-
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 no Guia do usuário do FSx for Lustre.
Ajuste de performance para o FSx para Lustre
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) 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).