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.
Armazenamento de instância do Amazon EC2 para armazenamento de volume do Kubernetes
O driver CSI do armazenamento de instância do Amazon EC2 é um plug-in de interface de armazenamento de contêiner (CSI, na sigla em inglês) que permite ao Kubernetes usar volumes de armazenamento de instância do EC2. Os volumes de armazenamento de instância fornecem armazenamento ao nível do bloco efêmero que é fisicamente anexado ao computador host. O driver gerencia o ciclo de vida desses volumes de armazenamento NVMe e os torna disponíveis como volumes persistentes
O driver CSI do armazenamento de instância do Amazon EC2 interage com dispositivos NVMe de backend por meio de operações locais do Linux. Como não há chamadas de API da AWS envolvidas, nenhum perfil do IAM é necessário.
Considerações
Importante
O driver CSI do armazenamento de instância do Amazon EC2 apagará todos os dados em discos efêmeros durante a instalação. Se outro driver CSI ou sistema de gerenciamento de volumes (como LVM, sistemas de arquivos brutos, LUKS etc.) estiver gerenciando discos efêmeros, faça backup dos dados antes de instalar o driver CSI do armazenamento de instância do Amazon EC2 para evitar a perda de dados.
-
O driver CSI do armazenamento de instância do Amazon EC2 não é compatível com o Modo Automático do EKS.
-
Não é possível montar volumes de armazenamento de instância do Amazon EC2 em pods do Fargate.
-
O driver CSI do armazenamento de instância do Amazon EC2 não está disponível para os seguintes tipos de instância: C1, C3, C4, C5d, C5ad, C6gd, D2, D3, D3en, DL1, E3, Edge1gd, F1, G2, G3, G4ad, G4dn, H1, HSM1, I2, I3, I3.metal, I3en, M1, M2, M3, M4, M5d, M5ad, M5dn, M6gd, P2, P3, P3dn, P4d, P4de, R3, R4, R5d, R5ad, R5dn, R6gd, T1, T2, X1, X1e, X2gd e Z1d.
-
O suporte é fornecido para a versão mais recente do complemento e para uma versão anterior. As correções de bugs ou vulnerabilidades encontradas na versão mais recente serão incorporadas à versão anterior como uma nova versão secundária.
-
O armazenamento de instância é efêmero. Os dados são perdidos quando o nó é encerrado. Implemente replicação em nível de aplicação ou backups para dados críticos.
-
Não há suporte para expansão de volume.
-
O controle de utilização de E/S é habilitado por padrão em todos os volumes para garantir um compartilhamento equitativo da largura de banda entre as workloads. Para obter mais informações, consulte Controle de utilização de E/S.
-
As instâncias recém-iniciadas atualizaram as respostas do comando NVMe identify em comparação com instâncias mais antigas do mesmo tipo. Se suas ferramentas dependerem de valores específicos de NVMe identify, revise a compatibilidade de sua lógica. Para obter mais informações, consulte Alterações de namespace de NVMe em instâncias recém-iniciadas.
Pré-requisitos
Antes de começar, você deve ter o seguinte:
-
Um cluster existente do Amazon EKS. Para visualizar todas as versões disponíveis do complemento, execute o seguinte comando da AWS CLI:
aws eks describe-addon-versions --addon-name aws-ec2-local-instance-store-csi-driver
Instalação do driver CSI do armazenamento de instância do Amazon EC2
O driver CSI do armazenamento de instância do Amazon EC2 está disponível como um complemento do Amazon EKS. A instalação do driver habilita o cluster a usar volumes de armazenamento de instância para o armazenamento de pods.
Para realizar a instalação, adicione o complemento do driver CSI do armazenamento de instância do Amazon EC2 ao cluster. Para instruções detalhadas, consulte Criar um complemento do Amazon EKS. Para obter mais informações sobre complementos do EKS, consulte Complementos do Amazon EKS.
Implantar uma aplicação de exemplo
Após instalar o driver, você pode implantar aplicações de exemplo para verificar se os volumes de armazenamento de instância funcionam corretamente com o cluster. Você pode implantar toda uma variedade de aplicações de exemplo e modificá-las conforme necessário.
Controle de utilização de E/S
O driver CSI de armazenamento de instância do Amazon EC2 inclui controle de utilização de E/S incorporado para garantir o compartilhamento equitativo da largura de banda entre as workloads no mesmo controlador NVMe. O controle de utilização é habilitado por padrão em todos os volumes, evitando que qualquer workload consuma largura de banda de E/S desproporcional em detrimento de outras workloads no mesmo nó.
Configurar o controle de utilização
Você pode configurar o controle de utilização em dois níveis:
-
Parâmetro de StorageClass: defina o parâmetro
throttlingcomo"true"(padrão) ou"false"na definição da StorageClass. -
Anotação da PVC: defina a anotação
lis.csi.aws.com/throttlingcomo"true"ou"false"em PersistentVolumeClaims individuais. Isso substitui a configuração de StorageClass quando presente.
A tabela a seguir mostra como o parâmetro de StorageClass e a anotação de PVC interagem:
| Anotação da PVC | Parâmetro de StorageClass | Resultado |
|---|---|---|
|
Não definido |
Não definido |
Controle de utilização (padrão) |
|
Não definido |
|
Controle de utilização desabilitado |
|
|
|
Controle de utilização desabilitado |
|
|
|
Controle de utilização habilitado |
Criar uma StorageClass sem controle de utilização
Para desabilitar o controle de utilização de todos os volumes em uma StorageClass:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: ec2-instance-store-unthrottled provisioner: lis.csi.aws.com parameters: throttling: "false" volumeBindingMode: WaitForFirstConsumer
Desabilitar o controle de utilização de uma única PVC
Para desabilitar o controle de utilização de uma PVC individual enquanto usa uma StorageClass com controle de utilização:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: high-perf-pvc annotations: lis.csi.aws.com/throttling: "false" spec: accessModes: - ReadWriteOnce storageClassName: ec2-instance-store-sc resources: requests: storage: 100Gi
Considerações sobre controle de utilização
-
O controle de utilização é habilitado por padrão para fornecer performance previsível para todas as workloads que compartilham um controlador NVMe.
-
Desabilitar o controle de utilização em um volume permite que ele consuma mais largura de banda de E/S, o que pode afetar a performance de outros volumes com controle de utilização no mesmo controlador.
-
Considere isolar as workloads sem controle de utilização em nós dedicados.
-
Em volumes RAID-0 que abrangem vários controladores, o controle de utilização é aplicado a todas as partições integrantes.
-
O estado do controle de utilização persiste nas reinicializações dos nós.
Alterações de namespace de NVMe em instâncias recém-iniciadas
As instâncias do EC2 recém-lançadas com armazenamento de instância local atualizaram as respostas dos comandos NVMe Identify Controller e Identify Namespace. Essas alterações são compatíveis com o gerenciamento de namespaces NVMe no armazenamento de instância local do EC2. As instâncias em execução existentes não são afetadas e os valores permanecem estáveis durante todo o ciclo de vida de qualquer instância.
Valores de campo atualizados
Os campos a seguir foram alterados nas instâncias recém-iniciadas em comparação com as instâncias mais antigas do mesmo tipo:
Identificar o controlador (nvme id-ctrl)
-
Bit 3 do OACS: alterado de 0 para 1
-
Bit 8 do OAES: alterado de 0 para 1
-
NN: alterado de 1 para um valor <= 256
-
TNVMCAP: alterado de 0 para o tamanho real do armazenamento local
Identificar namespace (nvme id-ns)
-
NVMCAP: alterado de 0 para o tamanho real do armazenamento local
-
NGUID: alterado de apenas zeros para um NGUID válido
Todos os valores atualizados estão em conformidade com a especificação NVMe.
Escopo das alterações
Essas alterações se aplicam exclusivamente ao armazenamento local de instâncias do EC2. Os volumes do Amazon EBS não são afetados. Para distinguir entre os volumes do EBS e o armazenamento local de instâncias, execute o seguinte comando:
sudo nvme list
Na saída:
-
Amazon Elastic Block Store= volume do EBS -
Amazon EC2 NVMe Instance Storage= armazenamento de instância local
Recuperar os valores do comando NVMe identify
Para consultar esses valores usando nvme-cli:
# Identify Controller sudo nvme id-ctrl /dev/nvme1 # Identify Namespace sudo nvme id-ns /dev/nvme1n1
Ação necessária
Nenhuma ação é necessária. Essas alterações são compatíveis com versões anteriores e seguem a especificação NVMe. Porém, se a aplicação ou o conjunto de ferramentas validar ou depender de valores específicos dos comandos NVMe identify, revise a lógica para garantir a compatibilidade com os valores atualizados nas instâncias recém-iniciadas.