Nesta página, explicamos osconceitos de armazenamento dos clusters do Anthos nos VMware (GKE On-Prem).
Resumo
Os clusters do Anthos no VMware integram-se a sistemas externos de armazenamento em blocos ou arquivos por meio do armazenamento VMware vSphere, plug-ins de volume em árvore do Kubernetes (ou "drivers") e drivers do Container Storage Interface (CSI).
Os clusters do Anthos no VMware usam um StorageClass padrão do Kubernetes para provisionar o armazenamento de cargas de trabalho com estado em um armazenamento de dados do vSphere. Também é possível usar um StorageClass para provisionar diferentes volumes de armazenamento.
Armazenamento do vSphere
Por padrão, os clusters do Anthos no VMware usam o armazenamento do vSphere. O cluster de administrador requer um armazenamento de dados do vSphere pré-provisionado para os dados etcd.
Quando você cria um cluster de usuário, os clusters do Anthos no VMware usam o plug-in de volume do Kubernetes para vSphere para provisionar dinamicamente novos discos de máquina virtual (VMDKs, na sigla em inglês) em um armazenamento de dados do vSphere. Observação: antes da versão 1.2, os clusters de usuário usavam o mesmo armazenamento de dados que os clusters de administrador.
Os armazenamentos de dados do vSphere usados pelos clusters de administrador e de usuário podem receber um backup de NFS, vSAN ou VMFS em um dispositivo de bloco, como uma matriz de armazenamento externo. Em um ambiente de vários hosts, cada dispositivo de bloco precisa ser anexado a todos os hosts no ambiente, e o armazenamento de dados precisa ser configurado em cada host usando a opção Mount Datastore em outros hosts.
Armazenamento padrão
Os clusters do Anthos no VMware incluem um StorageClass padrão do Kubernetes, que determina como o Kubernetes precisa provisionar o armazenamento. Depois que o Kubernetes provisiona os volumes de armazenamento, eles são representados pelos PersistentVolumes do Kubernetes.
O StorageClass padrão de um cluster de usuário aponta para um armazenamento de dados do vSphere, que
é definido no campo datastore
da configuração do StorageClass. Por padrão,
os PersistentVolumes do Kubernetes provisionados no cluster de usuário são VMDKs desse
armazenamento de dados. Esse não é necessariamente o mesmo armazenamento de dados usado pelo cluster de administrador.
Nos clusters do Anthos no VMware, os StatefulSets do Kubernetes, que são cargas de trabalho com estado que normalmente exigem armazenamento permanente, usam o PersistentVolumeClaims com suporte de StorageClasses que apontam ao armazenamento do vSphere por padrão.
Interface do Container Storage
A Container Storage Interface (CSI) é uma API aberta padrão que permite ao Kubernetes expor sistemas de armazenamento arbitrários a cargas de trabalho em contêineres. Quando você implanta um driver de volume compatível com CSI em clusters do Anthos no cluster do VMware, as cargas de trabalho podem se conectar diretamente a um dispositivo de armazenamento compatível sem precisar passar pelo armazenamento do vSphere.
Para usar o CSI no cluster, você precisa implantar o driver CSI fornecido pelo fornecedor de armazenamento. Em seguida, é possível configurar cargas de trabalho para usar o StorageClass do driver ou defini-lo como o StorageClass padrão.
Fizemos parcerias com muitos fornecedores de armazenamento para qualificar os sistemas de armazenamento com clusters do Anthos no VMware. Veja a lista completa de parceiros de armazenamento qualificados.
Driver CSI do vSphere
Por padrão, os clusters do Anthos no VMware aproveitam o plug-in do volume em árvore do VMware, vSphere Cloud Provider (VCP), que ativa automaticamente o suporte a armazenamentos de dados do VMware, incluindo o vSAN. O driver CSI do vSphere é a implementação do driver de volume do vSphere da interface de armazenamento do Container e é um componente do VMware Cloud Native Storage. Ele é implantado automaticamente em clusters do Anthos no VMware e geralmente está disponível a partir dos clusters do Anthos no VMware versão 1.7.
Expansão de volume
A expansão de volume é um recurso Beta no Kubernetes 1.20.
É possível expandir o tamanho de um volume persistente após ele ter sido provisionado editando a solicitação de capacidade no PersistentVolumeClaim (PVC). É possível fazer uma expansão on-line enquanto o volume está em uso por um pod ou uma expansão off-line em que o volume não está em uso.
Para o driver CSI do vSphere, a expansão off-line está disponível nas versões do vSphere >= 7.0 e a expansão on-line está disponível nas versões do vSphere >= 7.0, atualização 2.
O driver CSI do vSphere StorageClass standard-rwo
, que é instalado automaticamente em clusters
de usuário, define allowVolumeExpansion
como verdadeiro por padrão para clusters recém-criados em execução em >= vSphere 7.0. É possível usar a expansão on-line e off-line para volumes usando esse StorageClass. Para um cluster com upgrade, como
StorageClasses não são modificados em upgrades de cluster, quando um cluster é atualizado
de 1.7 para 1.8, a configuração allowVolumeExpansion
em standard-rwo
permanece não definida, o que significa volume expansão não é permitida.
Para mais informações sobre a expansão de volume, consulte Como usar a expansão de volume.
Snapshots de volume do CSI
É possível criar snapshots de armazenamento permanente usando os recursos VolumeSnapshot e VolumeSnapshotClass. Para usar esse recurso em um volume CSI, o driver CSI precisa ser compatível com snapshots de volume, e o contêiner de arquivo secundário external-snapshotter
precisa ser incluído na implantação do driver CSI.
Para mais informações sobre snapshots de volume, consulte Como usar snapshots de volume.
Os controladores de snapshot do CSI são implantados automaticamente quando você cria um cluster.
A partir dos clusters do Anthos no VMware 1.8, estão disponíveis as versões v1
de objetos VolumeSnapshot,
VolumeSnapshotContent e VolumeSnapshotClass. As versões v1beta1
estão obsoletas e deixarão de ser exibidas a partir de uma versão posterior.
Limpeza de volume
Quando você exclui um cluster de usuário, os volumes provisionados pelo plug-in do volume em árvore da VMware podem não ser excluídos. No entanto, ao excluir um cluster de usuário, os volumes provisionados pelo driver CSI do vSphere não são excluídos. Você precisa confirmar se todos os volumes, PVCs e StatefulSets foram excluídos antes de excluir o cluster.
Plug-ins de volume do Kubernetes na árvore
O Kubernetes vem com vários plug-ins de volume na árvore. Você tem a opção de usar qualquer um deles para fornecer armazenamento em blocos ou em arquivos para suas cargas de trabalho com estado. Os plug-ins em árvore permitem que as cargas de trabalho se conectem diretamente ao armazenamento sem precisar passar pelo vSphere.
Enquanto o armazenamento do vSphere fornece automaticamente o provisionamento dinâmico de volumes dentro de um armazenamento de dados apoiado por qualquer dispositivo de armazenamento iSCSI, FC ou NFS, muitos dos plug-ins em árvore não são compatíveis com o provisionamento dinâmico. Elas exigem a criação manual de PersistentVolumes.
A tabela a seguir descreve vários plug-ins de volume na árvore:
Plug-in de volume na árvore | Descrição | Modos de acesso compatíveis | Provisionamento dinâmico |
---|---|---|---|
Fibre Channel | Plug-in de armazenamento genérico | Leitura/gravação de pod único | Não |
iSCSI | Plug-in de armazenamento genérico | Leitura/gravação de pod único | Não |
NFS | Plug-in de armazenamento genérico | Ler/gravar vários pods | Não |
Como configurar o armazenamento de cluster
Se você quiser provisionar volumes de armazenamento diferentes de armazenamentos de dados do vSphere, poderá criar um novo StorageClass em um cluster que use um driver de armazenamento diferente. Em seguida, é possível definir o StorageClass como padrão do cluster ou configurar as cargas de trabalho usando o StorageClass (exemplo de StatefulSet).
Solução de problemas
Consulte Solução de problemas do armazenamento.