O controlador CSI do Persistent Disk do Compute Engine é a principal forma de aceder ao armazenamento Hyperdisk com clusters do Google Kubernetes Engine (GKE).
Antes de começar
Antes de começar, certifique-se de que realizou as seguintes tarefas:
- Ative a API Google Kubernetes Engine. Ative a API Google Kubernetes Engine
- Se quiser usar a CLI gcloud para esta tarefa,
instale-a e, em seguida,
inicialize-a. Se instalou anteriormente a CLI gcloud, execute
gcloud components update
para obter a versão mais recente.
- Defina a região e a zona predefinidas para um dos valores suportados.
Requisitos
Para usar volumes do Hyperdisk no GKE, os seus clusters têm de cumprir os seguintes requisitos:
- Use clusters Linux com a versão 1.26 ou posterior do GKE. Se usar um canal de lançamento, certifique-se de que o canal tem a versão mínima do GKE ou posterior necessária para este controlador. O aprovisionamento de volumes de alta disponibilidade equilibrados do Hyperdisk requer a versão 1.33 ou posterior do GKE.
- Certifique-se de que o controlador CSI do Persistent Disk do Compute Engine está ativado. O controlador do disco persistente do Compute Engine está ativado por predefinição em novos clusters do Autopilot e Standard, e não pode ser desativado nem editado quando usa o Autopilot. Se precisar de ativar o controlador CSI do Persistent Disk do Compute Engine a partir do cluster, consulte o artigo Ativar o controlador CSI do Persistent Disk do Compute Engine num cluster existente.
Crie um volume do Hyperdisk para o GKE
Esta secção oferece uma vista geral da criação de um volume do Hyperdisk com base no controlador CSI do Compute Engine no GKE.
Crie uma StorageClass
Os seguintes campos de armazenamento do Persistent DiskType
são fornecidos pelo controlador CSI do Persistent Disk do Compute Engine para suportar o Hyperdisk:
hyperdisk-balanced
hyperdisk-throughput
hyperdisk-extreme
hyperdisk-ml
hyperdisk-balanced-high-availability
Para criar uma nova StorageClass com o nível de débito ou IOPS pretendido, use
pd.csi.storage.gke.io
no campo do aprovisionador e especifique um dos
tipos de armazenamento Hyperdisk.
Cada tipo de Hyperdisk tem valores predefinidos para o desempenho determinado pelo tamanho do disco aprovisionado inicialmente. Quando cria a StorageClass, pode especificar opcionalmente os seguintes parâmetros, consoante o tipo de Hyperdisk. Se omitir estes parâmetros, o GKE usa os predefinições do tipo de disco com base na capacidade. Para orientações sobre os valores permitidos para a taxa de transferência ou as IOPS, consulte o artigo Planeie o nível de desempenho do seu volume do Hyperdisk.
Parâmetro | Tipo de Hyperdisk | Utilização |
---|---|---|
provisioned-throughput-on-create |
Hyperdisk Balanced*, Hyperdisk Balanced de elevada disponibilidade, Hyperdisk Throughput | Expresse o valor de débito em MiB/s usando o qualificador "Mi"; por exemplo, se o débito necessário for de 250 MiB/s, especifique "250Mi" ao criar a StorageClass. |
provisioned-iops-on-create |
Hyperdisk Balanced, Hyperdisk Balanced High Availability, Hyperdisk Extreme | O valor de IOPS deve ser expresso sem qualificadores. Por exemplo, se precisar de 7000 IOPS, especifique "7000" quando criar a StorageClass. |
Os exemplos seguintes mostram como pode criar uma StorageClass para cada tipo de Hyperdisk:
Hyperdisk Balanced
Guarde o seguinte manifesto num ficheiro com o nome
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 a StorageClass:
kubectl create -f hdb-example-class.yaml
Débito do Hyperdisk
Guarde o seguinte manifesto num ficheiro com o nome
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 a StorageClass:
kubectl create -f hdt-example-class.yaml
Hyperdisk Extreme
Guarde o seguinte manifesto num ficheiro com o nome
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 a StorageClass:
kubectl create -f hdx-example-class.yaml
Hyperdisk Balanced HA
Guarde o seguinte manifesto num ficheiro com o nome
hdb-ha-example-class.yaml
.Para clusters zonais, defina as zonas de disponibilidade onde quer criar os PersistentVolumes.
Para clusters regionais, pode optar por não definir o campo
allowedTopologies
para criar os PersistentVolumes em duas zonas de disponibilidade selecionadas aleatoriamente no momento do agendamento de pods.
Para mais informações sobre as zonas suportadas, consulte a disponibilidade regional do Hyperdisk.
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 a StorageClass:
kubectl create -f hdb-ha-example-class.yaml
Para encontrar o nome das StorageClasses disponíveis no seu cluster, execute o seguinte comando:
kubectl get sc
Crie um PersistentVolumeClaim
Pode criar um PersistentVolumeClaim que faça referência à StorageClass do controlador CSI do Persistent Disk do Compute Engine.
Hyperdisk Balanced
Neste exemplo, especifica a capacidade de armazenamento segmentada do volume Hyperdisk Balanced como 20 GiB.
Guarde o manifesto PersistentVolumeClaim seguinte num ficheiro denominado
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 à StorageClass que criou a partir do exemplo anterior:
kubectl apply -f pvc-example.yaml
Débito do Hyperdisk
Neste exemplo, especifica a capacidade de armazenamento segmentada do volume de débito do Hyperdisk como 2 TiB.
Guarde o seguinte manifesto PersistentVolumeClaim num ficheiro com o nome
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 à StorageClass que criou a partir do exemplo anterior:
kubectl apply -f pvc-example.yaml
Hyperdisk Extreme
Neste exemplo, especifica a capacidade de armazenamento mínima do volume Hyperdisk Extreme como 64 GiB.
Guarde o seguinte manifesto PersistentVolumeClaim num ficheiro com o nome
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 à StorageClass que criou a partir do exemplo anterior:
kubectl apply -f pvc-example.yaml
Hyperdisk Balanced HA
Neste exemplo, especifica a capacidade de armazenamento mínima do volume de alta disponibilidade equilibrado do Hyperdisk como 20 GiB e o modo de acesso como ReadWriteOnce
. O Hyperdisk Balanced High Availability também suporta os modos de acesso ReadWriteMany
e ReadWriteOncePod
. Para ver as diferenças e os exemplos de utilização de cada modo de acesso, consulte Modos de acesso a volumes persistentes.
Guarde o seguinte manifesto PersistentVolumeClaim num ficheiro com o nome
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 à StorageClass que criou a partir do exemplo anterior:
kubectl apply -f pvc-example.yaml
Crie uma implementação para consumir o volume do Hyperdisk
Quando usar pods com volumes persistentes, recomendamos que use um controlador de carga de trabalho (como uma implementação ou um StatefulSet).
O exemplo seguinte cria um manifesto que configura um pod para implementar um servidor Web Nginx através do PersistentVolumeClaim criado na secção anterior. Guarde 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 implementação com base no ficheiro de manifesto
hyperdisk-example-deployment.yaml
, execute o seguinte comando:kubectl apply -f hyperdisk-example-deployment.yaml
Confirme que a implementação foi criada com êxito:
kubectl get deployment
As instâncias do Hyperdisk podem demorar alguns minutos a concluir o aprovisionamento. Quando a implementação conclui o aprovisionamento, comunica um estado
READY
.Pode verificar o progresso monitorizando o estado do PersistentVolumeClaim executando o seguinte comando:
kubectl get pvc
Aprovisione um volume do Hyperdisk a partir de uma captura de ecrã
Para criar um novo volume do Hyperdisk a partir de uma captura de ecrã existente do Persistent Disk, use a Trusted Cloud consola, a CLI Google Cloud ou a API Compute Engine. Para saber como criar um instantâneo de disco persistente, consulte o artigo Criar e usar instantâneos de volumes.
Consola
Aceda à página Discos na Trusted Cloud consola.
Clique em Criar disco.
Em Tipo de disco, escolha uma das seguintes opções para o tipo de disco:
- Hyperdisk Balanced
- Hyperdisk Extreme
- Débito do Hyperdisk
- Hiperdisco de alta disponibilidade
Em Tipo de origem do disco, clique em Snapshot.
Selecione o nome da captura de ecrã a restaurar.
Selecione o tamanho do novo disco, em GiB. Este número tem de ser igual ou superior ao disco de origem original do instantâneo.
Defina o Débito aprovisionado ou os IOPS aprovisionados que quer para o disco, se forem diferentes dos valores predefinidos.
Clique em Criar para criar o volume do Hyperdisk.
gcloud
Execute o comando gcloud compute disks create
para criar o volume do Hyperdisk a partir de uma captura de ecrã.
Hyperdisk Balanced
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-balanced
Substitua o seguinte:
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 o artigo Limites de tamanho e desempenho.SNAPSHOT_NAME
: o nome do instantâneo que está a ser restaurado.THROUGHPUT_LIMIT
: opcional. Para os discos Hyperdisk Balanced, este é um número inteiro que representa a taxa de transferência, medida em MiB/s, que o disco pode alcançar. Para mais informações sobre limitações de capacidade, consulte o artigo Limites de tamanho e desempenho.IOPS_LIMIT
: opcional. Para os discos Hyperdisk Balanced, este é o número máximo de IOPS que o disco pode atingir. Para mais informações sobre limitações de capacidade, consulte o artigo Limites de tamanho e desempenho.
Débito do Hyperdisk
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-throughput=TRHROUGHPUT_LIMIT \
--type=hyperdisk-throughput
Substitua o seguinte:
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 o artigo Limites de tamanho e desempenho.SNAPSHOT_NAME
: o nome do instantâneo que está a ser restaurado.THROUGHPUT_LIMIT
: Opcional: Para discos de débito do Hyperdisk, este é um número inteiro que representa o débito, medido em MiB/s, que o disco pode alcançar. Para mais informações sobre limitações de capacidade, consulte o artigo Limites de tamanho e desempenho.
Hyperdisk Extreme
gcloud compute disks create DISK_NAME \
--size=SIZE \
--source-snapshot=SNAPSHOT_NAME \
--provisioned-iops=IOPS_LIMIT \
--type=hyperdisk-extreme
Substitua o seguinte:
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 o artigo Limites de tamanho e desempenho.SNAPSHOT_NAME
: o nome do instantâneo que está a ser restaurado.IOPS_LIMIT
: opcional: para discos Hyperdisk Extreme, este é 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 o seguinte:
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 ver as limitações de capacidade mais recentes.REGION
: a região do novo disco. Consulte a documentação do Compute Engine para ver a disponibilidade regional mais recente.ZONE1
,ZONE2
: as zonas na região onde as réplicas vão estar localizadas.SNAPSHOT_NAME
: o nome do instantâneo que está a ser restaurado.THROUGHPUT_LIMIT
: opcional. Para os discos de alta disponibilidade equilibrados do Hyperdisk, este é um número inteiro que representa a taxa de transferência, medida em MiB/s, que o disco pode alcançar. Para mais informações sobre limitações de capacidade, consulte o artigo Limites de tamanho e desempenhoIOPS_LIMIT
: opcional. Para os discos de alta disponibilidade equilibrados do Hyperdisk, este é o número máximo de IOPS que o disco pode atingir. Para mais informações sobre limitações de capacidade, consulte o artigo Limites de tamanho e desempenho.
Crie um instantâneo para um volume do Hyperdisk
Para criar um instantâneo a partir de um volume do Hyperdisk, siga os mesmos passos que para criar um instantâneo para um volume do Persistent Disk:
Atualize o débito processado ou os IOPS de um volume do Hyperdisk existente
Esta secção aborda como modificar o desempenho aprovisionado para volumes do Hyperdisk.
Débito
A atualização do débito aprovisionado só é suportada para volumes Hyperdisk Balanced, Hyperdisk Balanced de alta disponibilidade e Hyperdisk Throughput.
Para atualizar o nível de débito aprovisionado do seu volume do Hyperdisk, siga as instruções da Trusted Cloud consola, da CLI gcloud ou da API Compute Engine em Alterar o desempenho aprovisionado de um volume do Hyperdisk.
Pode alterar o nível de débito aprovisionado (até uma vez a cada 4 horas) para um volume do Hyperdisk após a criação do volume. Os novos níveis de débito podem demorar até 15 minutos a entrar em vigor. Durante a alteração de desempenho, os ANS e os ODS de desempenho não estão em vigor. Pode alterar o nível de débito de um volume existente em qualquer altura, independentemente de o disco estar associado a uma instância em execução ou não.
O novo nível de débito que especificar tem de cumprir os valores suportados para os volumes Hyperdisk Balanced, Hyperdisk Throughput e Hyperdisk Balanced High Availability, respetivamente.
Para atualizar o nível de débito aprovisionado de um volume do Hyperdisk, tem de identificar o nome do disco persistente que suporta os recursos PersistentVolumeClaim e PersistentVolume:
Aceda ao explorador de objetos na Trusted Cloud consola.
Encontre a entrada do seu objeto PersistentVolumeClaim.
Clique no link Volume .
Abra o separador YAML do PersistentVolume associado. Localize o valor de CSI
volumeHandle
neste separador.Tome nota do último elemento deste identificador (deve ter um valor como "
pvc-XXXXX
"). Este é o nome do seu PersistentVolumeClaim. Também deve ter em atenção o projeto e a zona.
IOPS
A atualização das IOPS aprovisionadas só é suportada para volumes Hyperdisk Balanced, Hyperdisk Balanced de alta disponibilidade e Hyperdisk Extreme.
Para atualizar o nível de IOPS aprovisionadas do seu volume do Hyperdisk, siga as instruções da Trusted Cloud consola, da CLI gcloud ou da API Compute Engine em Alterar o desempenho aprovisionado de um volume do Hyperdisk.
Pode alterar o nível de IOPS aprovisionados (até uma vez a cada 4 horas) para um volume de IOPS de Hyperdisk após a criação do volume. Os novos níveis de IOPS podem demorar até 15 minutos a entrar em vigor. Durante a alteração de desempenho, os SLA e os SLO de desempenho não estão em vigor. Pode alterar o nível de IOPS de um volume existente em qualquer altura, independentemente de o disco estar ou não associado a uma instância em execução.
O novo nível de IOPS que especificar tem de respeitar os valores suportados para os volumes Hyperdisk Balanced ou Hyperdisk Extreme, respetivamente.
Para atualizar o nível de IOPS aprovisionados de um volume do Hyperdisk, tem de identificar o nome do disco persistente que suporta os recursos PersistentVolumeClaim e PersistentVolume:
Aceda ao explorador de objetos na Trusted Cloud consola.
Encontre a entrada do seu objeto PersistentVolumeClaim.
Clique no link Volume .
Abra o separador YAML do PersistentVolume associado. Localize o valor de CSI
volumeHandle
neste separador.Tome nota do último elemento deste identificador (deve ter um valor como "
pvc-XXXXX
"). Este é o nome do seu PersistentVolumeClaim. Também deve ter em atenção o projeto e a zona.
Monitorize a taxa de transferência ou as IOPS num volume do Hyperdisk
Para monitorizar o desempenho aprovisionado do seu volume do Hyperdisk, consulte o artigo Analise os IOPS e a taxa de transferência aprovisionados na documentação do Compute Engine.
Resolução de problemas
Esta secção fornece orientações de resolução de problemas para resolver problemas com volumes do Hyperdisk no GKE.
Não é possível alterar o desempenho ou a capacidade: a proporção está fora do intervalo
O seguinte erro ocorre quando tenta alterar o nível de desempenho ou a capacidade aprovisionados, mas o nível de desempenho ou a capacidade que selecionou 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.
O débito aprovisionado para volumes de débito do Hyperdisk tem de cumprir os seguintes requisitos:
- Pelo menos 10 MiB/s por TiB de capacidade e não mais de 90 MiB/s por TiB de capacidade.
- No máximo, 600 MiB/s por volume.
Para resolver este problema, corrija o débito ou a capacidade pedidos para que estejam dentro do intervalo permitido e reemita o comando.
Não é possível alterar o desempenho: limitação de velocidade
O seguinte erro ocorre quando tenta alterar o nível de desempenho aprovisionado, mas o nível de desempenho já foi alterado nas últimas 4 horas:
Cannot update provisioned throughput due to being rate limited.
Cannot update provisioned iops due to being rate limited.
O débito e os volumes de IOPS do Hyperdisk podem ter o respetivo desempenho aprovisionado atualizado uma vez a cada 4 horas. Para resolver este problema, aguarde que o temporizador de repouso do volume expire e, em seguida, reemita o comando.
O que se segue?
- Saiba como migrar volumes de discos persistentes para o Hyperdisk.
- Saiba como usar a expansão do volume.
- Saiba como usar as capturas instantâneas de volume.
- Leia mais sobre o controlador no GitHub.