È possibile utilizzare la funzionalità di espansione dei volumi Kubernetes per espandere un volume di blocco persistente dopo la sua creazione. I cluster Servizio TKG supportano l'espansione dei volumi offline e online.

Informazioni sull'espansione del volume persistente

Nelle classi di storage presenti nell'ambiente del cluster TKG, l'opzione allowVolumeExpansion è true per impostazione predefinita. Questo parametro consente di modificare le dimensioni di un volume offline o online.

Un volume viene considerato offline quando non è collegato a un nodo o pod. Un volume online è un volume disponibile in un nodo o un pod.

Il livello di supporto della funzionalità di espansione del volume dipende dalla versione vSphere. È possibile espandere i volumi creati nelle versioni precedenti di vSphere quando si aggiorna l'ambiente di vSphere alle versioni appropriate che supportano le espansioni.

Nota: È possibile espandere solo volumi di blocchi persistenti. Attualmente, vSphere IaaS control plane non supporta l'espansione del volume per i volumi ReadWriteMany.
Quando si espande un volume di blocco persistente, tenere presente quanto segue:
  • È possibile espandere i volumi fino ai limiti specificati dalle quote di storage. vSphere IaaS control plane supporta richieste di ridimensionamento consecutive per un oggetto richiesta volume persistente.
  • Tutti i tipi di datastore, inclusi VMFS, vSAN, vSAN Direct, vVols e NFS, supportano l'espansione dei volumi.
  • È possibile eseguire l'espansione del volume per distribuzioni o pod autonomi.
  • È possibile ridimensionare i volumi di cui è stato eseguito il provisioning statico in un cluster Tanzu Kubernetes Grid se ai volumi sono associate classi di storage.
  • Non è possibile espandere volumi creati come parte di uno StatefulSet.
  • Se un disco virtuale che supporta un volume include snapshot, non può essere ridimensionato.
  • vSphere IaaS control plane non supporta l'espansione del volume per i volumi nella struttura o migrati.

Espansione di un volume persistente in modalità online

Un volume online è un volume disponibile in un nodo o un pod. Un tecnico di DevOps può espandere un volume di blocchi persistenti online. I cluster Tanzu Kubernetes Grid supportano l'espansione dei volumi online.

  1. Individuare la richiesta di volume persistente da ridimensionare utilizzando il comando seguente.

    In questo esempio, si noti che la dimensione dello storage utilizzato dal volume è 1 Gi.

    $ 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
  2. Applicare patch al PVC per aumentarne le dimensioni. Ad esempio, aumentare le dimensioni a 2 Gi.
    Questa azione attiva un'espansione del volume associato al PVC.
    $ kubectl patch pvc block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    persistentvolumeclaim/block-pvc edited
  3. Verificare che le dimensioni del PVC e del PV siano aumentate.
    $ 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
  4. Utilizzare il vSphere Client per verificare le nuove dimensioni del volume persistente.

    Vedere Monitoraggio dell'integrità dei volumi in un cluster Tanzu Kubernetes Grid.

Espansione di un volume persistente in modalità offline

Un volume viene considerato offline quando non è collegato a un nodo o pod. I cluster Tanzu Kubernetes Grid supportano l'espansione del volume offline.

  1. Creare una richiesta di volume persistente (PVC) per una classe di storage esistente.
    Nell'esempio, la dimensione dello storage richiesto è 1 Gi.
    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: example-block-pvc
    spec:
      accessModes:
      - ReadWriteOnce
      resources:
        requests:
          storage: 1Gi
      storageClassName: example-block-sc
    kubectl apply -f example-block-pvc.yaml 
  2. Applicare patch al PVC per aumentarne le dimensioni.

    Se il PVC non è collegato a un nodo o è utilizzato da un pod, utilizzare il comando seguente per applicare una patch al PVC. In questo esempio, l'aumento dello storage richiesto è 2 Gi.

    Questa azione attiva un'espansione del volume associato al PVC.
    kubectl patch pvc example-block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
  3. Verificare che la dimensione del volume sia aumentata.
    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
  4. Verificare che il ridimensionamento della PVC sia in sospeso.
    Nota: La dimensione del PVC rimane invariata finché il PVC non viene utilizzato da un pod.
    L'esempio seguente mostra che le dimensioni della PVC non sono state modificate perché non sono state utilizzate da un pod. Se si esegue kubectl describe pvc, viene visualizzata la condizione FilesystemResizePending applicata alla PVC. Una volta utilizzata da un pod, le sue dimensioni cambiano.
    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
  5. Creare un pod per utilizzare il PVC.

    Quando il PVC viene utilizzato dal pod, il file system viene espanso.

  6. Verificare che le dimensioni del PVC siano state modificate.
    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
    La condizione FilesystemResizePending è stata rimossa dal PVC. L'espansione del volume è stata completata.
  7. Utilizzare il vSphere Client per verificare le nuove dimensioni del volume persistente.

    Vedere Monitoraggio dell'integrità dei volumi in un cluster Tanzu Kubernetes Grid.