Armazenamento

Nesta página, explicamos os conceitos de armazenamento do GKE On-Prem.

Resumo

O GKE On-Prem integra-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 GKE On-Prem usam um StorageClass padrão do Kubernetes para provisionar armazenamento para 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 GKE On-Prem 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, o GKE On-Prem usa o plug-in de volume do vSphere do Kubernetes 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 GKE On-Prem 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.

No GKE On-Prem, os StatefulSets do Kubernetes (cargas de trabalho com estado que normalmente exigem armazenamento permanente) usam PersistentVolumeClaims respaldados pelo StorageClasses que apontam para o 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 um cluster do GKE On-Prem, as cargas de trabalho podem se conectar diretamente a um dispositivo de armazenamento compatível sem precisar passar pelo armazenamento do vSphere.

O GKE local é compatível com o CSI v1.0. Para usar o CSI no cluster, você precisa implantar o driver CSI fornecido pelo fornecedor de armazenamento. Em seguida, é possível configurar as 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 seus sistemas de armazenamento com o GKE On-Prem. Veja a lista completa de parceiros de armazenamento qualificados.

Por padrão, o GKE on-prem aproveita o plug-in de volume em árvore do VMware, o vSphere Cloud Provider (VCP), que ativa automaticamente o suporte a armazenamentos de dados do VMware, incluindo vSAN. No momento, a implantação manual do driver CSI do vSphere não é necessária nem recomendada, já que o GKE on-prem incluirá o driver CSI do vSphere em uma versão futura.

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 árvoreDescriçãoModos de acesso compatíveisProvisionamento dinâmico
Fibre ChannelPlug-in de armazenamento genéricoLeitura/gravação de pod únicoNão
iSCSIPlug-in de armazenamento genéricoLeitura/gravação de pod únicoNão
NFSPlug-in de armazenamento genéricoLer/gravar vários podsNão
RBD do CephArmazenamento definido por software de código abertoLeitura/gravação de pod únicoSim
CephFSArmazenamento definido por software de código abertoLer/gravar vários podsNão
PortworxArmazenamento proprietário definido por softwareLer/gravar vários podsSim
QuobyteArmazenamento proprietário definido por softwareLeitura/gravação de pod únicoSim
StorageOSArmazenamento proprietário definido por softwareLeitura/gravação de pod únicoSim

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.

Leitura adicional