Como usar o driver CSI do disco permanente do Compute Engine

Nesta página, explicamos como usar o driver CSI do disco permanente do Compute Engine.

O Google Kubernetes Engine (GKE) fornece uma maneira simples de implantar e gerenciar automaticamente o Driver da interface de armazenamento do contêiner (CSI, na sigla em inglês) de disco permanente do Google Compute Engine nos clusters.

A versão do driver CSI do disco permanente do Compute Engine está vinculada aos números de versão do mestre do GKE Kubernetes. Normalmente, esse é o driver mais recente disponível no momento em que a versão do GKE é lançada. Os drivers são atualizados automaticamente quando o cluster é atualizado para o patch do GKE mais recente.

Benefícios do uso do driver CSI do disco permanente do Compute Engine

Usar o driver CSI do disco permanente do Compute Engine em vez do Plug-in de volume gcePersistentDisk (em inglês) em árvore no Kubernetes traz os seguintes benefícios:

  • Os drivers CSI são o futuro da extensão de armazenamento no Kubernetes, substituindo os plug-ins de volume em árvore. O Kubernetes anunciou que, provavelmente, os plug-ins de volume em árvore serão removidos do Kubernetes na versão 1.21. Para mais detalhes, consulte Árvore no Kubernetes para migração de volume CSI para versão Beta (em inglês). Depois que isso acontecer, os volumes atuais que usam plug-ins de volume em árvore se comunicarão por meio de drivers CSI.
  • Isso permite a implantação e o gerenciamento automáticos do driver de disco permanente sem ter que configurá-lo manualmente ou usar o plug-in de volume em árvore.
  • Isso também fornece recursos adicionais de disco permanente no GKE. As Chaves de criptografia gerenciadas pelo cliente (CMEK, na sigla em inglês), usadas para criptografar as chaves de criptografia de dados, estão disponíveis no driver CSI do disco permanente do Compute Engine, mas não no plug-in do volume em árvore. Para saber mais, consulte Como usar CMEK.
  • Correções de bugs e atualizações de recursos são lançadas independentemente das versões secundárias do Kubernetes. Isso normalmente resulta em uma cadência de lançamento mais rápida.

Requisitos

Para esse recurso, é preciso usar as versões do nó e mestre do Kubernetes que sejam 1.14 ou superior.

Como ativar o driver CSI do disco permanente do Compute Engine em um novo cluster

Para usar o driver CSI do disco permanente do Compute Engine em novos clusters, ative o recurso usando a gcloud ou o Console do Google Cloud. Essa é a única etapa obrigatória.

gcloud

Por padrão, o driver CSI do disco permanente do Google Compute Engine não é ativado quando você cria um cluster. Para ativar o driver na criação do cluster, execute o seguinte comando:

gcloud beta container clusters create cluster-name \
  --addons=GcePersistentDiskCsiDriver \
  --cluster-version=version

em que:

  • cluster-name é o nome do novo cluster.
  • version é o número da versão do GKE. Selecione uma versão 1.14 ou superior para usar esse recurso.

Para ver a lista completa de sinalizações opcionais, consulte a documentação de gcloud container clusters create.

Console

Por padrão, o driver CSI do disco permanente do Compute Engine não é ativado quando você cria um cluster. Para ativar o driver na criação do cluster:

  1. Acesse o menu do Google Kubernetes Engine no Console do Cloud.

    Acessar o menu do Google Kubernetes Engine

  2. Clique no botão Criar cluster.

  3. Configure o cluster como quiser. Para detalhes sobre os tipos de clusters que podem ser criados, consulte Tipos de clusters.

  4. No painel de navegação, em Cluster, clique em Recursos.

  5. Marque a caixa de seleção Ativar driver de CSI do disco permanente do Compute Engine.

  6. Clique em Criar

Depois de ativar o driver CSI do disco permanente do Compute Engine, ele poderá ser usado nos volumes do Kubernetes usando o nome do provisionador e do driver: pd.csi.storage.gke.io.

Como ativar o driver CSI do disco permanente do Compute Engine em um cluster atual

O driver também pode ser ativado em um cluster atual, desde que as versões mestre e de nó sejam 1.14 ou mais recentes.

