Dimensione o desempenho do armazenamento com o Hyperdisk

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.

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.
* Se precisar de segurança melhorada e planear usar nós do Google Kubernetes Engine confidenciais, considere criar o modo confidencial para o Hyperdisk Balanced, reveja as limitações adicionais do modo confidencial para o Hyperdisk Balanced e saiba mais acerca dos nós do Google Kubernetes Engine confidenciais.

Os exemplos seguintes mostram como pode criar uma StorageClass para cada tipo de Hyperdisk:

Hyperdisk Balanced

  1. 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"
    
  2. Crie a StorageClass:

    kubectl create -f hdb-example-class.yaml
    

Débito do Hyperdisk

  1. 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"
    
  2. Crie a StorageClass:

    kubectl create -f hdt-example-class.yaml
    

Hyperdisk Extreme

  1. 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"
    
  2. Crie a StorageClass:

    kubectl create -f hdx-example-class.yaml
    

Hyperdisk Balanced HA

  1. 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
    
  2. 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.

  1. 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
    
  2. 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.

  1. 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
    
  2. 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.

  1. 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
    
  2. 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.

  1. 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
    
  2. 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).

  1. 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
    
  2. 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
    
  3. 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.

  4. 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

  1. Aceda à página Discos na Trusted Cloud consola.

    Aceda a Discos

  2. Clique em Criar disco.

  3. 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
  4. Em Tipo de origem do disco, clique em Snapshot.

  5. Selecione o nome da captura de ecrã a restaurar.

  6. 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.

  7. Defina o Débito aprovisionado ou os IOPS aprovisionados que quer para o disco, se forem diferentes dos valores predefinidos.

  8. 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 desempenho
  • IOPS_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:

  1. Aceda ao explorador de objetos na Trusted Cloud consola.

    Aceda ao navegador de objetos

  2. Encontre a entrada do seu objeto PersistentVolumeClaim.

  3. Clique no link Volume .

  4. Abra o separador YAML do PersistentVolume associado. Localize o valor de CSI volumeHandle neste separador.

  5. 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:

  1. Aceda ao explorador de objetos na Trusted Cloud consola.

    Aceda ao navegador de objetos

  2. Encontre a entrada do seu objeto PersistentVolumeClaim.

  3. Clique no link Volume .

  4. Abra o separador YAML do PersistentVolume associado. Localize o valor de CSI volumeHandle neste separador.

  5. 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?