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 CLI do Google Cloud para essa tarefa,
instale e inicialize a
gcloud CLI. Se você instalou a CLI gcloud anteriormente, instale a versão
mais recente executando o comando
gcloud components update
. Talvez as versões anteriores da CLI gcloud não sejam compatíveis com a execução dos comandos neste documento.
- 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. O provisionamento de volumes do Hyperdisk Balanced High Availability requer a versão 1.33 ou mais recente do GKE.
- 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ê precisar ativar o driver CSI do disco permanente do Compute Engine no cluster, consulte Como ativar o driver CSI do disco permanente 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
hyperdisk-balanced-high-availability
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. Para orientações sobre os valores permitidos para capacidade ou IOPS, consulte Planejar o nível de desempenho do volume do Hyperdisk.
Parâmetro | Tipo de Hyperdisk | Uso |
---|---|---|
provisioned-throughput-on-create |
Hyperdisk equilibrado*, Hyperdisk equilibrado de alta disponibilidade, capacidade de processamento do Hyperdisk | Exprime o valor da capacidade de processamento em MiB/s usando o qualificador "Mi". Por exemplo, se a capacidade necessária for de 250 MiB/s, especifique "250Mi" ao criar o StorageClass. |
provisioned-iops-on-create |
Hyperdisk Balanced, Hyperdisk Balanced High Availability, Hyperdisk Extreme | O valor de IOPS precisa ser expresso sem qualificadores. Por exemplo, se você precisar de 7.000 IOPS, especifique "7000" ao criar o StorageClass. |
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
Hyperdisk Balanced HA
Salve o manifesto em um arquivo chamado
hdb-ha-example-class.yaml
.Para clusters zonais, defina as zonas de disponibilidade em que você quer criar os PersistentVolumes.
Para clusters regionais, é possível não definir o campo
allowedTopologies
para criar os PersistentVolumes em duas zonas de disponibilidade selecionadas aleatoriamente no momento do agendamento do pod.
Para mais informações sobre as zonas compatíveis, consulte Disponibilidade regional do hiperdisco.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: balanced-ha-storage provisioner: pd.csi.storage.gke.io volumeBindingMode: WaitForFirstConsumer allowVolumeExpansion: true parameters: type: hyperdisk-balanced-high-availability provisioned-throughput-on-create: "250Mi" provisioned-iops-on-create: "7000" allowedTopologies: - matchLabelExpressions: - key: topology.gke.io/zone values: - ZONE1 - ZONE2
Crie o StorageClass
kubectl create -f hdb-ha-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
Hyperdisk Balanced HA
Neste exemplo, você especifica a capacidade de armazenamento mínima do volume do Hyperdisk
Balanced High Availability como 20 GiB e o modo de acesso como ReadWriteOnce
. O Hyperdisk Balanced High Availability também oferece suporte aos modos de acesso ReadWriteMany
e ReadWriteOncePod
. Para conferir as diferenças e os casos de uso de cada modo de acesso, consulte Modos de acesso de volume permanente.
Salve o seguinte manifesto PersistentVolumeClaim em um arquivo chamado
pvc-example.yaml
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: podpvc spec: accessModes: - ReadWriteOnce storageClassName: balanced-ha-storage resources: requests: storage: 20Gi
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: # Reference the PVC created earlier. 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 Hyperdisk com base em um snapshot atual do Persistent Disk, use o console Google Cloud , a Google Cloud CLI ou a API Compute Engine. Para saber como criar um snapshot Persistent Disk, consulte Como criar e usar snapshots 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
- Alta disponibilidade do Hyperdisk
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. Para mais informações sobre limitações de capacidade, consulte Limites de tamanho e desempenho.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 MiB/s, que o disco pode alcançar. Para mais informações sobre limitações de capacidade, consulte Limites de tamanho e desempenho.IOPS_LIMIT
: opcional. Para discos do Hyperdisk Balanced, esse é o número máximo de IOPS que o disco pode alcançar. Para mais informações sobre limitações de capacidade, consulte Limites de tamanho e desempenho.
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. Para mais informações sobre limitações de capacidade, consulte Limites de tamanho e desempenho.SNAPSHOT_NAME
: o nome do snapshot que está sendo restaurado.THROUGHPUT_LIMIT
: opcional: para discos de capacidade de processamento do hiperdisco, esse é um número inteiro que representa a capacidade, medida em MiB/s, que o disco pode alcançar. Para mais informações sobre limitações de capacidade, consulte Limites de tamanho e desempenho.
Hiperdisco extremo
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-extreme
Substitua:
DISK_NAME
: o nome do novo disco.SIZE
: o tamanho, em gibibytes (GiB ou GB) ou tebibytes (TiB ou TB), do novo disco. Para mais informações sobre limitações de capacidade, consulte Limites de tamanho e desempenho.SNAPSHOT_NAME
: o nome do snapshot que está sendo restaurado.IOPS_LIMIT
: opcional: para discos extremos do Hyperdisk, esse é o número máximo de operações de E/S por segundo que o disco pode alcançar. Para mais informações sobre limitações de capacidade, consulte Limites de tamanho e desempenho.
Hyperdisk Balanced HA
gcloud compute disks create DISK_NAME \
--size=SIZE \
--region=REGION \
--replica-zones=('ZONE1', 'ZONE2') \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-balanced-high-availability
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.REGION
: a região do novo disco. Consulte a documentação do Compute Engine para saber a disponibilidade regional mais recente.ZONE1
,ZONE2
: as zonas dentro da região onde as réplicas estarão localizadas.SNAPSHOT_NAME
: o nome do snapshot que está sendo restaurado.THROUGHPUT_LIMIT
: opcional. Para discos de alta disponibilidade equilibrados do Hyperdisk, esse é um número inteiro que representa a capacidade, medida em MiB/s, que o disco pode alcançar. Para mais informações sobre limitações de capacidade, consulte Limites de tamanho e desempenhoIOPS_LIMIT
: opcional. Em discos do Hyperdisk Balanced High Availability, esse é o número máximo de IOPS que o disco pode alcançar. Para mais informações sobre limitações de capacidade, consulte Limites de tamanho e desempenho.
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, do Hyperdisk Balanced High Availability e da capacidade de processamento de Hyperdisk.
Para atualizar o nível de capacidade provisionado do volume do Hyperdisk, siga as instruções do console Google Cloud , da CLI gcloud ou da API Compute Engine em Como mudar o desempenho provisionado de 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 Balanced, Hyperdisk Throughput e Hyperdisk Balanced High Availability, respectivamente.
Para atualizar o nível de capacidade provisionada de um volume do Hyperdisk, é necessário identificar o nome do Persistent Disk 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.
IOPS
A atualização das IOPS provisionadas é compatível apenas com volumes do Hyperdisk Balanced, do Hyperdisk Balanced High Availability e do Hyperdisk Extreme.
Para atualizar o nível de IOPS provisionado do volume Hyperdisk, siga as instruções do console Google Cloud , da CLI gcloud ou da API Compute Engine em Como mudar o desempenho provisionado de 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 Equilibrado ou do Hyperdisk Extremo, respectivamente.
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 MiB/s por TiB de capacidade e no máximo 90 MiB/s por TiB de capacidade.
- No máximo 600 MiB/s 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).