gcloud

Para ativar o driver em um cluster atual, execute o seguinte comando:

gcloud beta container clusters update cluster-name \
  --update-addons=GcePersistentDiskCsiDriver=ENABLED

em que cluster-name é o nome do cluster existente.

Console

Para ativar o driver em um cluster atual:

  1. Acesse o menu do Google Kubernetes Engine no Console do Cloud.

    Acessar o menu do Google Kubernetes Engine

  2. Clique no botão Editar do cluster, que se parece com um lápis.

  3. Expanda os Complementos.

  4. No menu suspenso Driver CSI do disco permanente do Compute Engine, selecione Ativado.

  5. Clique em Save.

Como desativar o driver CSI do disco permanente do Compute Engine

Você também tem a opção de desativar o driver.

gcloud

Para ativar o driver em um cluster atual, execute o seguinte comando:

gcloud beta container clusters update cluster-name \
  --update-addons=GcePersistentDiskCsiDriver=DISABLED

em que cluster-name é o nome do cluster existente.

Console

Para ativar o driver em um cluster atual:

  1. Acesse o menu do Google Kubernetes Engine no Console do Cloud.

    Acessar o menu do Google Kubernetes Engine

  2. Clique no botão Editar do cluster, que se parece com um lápis.

  3. Expanda os Complementos.

  4. No menu suspenso Driver do CSI do disco permanente do Compute Engine, selecione Desativado.

  5. Clique em Save.

Como usar o driver CSI do disco permanente do Compute Engine

As seções a seguir descrevem o processo típico de uso de um volume do Kubernetes compatível com um driver CSI no GKE.

Criar um StorageClass

Depois que você ativa o driver CSI do disco permanente do Compute Engine, o GKE faz a pré-instalação do StorageClass automaticamente. O nome do StorageClass é standard-rwo. No entanto, algumas versões mais antigas do cluster podem ter um dos seguintes nomes: + singlewriter-standard + standard-singlewriter

Para encontrar o nome do StorageClass instalado, execute o seguinte comando:

kubectl get sc

Também é possível instalar um StorageClass diferente. Por exemplo, é possível criar um StorageClass usando o seguinte arquivo chamado pd-example-class.yaml:

apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: pd-example
provisioner: pd.csi.storage.gke.io
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true
parameters:
  type: pd-ssd

Depois de criar o arquivo pd-example-class.yaml, execute o seguinte comando:

kubectl create -f pd-example-class.yaml

Criar um PersistentVolumeClaim

Também é possível criar um PersistentVolumeClaim. O exemplo a seguir usa a classe de armazenamento pré-instalada singlewriter-standard:

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: podpvc
spec:
  accessModes:
  - ReadWriteOnce
  storageClassName: singlewriter-standard
  resources:
    requests:
      storage: 6Gi

Depois de criar o manifesto PersistentVolumeClaim, execute o seguinte comando:

kubectl create -f filename.yaml

No StorageClass pré-instalado, singlewriter-standard, volumeBindingMode é definido como WaitForFirstConsumer. Quando volumeBindingMode for definido como WaitForFirstConsumer, o PersistentVolume não será provisionado até que um pod referenciando PersistentVolumeClaim seja programado. Se volumeBindingMode no StorageClass estiver definido como Immediate (ou se estiver omitido), um PersistentVolume baseado em disco permanente será provisionado depois que o PersistentVolumeClaim for criado.

Criar um pod que consuma o volume

Ao usar pods com PersistentVolumes, recomendamos usar um controlador de carga de trabalho (como uma implantação ou StatefulSet). Mesmo que você geralmente não use um pod independente, o exemplo a seguir usa um para simplificar.

É possível alterar o seguinte arquivo YAML para um modelo de pod.

apiVersion: v1
kind: Pod
metadata:
  name: web-server
spec:
  containers:
   - name: web-server
     image: nginx
     volumeMounts:
       - mountPath: /var/lib/www/html
         name: mypvc
  volumes:
   - name: mypvc
     persistentVolumeClaim:
       claimName: podpvc
       readOnly: false

A seguir