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:
Acesse o menu do Google Kubernetes Engine no Console do Cloud.
Clique no botão Criar cluster.
Configure o cluster como quiser. Para detalhes sobre os tipos de clusters que podem ser criados, consulte Tipos de clusters.
No painel de navegação, em Cluster, clique em Recursos.
Marque a caixa de seleção Ativar driver de CSI do disco permanente do Compute Engine.
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:
Acesse o menu do Google Kubernetes Engine no Console do Cloud.
Clique no botão Editar do cluster, que se parece com um lápis.
Expanda os Complementos.
No menu suspenso Driver CSI do disco permanente do Compute Engine, selecione Ativado.
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:
Acesse o menu do Google Kubernetes Engine no Console do Cloud.
Clique no botão Editar do cluster, que se parece com um lápis.
Expanda os Complementos.
No menu suspenso Driver do CSI do disco permanente do Compute Engine, selecione Desativado.
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