I tecnici di DevOps possono espandere un volume di blocco persistente dopo la sua creazione. in vSphere IaaS control plane, entrambi i tipi di cluster, Supervisori e Tanzu Kubernetes Grid, supportano l'espansione dei volumi offline e online.

Nota: È possibile espandere solo volumi di blocchi persistenti. Attualmente, vSphere IaaS control plane non supporta l'espansione del volume per i volumi ReadWriteMany.

Le classi di storage visualizzate nell'ambiente vSphere IaaS control plane hanno allowVolumeExpansion impostato su 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.

Quando si espandono i volumi, 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 Supervisore e in un cluster di Tanzu Kubernetes Grid se ai volumi sono associate classi di storage.
  • Non è possibile espandere i volumi creati come parte di un StatefulSet quando si utilizza la definizione StatefulSet. Attualmente, Kubernetes non supporta questa funzionalità. Di conseguenza, i tentativi di espandere i volumi aumentando le dimensioni di storage nella definizione di StatefulSet non riescono.
  • 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à offline

Un volume viene considerato offline quando non è collegato a un nodo o pod. Entrambi i tipi di cluster, i cluster Supervisori e Tanzu Kubernetes Grid, supportano l'espansione del volume offline.

Prerequisiti

Assicurarsi di aggiornare l'ambiente vSphere a una versione appropriata che supporti l'espansione del volume offline.

Procedura

  1. Creare un'attestazione di volume persistente (PVC) con una classe di storage.
    1. Definire un PVC utilizzando il seguente manifesto YAML come esempio.
      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
    2. Applicare il PVC al cluster Kubernetes.
      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.
    kubectl patch pvc example-block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    Questa azione attiva un'espansione del volume associato al PVC.
  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
    Nota: La dimensione del PVC rimane invariata finché il PVC non viene utilizzato da un pod.
    L'esempio seguente mostra che le dimensioni del PVC non sono cambiate. Se si descrive il PVC, è possibile vedere la condizione di FilesystemResizePending applicata nel 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. Creare un pod per utilizzare il PVC.
    Quando il PVC viene utilizzato dal pod, il file system viene espanso.
  5. 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.

Operazioni successive

Un amministratore di vSphere può visualizzare le nuove dimensioni del volume nel vSphere Client. Vedere Monitorare i volumi persistenti in vSphere Client.

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. Entrambi i tipi di cluster, i cluster Supervisori e Tanzu Kubernetes Grid, supportano l'espansione del volume online.

Prerequisiti

Assicurarsi di aggiornare l'ambiente vSphere a una versione appropriata che supporti l'espansione del volume online.

Procedura

  1. Individuare l'attestazione del volume persistente da ridimensionare.
    $ 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

    Si noti che la dimensione dello storage utilizzato dal volume è 1 Gi.

  2. Applicare patch al PVC per aumentarne le dimensioni.
    Ad esempio, aumentare le dimensioni a 2 Gi.
    $ kubectl patch pvc block-pvc -p '{"spec": {"resources": {"requests": {"storage": "2Gi"}}}}'
    persistentvolumeclaim/block-pvc edited
    Questa azione attiva un'espansione del volume associato al PVC.
  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

Operazioni successive

Un amministratore di vSphere può visualizzare le nuove dimensioni del volume nel vSphere Client. Vedere Monitorare i volumi persistenti in vSphere Client.