Como engenheiro de DevOps, você pode usar o recurso de expansão de volume Kubernetes para expandir um volume de blocos persistente após sua criação. Ambos os tipos de clusters, clusters Supervisors e Tanzu Kubernetes Grid, oferecem suporte à expansão de volume offline e online.

As classes de armazenamento que aparecem no ambiente vSphere with Tanzu têm allowVolumeExpansion definido como true por padrão. Esse parâmetro possibilita modificar o tamanho de um volume offline ou online.

Um volume é considerado offline quando não está conectado a um nó ou pod. Um volume online é um volume que está disponível em um nó ou pod.

O nível de suporte da funcionalidade de expansão de volume depende da versão do vSphere. Você pode expandir os volumes criados nas versões anteriores do vSphere ao atualizar seu ambiente do vSphere para as versões apropriadas que oferecem suporte a expansões.

Ao expandir os volumes, lembre-se do seguinte:
  • Você pode expandir os volumes até os limites especificados pelas cotas de armazenamento. vSphere with Tanzu é compatível com solicitações de redimensionamento consecutivas para um objeto de declaração de volume persistente.
  • Todos os tipos de repositórios de dados, incluindo VMFS, vSAN, vSAN Direct, vVols e NFS, oferecem suporte à expansão de volume.
  • Você pode executar a expansão de volume para implantações ou pods autônomos.
  • Você poderá redimensionar volumes provisionados estaticamente em um cluster Supervisor e Tanzu Kubernetes Grid se os volumes tiverem classes de armazenamento associadas a eles.
  • Você não pode expandir volumes criados como parte de um StatefulSet.
  • Se um disco virtual que faz backup de um volume tiver snapshots, ele não poderá ser redimensionado.
  • vSphere with Tanzu não é compatível com a expansão de volume para volumes na árvore ou migrados.

Expandir um volume persistente no modo offline

Um volume é considerado offline quando não está conectado a um nó ou pod. Ambos os tipos de clusters, clusters Supervisors e Tanzu Kubernetes Grid, oferecem suporte à expansão de volume offline.

Pré-requisitos

Certifique-se de fazer upgrade do seu ambiente vSphere para uma versão apropriada que ofereça suporte à expansão de volume offline.

Procedimento

  1. Crie uma declaração de volume persistente (PVC) com uma classe de armazenamento.
    1. Defina um PVC usando o seguinte manifesto YAML como exemplo.
      No exemplo, o tamanho do armazenamento solicitado é de 1 Gi.
      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: example-block-pvc
      spec:
        accessModes:
        - ReadWriteOnce
        resources:
          requests:
            storage: 1Gi
        storageClassName: example-block-sc
    2. Aplique o PVC ao cluster Kubernetes.
      kubectl apply -f example-block-pvc.yaml 
  2. Corrija o PVC para aumentar seu tamanho.
    Se o PVC não estiver conectado a um nó ou sendo usado por um pod, use o seguinte comando para corrigir o PVC. Neste exemplo, o aumento de armazenamento solicitado é de 2 Gi.
    kubectl patch pvc example-block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    Essa ação aciona uma expansão no volume associado ao PVC.
  3. Verifique se o tamanho do volume aumentou.
    kubectl get pv
    NAME                                       CAPACITY ACCESS MODES RECLAIM POLICY STATUS   CLAIM                       STORAGECLASS           REASON AGE
    pvc-9e9a325d-ee1c-11e9-a223-005056ad1fc1   2Gi           RWO         Delete     Bound    default/example-block-pvc   example-block-sc              6m44s
    Observação: O tamanho do PVC permanece inalterado até que o PVC seja usado por um pod.
    O exemplo a seguir mostra que o tamanho do PVC não foi alterado. Se você descrever o PVC, poderá ver a condição FilesystemResizePending aplicada no PVC.
    kubectl get pvc
    NAME                STATUS VOLUME                                     CAPACITY ACCESS MODES   STORAGECLASS       AGE
    example-block-pvc   Bound  pvc-9e9a325d-ee1c-11e9-a223-005056ad1fc1   1Gi           RWO       example-block-sc   6m57s
  4. Crie um pod para usar o PVC.
    Quando o PVC é usado pelo pod, o sistema de arquivos é expandido.
  5. Verifique se o tamanho do PVC foi modificado.
    kubectl get pvc
    NAME                STATUS VOLUME                                    CAPACITY ACCESS MODES STORAGECLASS     AGE
    example-block-pvc   Bound  pvc-24114458-9753-428e-9c90-9f568cb25788   2Gi         RWO      example-block-sc 2m12s
    A condição FilesystemResizePending foi removida do PVC. A expansão do volume foi concluída.

O que Fazer Depois

Um administrador do vSphere pode ver o novo tamanho do volume no vSphere Client. Consulte Monitorar volumes persistentes no vSphere Client.

Expandir um volume persistente no modo online

Um volume online é um volume que está disponível em um nó ou pod. Como engenheiro de DevOps, você pode expandir um volume de blocos persistente online. Ambos os tipos de clusters, clusters Supervisors e Tanzu Kubernetes Grid, oferecem suporte à expansão de volume online.

Pré-requisitos

Certifique-se de atualizar seu ambiente vSphere para uma versão apropriada que ofereça suporte à expansão de volume online.

Procedimento

  1. Localize a declaração de volume persistente a ser redimensionada.
    $ kubectl get pv,pvc,pod
    NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM               STORAGECLASS   REASON   AGE
    persistentvolume/pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   1Gi        RWO            Delete           Bound       default/block-pvc   block-sc                4m56s
     
    NAME                              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    persistentvolumeclaim/block-pvc   Bound    pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   1Gi        RWO            block-sc       5m3s
     
    NAME            READY   STATUS    RESTARTS   AGE
    pod/block-pod   1/1     Running   0          26s

    Observe que o tamanho do armazenamento usado pelo volume é de 1 Gi.

  2. Corrija o PVC para aumentar seu tamanho.
    Por exemplo, aumente o tamanho para 2 Gi.
    $ kubectl patch pvc block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    persistentvolumeclaim/block-pvc edited
    Essa ação aciona uma expansão no volume associado ao PVC.
  3. Verifique se o tamanho do PVC e do PV aumentou.
    $ kubectl get pvc,pv,pod
    NAME                              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    persistentvolumeclaim/block-pvc   Bound    pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   2Gi        RWO            block-sc       6m18s
     
    NAME                                                        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM               STORAGECLASS   REASON   AGE
    persistentvolume/pvc-5cd51b05-245a-4610-8af4-f07e77fdc984   2Gi        RWO            Delete           Bound       default/block-pvc   block-sc                6m11s
     
    NAME            READY   STATUS    RESTARTS   AGE
    pod/block-pod   1/1     Running   0          101s

O que Fazer Depois

Um administrador do vSphere pode ver o novo tamanho do volume no vSphere Client. Consulte Monitorar volumes persistentes no vSphere Client.