View a markdown version of this page

Armazenamento de instância do Amazon EC2 para armazenamento de volume do Kubernetes - Amazon EKS

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 do Kubernetes.

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 throttling como "true" (padrão) ou "false" na definição da StorageClass.

  • Anotação da PVC: defina a anotação lis.csi.aws.com/throttling como "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

"false"

Controle de utilização desabilitado

"false"

"true" ou não definido

Controle de utilização desabilitado

"true"

"false"

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.