As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Armazenamento
Visão geral
Há cenários em que talvez você queira executar aplicativos que precisam preservar os dados por um curto ou longo prazo. Para esses casos de uso, os volumes podem ser definidos e montados por pods para que seus contêineres possam acessar diferentes mecanismos de armazenamento. O Kubernetes oferece suporte a diferentes tipos de volumes para armazenamento temporário
Volumes efêmeros
Os volumes temporários são para aplicativos que exigem volumes locais transitórios, mas não exigem que os dados sejam persistidos após a reinicialização. Exemplos disso incluem requisitos de espaço temporário, armazenamento em cache e dados de entrada somente para leitura, como dados de configuração e segredos. Você pode encontrar mais detalhes sobre os volumes efêmeros do Kubernetes aqui.
Usando volumes do EBS
Recomendamos começar com gp3
Usando lojas de EC2 instâncias da Amazon
As lojas de EC2 instâncias da Amazon fornecem armazenamento temporário em nível de bloco para suas EC2 instâncias. O armazenamento fornecido pelos armazenamentos de EC2 instâncias pode ser acessado por meio de discos fisicamente conectados aos hosts. Ao contrário do Amazon EBS, você só pode anexar volumes de armazenamento de instâncias quando a instância é iniciada, e esses volumes só existem durante a vida útil da instância. Eles não podem ser desanexados e reconectados a outras instâncias. Você pode aprender mais sobre as lojas de EC2 instâncias da Amazon aqui. Não há taxas adicionais associadas a um volume de armazenamento de instâncias. Isso as torna (volumes de armazenamento de instâncias) mais econômicas do que as EC2 instâncias gerais com grandes volumes do EBS.
Para usar volumes de armazenamento local no Kubernetes, você deve particionar, configurar e formatar os discos usando os EC2 dados do usuário da Amazon para que os volumes possam ser montados conforme a especificação do pod. HostPath
Lembre-se de que, ao usar volumes de armazenamento de EC2 instâncias da Amazon, o limite total de IOPS é compartilhado com o host e vincula os pods a um host específico. Você deve analisar minuciosamente seus requisitos de carga de trabalho antes de adotar os volumes de armazenamento de EC2 instâncias da Amazon.
Volumes persistentes
O Kubernetes geralmente está associado à execução de aplicativos sem estado. No entanto, há cenários em que talvez você queira executar microsserviços que precisem preservar dados ou informações persistentes de uma solicitação para a outra. Os bancos de dados são um exemplo comum desses casos de uso. No entanto, os pods e os contêineres ou processos dentro deles são de natureza efêmera. Para manter os dados além da vida útil de um pod, você pode usar PVs para definir o acesso ao armazenamento em um local específico que seja independente do pod. Os custos associados ao armazenamento PVs são altamente dependentes do tipo de armazenamento que está sendo usado e de como os aplicativos o estão consumindo.
Há diferentes tipos de opções de armazenamento compatíveis com o Kubernetes no PVs Amazon EKS listados aqui. As opções de armazenamento abordadas abaixo são Amazon EBS, Amazon EFS, Amazon FSx for Lustre, Amazon FSx for NetApp ONTAP.
Volumes do Amazon Elastic Block Store (EBS)
Os volumes do Amazon EBS podem ser consumidos como Kubernetes PVs para fornecer volumes de armazenamento em nível de bloco. Eles são adequados para bancos de dados que dependem de leituras e gravações aleatórias e aplicativos de alto rendimento que realizam leituras e gravações longas e contínuas. O driver Amazon Elastic Block Store Container Storage Interface (CSI) permite que os clusters do Amazon EKS gerenciem o ciclo de vida dos volumes do Amazon EBS para volumes persistentes. A Container Storage Interface permite e facilita a interação entre o Kubernetes e um sistema de armazenamento. Quando um driver CSI é implantado em seu cluster EKS, você pode acessar seus recursos por meio dos recursos de armazenamento nativos do Kubernetes, como Volumes Persistentes (PVs), Declarações de Volume Persistentes () e Classes de Armazenamento (PVCs). SCs Este link
Escolhendo o volume certo
Recomendamos usar a última geração de armazenamento em bloco (gp3), pois ela fornece o equilíbrio certo entre preço e desempenho. Ele também permite que você escale o volume de IOPS e a taxa de transferência independentemente do tamanho do volume, sem precisar provisionar capacidade adicional de armazenamento em blocos. Se você estiver usando volumes gp2 no momento, é altamente recomendável migrar para volumes gp3. A postagem do blog Como migrar clusters do Amazon EKS de volumes do EBS gp2 para gp3
O Amazon EBS permite alterar as características do volume, como tamanho do volume, IOPS e taxa de transferência on-line. Utilizando esse recurso, é possível migrar de gp2 para gp3 sem tempo de inatividade do aplicativo usando anotações de PVC, conforme descrito neste blog
Quando você tem aplicativos que exigem maior desempenho e precisam de volumes maiores do que o que um único volume gp3 pode suportar
Um único volume gp3 pode suportar até 16.000 IOPS no máximo, 1.000 taxa de transferência máxima, no MiB/s máximo 16 TiB. A última geração de volume SSD de IOPS provisionadas que fornece até 256.000 IOPS, 4.000 MiB/s, taxa de transferência e 64 TiB.
Entre essas opções, você deve adaptar melhor o desempenho e o custo do armazenamento às necessidades de seus aplicativos.
Monitore e otimize ao longo do tempo
É importante entender o desempenho básico do seu aplicativo e monitorá-lo em relação aos volumes selecionados para verificar se ele está atendendo ao seu requirements/expectations ou se está superprovisionado (por exemplo, um cenário em que as IOPS provisionadas não estão sendo totalmente utilizadas).
Em vez de alocar um grande volume desde o início, você pode aumentar gradualmente o tamanho do volume à medida que acumula dados. Você pode redimensionar volumes dinamicamente usando o recurso de redimensionamento de volume
Para identificar e remover quaisquer volumes pendentes do EBS, você pode usar a categoria de otimização de custos do AWS Trusted Advisor. Esse recurso ajuda a identificar volumes não conectados ou com atividade de gravação muito baixa por um período de tempo. Há uma ferramenta nativa da nuvem, de código aberto e somente para leitura, chamada Popeye
Para se aprofundar no monitoramento, consulte o guia de observabilidade da otimização de custos do EKS.
Outra opção que você pode considerar são as recomendações de volume do AWS Compute Optimizer Amazon EBS. Essa ferramenta identifica automaticamente a configuração ideal do volume e o nível correto de desempenho necessário. Por exemplo, ele pode ser usado para configurações ideais relacionadas a IOPS provisionadas, tamanhos de volume e tipos de volumes do EBS com base na utilização máxima durante os últimos 14 dias. Também quantifica a possível economia mensal de custos derivada de suas recomendações. Você pode revisar este blog
Backup retention policy (Política de retenção de backup)
Você pode fazer backup dos dados em seus volumes do Amazon EBS tirando point-in-time snapshots. O driver CSI do Amazon EBS oferece suporte a snapshots de volume. Você pode aprender como criar um snapshot e restaurar um EBS PV usando as etapas descritas aqui.
Os instantâneos subsequentes são backups incrementais, o que significa que somente os blocos no dispositivo que foram alterados após o instantâneo mais recente são salvos. Isso minimiza o tempo necessário para criar o snapshot e economiza em custos de armazenamento ao não duplicar os dados. No entanto, aumentar o número de snapshots antigos do EBS sem uma política de retenção adequada pode causar custos inesperados ao operar em grande escala. Se você estiver fazendo backup direto dos volumes do Amazon EBS por meio da API da AWS, você pode aproveitar o Amazon Data
nota
Atualmente, não há como usar o Amazon DLM por meio do driver CSI do Amazon EBS.
Em um ambiente Kubernetes, você pode aproveitar uma ferramenta de código aberto chamada Velero
Amazon Elastic File System (EFS)
O Amazon Elastic File System (EFS)
Um dos principais benefícios do Amazon EFS é que ele pode ser montado por vários contêineres espalhados por vários nós e várias zonas de disponibilidade. Outro benefício é que você paga apenas pelo armazenamento que usa. Os sistemas de arquivos EFS aumentarão e diminuirão automaticamente à medida que você adiciona e remove arquivos, o que elimina a necessidade de planejamento de capacidade.
Para usar o Amazon EFS no Kubernetes, você precisa usar o driver Amazon Elastic File System Container Storage Interface (CSI),. aws-efs-csi-driver
Escolhendo a classe de armazenamento EFS certa
O Amazon EFS oferece quatro classes de armazenamento.
Duas classes de armazenamento padrão:
-
Padrão Amazon EFS
-
Amazon EFS Standard-Infrequent Access (
EFS Standard-IA)
Duas classes de armazenamento de uma zona:
-
Amazon EFS One Zone-Infrequent Access (EFS One Zone-IA)
As classes de armazenamento de acesso infrequente (IA) são econômicas para arquivos que não são acessados todos os dias. Com o gerenciamento do ciclo de vida do Amazon EFS, você pode mover arquivos que não foram acessados durante a política de ciclo de vida (7, 14, 30, 60 ou 90 dias) para as classes de armazenamento IA, o que pode reduzir o custo de armazenamento em até 92% em comparação com as classes de armazenamento EFS Standard e EFS One Zone, respectivamente.
Com o EFS Intelligent-Tiering, o gerenciamento do ciclo de vida monitora os padrões de acesso do seu sistema de arquivos e move automaticamente os arquivos para a classe de armazenamento mais adequada.
nota
aws-efs-csi-driver atualmente não tem controle sobre mudanças nas classes de armazenamento, no gerenciamento do ciclo de vida ou no Intelligent-Tiering. Eles devem ser configurados manualmente no console da AWS ou por meio do EFS APIs.
nota
aws-efs-csi-driver não é compatível com imagens de contêiner baseadas em Windows.
nota
Há um problema de memória conhecido quando vol-metrics-opt-in(para emitir métricas de volume) é ativado devido à DiskUsage
Amazon FSx para Lustre
O Lustre é um sistema de arquivos paralelo de alto desempenho comumente usado em cargas de trabalho que exigem uma taxa de transferência de até centenas de GB/s latências inferiores a milissegundos por operação. Ele é usado para cenários como treinamento de aprendizado de máquina, modelagem financeira, HPC e processamento de vídeo. O Amazon FSx for Lustre
Você pode usar volumes de armazenamento persistente do Kubernetes apoiados pelo FSx for Lustre usando o driver CSI FSx for Lustre do
Link para o Amazon S3
É recomendável vincular um repositório de dados de longo prazo altamente durável que reside no Amazon S3 ao FSx seu sistema de arquivos for Lustre. Uma vez vinculados, grandes conjuntos de dados são carregados lentamente, conforme necessário, do Amazon S3 para FSx os sistemas de arquivos Lustre. Você também pode executar suas análises e resultados no S3 e, em seguida, excluir seu sistema de arquivos Lustre.
Escolhendo as opções certas de implantação e armazenamento
FSx for Lustre oferece diferentes opções de implantação. A primeira opção é chamada de scratch e não replica dados, enquanto a segunda opção é chamada de persistente, que, como o nome indica, persiste os dados.
A primeira opção (scratch) pode ser usada para reduzir o custo do processamento temporário de dados de curto prazo. A opção de implantação persistente foi projetada para armazenamento de longo prazo que replica automaticamente os dados dentro de uma zona de disponibilidade da AWS. Ele também suporta armazenamento SSD e HDD.
Você pode configurar o tipo de implantação desejado nos parâmetros do Kubernetes do sistema de arquivos FSx for lustre. StorageClass Aqui está um link
nota
Para cargas de trabalho sensíveis à latência ou cargas de trabalho que exigem os mais altos níveis de IOPs/taxa de transferência, você deve escolher o armazenamento SSD. Para cargas de trabalho focadas na taxa de transferência que não são sensíveis à latência, você deve escolher o armazenamento em HDD.
Ativar compactação de dados
Você também pode ativar a compactação de dados em seu sistema de arquivos especificando "LZ4" como o Tipo de compactação de dados. Depois de habilitado, todos os arquivos recém-gravados serão automaticamente compactados FSx para o Lustre antes de serem gravados no disco e descompactados quando forem lidos. LZ4 o algoritmo de compressão de dados não tem perdas, então os dados originais podem ser totalmente reconstruídos a partir dos dados compactados.
Você pode configurar o tipo de compactação de dados LZ4 conforme os parâmetros do Kubernetes do sistema de arquivos FSx for lustre. StorageClass A compactação é desativada quando o valor é definido como NONE, que é o padrão. Esse link
nota
O Amazon FSx for Lustre não é compatível com imagens de contêiner baseadas em Windows.
Amazon FSx para NetApp ONTAP
O Amazon FSx for NetApp ONTAP
O Amazon FSx for NetApp ONTAP oferece suporte a dois níveis de armazenamento: 1/nível primário e 2/nível de pool de capacidade.
A camada primária é uma camada provisionada e baseada em SSD de alto desempenho para dados ativos e sensíveis à latência. A camada de pool de capacidade totalmente elástica é otimizada em termos de custo para dados acessados com pouca frequência, é escalada automaticamente à medida que os dados são hierarquizados e oferece petabytes de capacidade praticamente ilimitados. Você pode ativar a compactação e a desduplicação de dados no armazenamento do pool de capacidade e reduzir ainda mais a quantidade de capacidade de armazenamento que seus dados consomem. NetAppO FabricPool recurso nativo baseado em políticas da monitora continuamente os padrões de acesso aos dados, transferindo automaticamente os dados bidirecionalmente entre os níveis de armazenamento para otimizar o desempenho e o custo.
NetAppO Astra Trident da fornece orquestração dinâmica de armazenamento usando um driver CSI que permite que os clusters do Amazon EKS gerenciem o ciclo de vida de volumes persistentes apoiados PVs pela Amazon para sistemas de arquivos ONTAP. FSx NetApp Para começar, consulte Usar o Astra Trident com a Amazon FSx para NetApp ONTAP
Outras considerações
Minimize o tamanho da imagem do contêiner
Depois que os contêineres são implantados, as imagens dos contêineres são armazenadas em cache no host como várias camadas. Ao reduzir o tamanho das imagens, a quantidade de armazenamento necessária no host pode ser reduzida.
Ao usar imagens básicas reduzidas, como imagens de rascunho ou imagens de contêiner sem distribuição
Você também deve considerar o uso de ferramentas de código aberto, como o Slim.ai
Várias camadas de pacotes, ferramentas, dependências de aplicativos e bibliotecas podem facilmente aumentar o tamanho da imagem do contêiner. Ao usar construções de vários estágios, você pode copiar seletivamente artefatos de um estágio para outro, excluindo tudo o que não é necessário da imagem final. Você pode conferir mais práticas recomendadas de criação de imagens aqui.
Outra coisa a considerar é por quanto tempo as imagens em cache devem ser mantidas. Talvez você queira limpar as imagens obsoletas do cache de imagens quando uma certa quantidade de disco for utilizada. Isso ajudará a garantir que você tenha espaço suficiente para a operação do host. Por padrão, o kubelet
Para configurar opções para coleta de lixo de contêineres e imagens não utilizados, ajuste o kubelet usando um arquivo de configuraçãoKubeletConfiguration
Você pode aprender mais sobre isso na documentação do Kubernetes.