O driver CSI do Persistent Disk do Compute Engine é a principal maneira de acessar o armazenamento de hiperdisco com clusters do Google Kubernetes Engine (GKE).
Antes de começar
Antes de começar, verifique se você realizou as tarefas a seguir:
- Ativar a API Google Kubernetes Engine. Ativar a API Google Kubernetes Engine
- Se você quiser usar a Google Cloud CLI para essa tarefa,
instale e, em seguida,
inicialize a
CLI gcloud. Se você instalou a CLI gcloud anteriormente, instale a versão
mais recente executando
gcloud components update
.
- Defina a região e a zona padrão como um dos valores compatíveis.
Requisitos
Para usar volumes do Hyperdisk no GKE, os clusters precisam atender aos seguintes requisitos:
- Use clusters do Linux com o GKE versão 1.26 ou posterior. Se você usar um canal de lançamento, verifique se ele tem a versão mínima do GKE necessária para o driver.
- Verifique se o driver CSI do disco permanente do Compute Engine está ativado. O driver de disco permanente do Compute Engine é ativado por padrão em novos clusters do Autopilot e Standard e não pode ser desativado ou editado ao usar o Autopilot. Se você precisa ativar o driver CSI do Persistent Disk do Compute Engine do seu cluster, consulte Como ativar o driver CSI do Persistent Disk do Compute Engine em um cluster atual.
Criar um volume do Hyperdisk para o GKE
Nesta seção, fornecemos uma visão geral da criação de um volume do Hyperdisk com suporte do driver CSI do Compute Engine no GKE.
Criar um StorageClass
Os
campos Type
de armazenamento em disco permanente
a seguir são fornecidos pelo driver CSI do Persistent Disk do Compute Engine para oferecer suporte ao
Hyperdisk:
hyperdisk-balanced
hyperdisk-throughput
hyperdisk-extreme
hyperdisk-ml
Para criar um novo StorageClass com o nível de capacidade ou IOPS desejado, use
pd.csi.storage.gke.io
no campo do provisionador e especifique um dos
tipos de armazenamento do Hyperdisk.
Cada tipo de Hyperdisk tem valores padrão para o desempenho determinado pelo tamanho inicial do disco provisionado. Ao criar o StorageClass, é possível especificar os parâmetros a seguir, dependendo do tipo de Hyperdisk. Se você omitir esses parâmetros, o GKE usará os padrões do tipo de disco com base em capacidade.
Parâmetro | Tipo de Hyperdisk | Uso |
---|---|---|
provisioned-throughput-on-create |
Hyperdisk equilibrado, capacidade de processamento do Hyperdisk | Expresse o valor da capacidade de processamento em MiBps usando o qualificador "Mi". Por exemplo, se a capacidade necessária for de 250 MiBps, especifique "250Mi" ao criar o StorageClass. |
provisioned-iops-on-create |
Hyperdisk balanceado, IOPS do Hyperdisk | O valor de IOPS precisa ser expresso sem qualificadores. Por exemplo, se você precisar de 7.000 IOPS, especifique "7000" ao criar o StorageClass. |
Para orientações sobre os valores permitidos para capacidade ou IOPS, consulte Planejar o nível de desempenho do volume do Hyperdisk.
Os exemplos a seguir mostram como criar um StorageClass para cada tipo de Hyperdisk:
Hiperdisco equilibrado
Salve o manifesto em um arquivo chamado
hdb-example-class.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: balanced-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-balanced provisioned-throughput-on-create: "250Mi" provisioned-iops-on-create: "7000"
Crie o StorageClass
kubectl create -f hdb-example-class.yaml
Capacidade de processamento do hiperdisco
Salve o manifesto em um arquivo chamado
hdt-example-class.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: throughput-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-throughput provisioned-throughput-on-create: "50Mi"
Crie o StorageClass
kubectl create -f hdt-example-class.yaml
Hiperdisco extremo
Salve o manifesto em um arquivo chamado
hdx-example-class.yaml
.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: extreme-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-extreme provisioned-iops-on-create: "50000"
Crie o StorageClass
kubectl create -f hdx-example-class.yaml
Para encontrar o nome das StorageClasses disponíveis no cluster, execute o seguinte comando:
kubectl get sc
Criar um PersistentVolumeClaim
É possível criar um PersistentVolumeClaim que faz referência ao StorageClass do driver CSI do disco permanente do Compute Engine.
Hiperdisco equilibrado
Neste exemplo, você especifica a capacidade de armazenamento desejada do volume do Hyperdisk Balanced como 20 GiB.
Salve o seguinte manifesto PersistentVolumeClaim em um arquivo chamado
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: balanced-storage resources: requests: storage: 20Gi
Aplique o PersistentVolumeClaim que faz referência ao StorageClass criado no exemplo anterior:
kubectl apply -f pvc-example.yaml
Capacidade de processamento do hiperdisco
Neste exemplo, você especifica a capacidade de armazenamento segmentada do volume de capacidade do hiperdisco como 2 TiB.
Salve o seguinte manifesto PersistentVolumeClaim em um arquivo chamado
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: throughput-storage resources: requests: storage: 2Ti
Aplique o PersistentVolumeClaim que faz referência ao StorageClass criado no exemplo anterior:
kubectl apply -f pvc-example.yaml
Hiperdisco extremo
Neste exemplo, você especifica a capacidade de armazenamento mínima do volume extremo do Hyperdisk como 64 GiB.
Salve o seguinte manifesto PersistentVolumeClaim em um arquivo chamado
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: extreme-storage resources: requests: storage: 64Gi
Aplique o PersistentVolumeClaim que faz referência ao StorageClass criado no exemplo anterior:
kubectl apply -f pvc-example.yaml
Criar uma implantação para consumir o volume do hiperdisco
Ao usar pods com PersistentVolumes, recomendamos usar um controlador de carga de trabalho (como uma implantação ou StatefulSet).
O exemplo a seguir cria um manifesto que configura um pod para implantar um servidor da Web Nginx usando o PersistentVolumeClaim criado na seção anterior. Salve o seguinte manifesto de exemplo como
hyperdisk-example-deployment.yaml
:apiVersion: apps/v1 kind: Deployment metadata: name: web-server-deployment labels: app: nginx spec: replicas: 1 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - mountPath: /var/lib/www/html name: mypvc volumes: - name: mypvc persistentVolumeClaim: claimName: podpvc readOnly: false
Para criar uma implantação com base no arquivo de manifesto
hyperdisk-example-deployment.yaml
, execute o seguinte comando:kubectl apply -f hyperdisk-example-deployment.yaml
Confirme se a implantação foi criada com sucesso:
kubectl get deployment
Pode levar alguns minutos para que as instâncias do Hyperdisk concluam o provisionamento. Quando a implantação conclui o provisionamento, ela informa um status
READY
.É possível verificar o progresso monitorando o status do PersistentVolumeClaim. Para isso, execute o comando a seguir:
kubectl get pvc
Provisionar um volume do Hyperdisk com um snapshot
Para criar um novo volume do hiperdisco a partir de um snapshot atual do disco permanente, use o console do Google Cloud, a CLI do Google Cloud ou a API Compute Engine. Para saber como criar um instantâneo de disco permanente, consulte Como criar e usar instantâneos de volume.
Console
Acesse a página Discos no Console do Google Cloud.
Clique em Create disk.
Em Tipo de disco, escolha uma das seguintes opções para o tipo de disco:
- Hiperdisco equilibrado
- Hiperdisco extremo
- Capacidade de processamento do hiperdisco
Em Tipo de origem do disco, clique em Snapshot.
Selecione o nome do snapshot que será restaurado.
Selecione o tamanho do novo disco em GiB. Esse número precisa ser igual ou maior que o disco de origem do snapshot.
Defina a Capacidade provisionada ou as IOPS provisionados que você quer para o disco, se forem diferentes dos valores padrão.
Clique em Criar para criar o volume extremo do hiperdisco.
gcloud
Execute o comando gcloud compute disks create
para criar o volume do Hyperdisk a partir de um snapshot.
Hiperdisco equilibrado
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-balanced
Substitua:
DISK_NAME
: o nome do novo disco.SIZE
: o tamanho, em gibibytes (GiB) ou tebibytes (TiB) do novo disco. Consulte a documentação do Compute Engine para conhecer as limitações de capacidade mais recentes.SNAPSHOT_NAME
: o nome do snapshot que está sendo restaurado.THROUGHPUT_LIMIT
: opcional. Para discos do Hyperdisk Balanced, esse é um número inteiro que representa a capacidade, medida em MiBps, que o disco pode processar. Consulte a documentação do Compute Engine para conhecer as limitações mais recentes.IOPS_LIMIT
: opcional. Em discos dp Hyperdisk Balanced, esse é o número de IOPS que o disco pode gerenciar. Consulte a documentação do Compute Engine para conhecer as limitações de desempenho mais recentes.
Capacidade de processamento do hiperdisco
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--type=hyperdisk-throughput
Substitua:
DISK_NAME
: o nome do novo disco.SIZE
: o tamanho, em gibibytes (GiB ou GB) ou tebibytes (TiB ou TB), do novo disco. Consulte a documentação do Compute Engine para conhecer as limitações de capacidade mais recentes.SNAPSHOT_NAME
: o nome do snapshot que está sendo restaurado.THROUGHPUT_LIMIT
: (opcional) esse é um número inteiro que representa a capacidade de processamento dos discos de capacidade de processamento do Hyperdisk, medida em MB/s. Consulte a documentação do Compute Engine para conhecer as limitações de desempenho mais recentes.
Hiperdisco extremo
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-iops
Substitua:
DISK_NAME
: o nome do novo disco.SIZE
: o tamanho, em gibibytes (GiB ou GB) ou tebibytes (TiB ou TB), do novo disco. Consulte a documentação do Compute Engine para conhecer as limitações de capacidade mais recentes.SNAPSHOT_NAME
: o nome do snapshot que está sendo restaurado.IOPS_LIMIT
: (opcional) esse é o número de operações de E/S por segundo que os discos extremos do Hyperdisk podem processar. Consulte a documentação do Compute Engine para conhecer as limitações de desempenho mais recentes.
Criar um snapshot para um volume do Hyperdisk
Para criar um instantâneo com base em um volume do Hyperdisk, siga as mesmas etapas usadas para criar um snapshot de um volume de disco permanente:
Atualizar a capacidade provisionada ou as IOPS de um volume do Hyperdisk
Esta seção aborda como modificar o desempenho provisionado para volumes do Hyperdisk.
Capacidade
A atualização da capacidade de processamento provisionada é compatível apenas com volumes do Hyperdisk Balanced e a capacidade de processamento de Hyperdisk.
Para atualizar o nível de capacidade provisionado do volume de processamento do Hyperdisk, siga as instruções do Console do Google Cloud, da CLI gcloud ou da API Compute Engine em Como alterar o desempenho provisionado para um volume do Hyperdisk.
É possível alterar o nível de capacidade provisionada (até uma vez a cada quatro horas) para um volume do Hyperdisk após a criação do volume. Os novos níveis de capacidade podem levar até 15 minutos para entrar em vigor. Durante a mudança de desempenho, qualquer SLA e SLO de desempenho não estão em vigor. É possível alterar o nível de capacidade de um volume atual a qualquer momento, independentemente de o disco estar anexado a uma instância em execução ou não.
O novo nível de capacidade especificado precisa aderir aos valores compatíveis com volumes do Hyperdisk.
IOPS
A atualização das IOPS provisionadas é compatível apenas com volumes extremos e balanceados do Hyperdisk.
Para atualizar o nível de IOPS provisionado do volume Hyperdisk, siga as instruções do Console do Google Cloud, da CLI gcloud ou da API Compute Engine em Como alterar o desempenho provisionado em um volume do Hyperdisk.
É possível alterar o nível de IOPS provisionado (até uma vez a cada quatro horas) para um volume de IOPS do hiperdisco após a criação do volume. Os novos níveis de IOPS podem levar até 15 minutos para entrar em vigor. Durante a mudança de desempenho, todos os SLAs e SLOs de desempenho não estão em vigor. É possível alterar o nível de IOPS de um volume existente a qualquer momento, independentemente de o disco estar anexado a uma instância em execução ou não.
O novo nível de IOPS especificado precisa aderir aos valores compatíveis com volumes do Hyperdisk.
Para atualizar o nível de IOPS provisionado para um volume do Hyperdisk, é necessário identificar o nome do disco permanente que apoia os recursos PersistentVolumeClaim e PersistentVolume:
Acesse o navegador de objetos no Console do Google Cloud.
Encontre a entrada do seu objeto PersistentVolumeClaim.
Clique no link Volume.
Abra a guia YAML do PersistentVolume associado. Localize o valor CSI
volumeHandle
nessa guia.Observe o último elemento desse identificador (ele precisa ter um valor como "
pvc-XXXXX
"). Este é o nome do PersistentVolumeClaim. Anote também o projeto e a zona.
Monitorar a capacidade ou IOPS em um volume do Hyperdisk
Para monitorar o desempenho provisionado do volume do Hyperdisk, consulte Analisar IOPS e capacidade provisionadas na documentação do Compute Engine.
Solução de problemas
Nesta seção, fornecemos orientações para resolver problemas com volumes do Hyperdisk no GKE.
Não é possível alterar o desempenho ou a capacidade: proporção fora do intervalo
O seguinte erro ocorre quando você tenta alterar o nível ou a capacidade de desempenho provisionada, mas o nível de desempenho ou a capacidade que você escolheu está fora do intervalo aceitável para o volume:
Requested provisioned throughput cannot be higher than <value>.
Requested provisioned throughput cannot be lower than <value>.
Requested provisioned throughput is too high for the requested disk size.
Requested provisioned throughput is too low for the requested disk size.
Requested disk size is too high for current provisioned throughput.
A capacidade provisionada para volumes de capacidade do Hyperdisk precisa atender aos seguintes requisitos:
- Pelo menos 10 MiBps por TiB de capacidade e no máximo 90 MiBps por TiB de capacidade.
- No máximo 600 MiBps por volume.
Para resolver esse problema, corrija a capacidade ou capacidade solicitada para estar dentro do intervalo permitido e emita novamente o comando.
Não é possível alterar o desempenho: taxa limitada
O erro a seguir ocorre quando você tenta alterar o nível de desempenho provisionado, mas o nível de desempenho já foi alterado nas últimas quatro horas:
Cannot update provisioned throughput due to being rate limited.
Cannot update provisioned iops due to being rate limited.
Os volumes de capacidade e de IOPS do hiperdisco podem ter o desempenho provisionado atualizado a cada quatro horas. Para resolver esse problema, aguarde o tempo de espera do volume expirar e emita novamente o comando.
A seguir
- Saiba como migrar volumes do Persistent Disk para o Hyperdisk.
- Saiba como usar a expansão de volume.
- Saiba como usar snapshots de volume.
- Leia mais sobre o driver no GitHub (em inglês).