È possibile scalare un cluster TKG nel Supervisore orizzontalmente modificando il numero di nodi oppure verticalmente modificando la classe di macchine virtuali che ospita i nodi. È inoltre possibile scalare i volumi persistenti. Potrebbero essere applicate alcune limitazioni.

Operazioni di scalabilità supportate

Nella tabella sono elencate le operazioni di scalabilità supportate per i cluster TKG.
Tabella 1. Operazioni di scalabilità supportate per i cluster TKG 2.0
Nodo Scalabilità orizzontale Scalabilità verticale Scala verticale Scala del volume
Piano di controllo No No
Worker
Tenere presenti le considerazioni seguenti:
  • Il numero di nodi del piano di controllo deve essere dispari, 1 o 3. Per il piano di controllo, è supportata la scalabilità orizzontale ma non la scalabilità verticale.
  • Durante la scalabilità verticale di un nodo del cluster, potrebbe non essere possibile eseguire i carichi di lavoro sul nodo per mancanza di risorse disponibili. Per questo motivo, sarebbe preferibile adottare l'approccio della scalabilità orizzontale.
  • Le classi di macchine virtuali non sono modificabili. Se si esegue la scalabilità orizzontale di un cluster TKG dopo aver modificato una classe di macchine virtuali utilizzata da tale cluster, i nuovi nodi del cluster utilizzano la definizione della classe aggiornata, ma i nodi del cluster esistenti continuano a utilizzare la definizione della classe iniziale, causando una mancata corrispondenza.
  • I volumi dei nodi di lavoro possono essere modificati come provisioning afer; ma non è possibile per i volumi del nodo del piano di controllo.

Prerequisito di scalabilità: configurare la modifica di Kubectl

Per scalare un cluster TKG, aggiornare il manifest del cluster usando il comando kubectl edit CLUSTER-KIND/CLUSTER-NAME. Quando si salva le modifiche del manifest, il cluster viene aggiornato con le modifiche. Vedere Configurazione di un editor di testo per Kubectl.

Ad esempio:
kubectl edit tanzukubernetescluster/tkg-cluster-1
tanzukubernetescluster.run.tanzu.vmware.com/tkg-cluster-1 edited
Per annullare le modifiche, chiudere l'editor senza salvare.
kubectl edit tanzukubernetescluster/tkg-cluster-1
Edit cancelled, no changes made.

Scalare orizzontalmente il piano di controllo

Scalare orizzontalmente un cluster TKG 2.0 aumentando da 1 a 3 il numero di nodi del piano di controllo.
Nota: I cluster di produzione richiedono 3 nodi del piano di controllo.
  1. Accedere a Supervisore.
    kubectl vsphere login --server=SUPERVISOR-IP-ADDRESS --vsphere-username USERNAME
  2. Passare al contesto Spazio dei nomi vSphere in cui è in esecuzione il cluster TKG.
    kubectl config use-context tkg-cluster-ns
  3. Elencare i cluster Kubernetes in esecuzione in Spazio dei nomi vSphere.
    kubectl get CLUSTER-KIND -n tkg-cluster-ns
    Ad esempio:
    kubectl get tanzukubernetescluster -n tkg-cluster-ns
  4. Ottenere il numero di nodi in esecuzione nel cluster di destinazione.
    kubectl get tanzukubernetescluster tkg-cluster-1
    Ad esempio, il cluster TKG ha 1 nodo del piano di controllo e 3 nodi di lavoro.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                   AGE     READY
    tkg-cluster-ns        tkg-cluster-1    1               3        v1.24.9---vmware.1-tkg.4   5d12h   True
    
  5. Caricare il manifesto del cluster per la modifica utilizzando il comando kubectl edit.
    kubectl edit tanzukubernetescluster/tkg-cluster-1

    Il manifesto del cluster viene aperto nell'editor di testo definito dalle variabili di ambiente KUBE_EDITOR o EDITOR.

  6. Aumentare il numero di nodi del piano di controllo da 1 a 3 nella sezione spec.topology.controlPlane.replicas del manifesto.
    Ad esempio:
    ...
    spec:
      topology:
        controlPlane:
          replicas: 1
    ...
    
    ...
    spec:
      topology:
        controlPlane:
          replicas: 3
    ...
    
  7. Per applicare le modifiche, salvare il file nell'editor di testo. Per annullare, chiudere l'editor senza salvare.

    Quando si salva le modifiche del manifest, kubectl applica le modifiche al cluster. In background, il Servizio macchina virtuale su Supervisore esegue il provisioning del nuovo nodo di lavoro.

  8. Verificare che i nuovi nodi siano stati aggiunti.
    kubectl get tanzukubernetescluster tkg-cluster-1
    Il piano di controllo scalato orizzontalmente ora presenta 3 nodi.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                   AGE     READY
    tkg-cluster-ns        tkg-cluster-1    3               3        v1.24.9---vmware.1-tkg.4   5d12h   True
    

Scalare orizzontalmente i nodi di lavoro

È possibile scalare orizzontalmente un cluster TKG 2.0 aumentando il numero dei nodi di lavoro.

  1. Accedere a Supervisore.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Passare al contesto Spazio dei nomi vSphere in cui è in esecuzione il cluster TKG.
    kubectl config use-context tkg-cluster-ns
  3. Elencare i cluster Kubernetes in esecuzione in Spazio dei nomi vSphere.
    kubectl get CLUSTER-KIND -n tkg-cluster-ns
    Ad esempio:
    kubectl get tanzukubernetescluster -n tkg-cluster-ns
  4. Ottenere il numero di nodi in esecuzione nel cluster di destinazione.
    kubectl get tanzukubernetescluster tkg-cluster-1
    Ad esempio, il cluster seguente presenta 3 nodi del piano di controllo e 3 nodi di lavoro.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                   AGE     READY
    tkg-cluster-ns        tkg-cluster-1    3               3        v1.24.9---vmware.1-tkg.4   5d12h   True
    
  5. Caricare il manifesto del cluster per la modifica utilizzando il comando kubectl edit.
    kubectl edit tanzukubernetescluster/tkg-cluster-1

    Il manifesto del cluster viene aperto nell'editor di testo definito dalle variabili di ambiente KUBE_EDITOR o EDITOR.

  6. Aumentare il numero di nodi di lavoro modificando il valore spec.topology.nodePools.NAME.replicas per il pool di nodi di lavoro di destinazione.
    Ad esempio:
    ...
    spec:
      topology:
        ...
        nodePools:
        - name: worker-1
          replicas: 3
    ...
    ...
    spec:
      topology:
        ...
        nodePools:
        - name: worker-1
          replicas: 4
    ...
  7. Per applicare le modifiche, salvare il file nell'editor di testo. Per annullare le modifiche, chiudere l'editor senza salvare.

    Quando si salva il file, kubectl applica le modifiche al cluster. In background, il Servizio macchina virtuale su Supervisore esegue il provisioning del nuovo nodo di lavoro.

  8. Verificare che il nuovo nodo di lavoro venga aggiunto.
    kubectl get tanzukubernetescluster tkg-cluster-1
    Dopo la scalatura orizzontale, il cluster presenta 4 nodi di lavoro.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                   AGE     READY
    tkg-cluster-ns        tkg-cluster      3               4        v1.24.9---vmware.1-tkg.4   5d12h   True
    

Scalare verticalmente i nodi di lavoro

È possibile scalare verticalmente un cluster TKG 2.0 diminuendo il numero dei nodi di lavoro.

  1. Accedere a Supervisore.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Passare al contesto Spazio dei nomi vSphere in cui è in esecuzione il cluster TKG.
    kubectl config use-context tkg-cluster-ns
  3. Elencare i cluster Kubernetes in esecuzione in Spazio dei nomi vSphere.
    kubectl get CLUSTER-KIND -n tkg-cluster-ns
    Ad esempio:
    kubectl get tanzukubernetescluster -n tkg-cluster-ns
  4. Ottenere il numero di nodi in esecuzione nel cluster di destinazione.
    kubectl get tanzukubernetescluster tkg-cluster-1
    Ad esempio, il cluster seguente include 3 nodi del piano di controllo e 4 nodi di lavoro.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                   AGE     READY
    tkg-cluster-ns        tkg-cluster      3               4        v1.24.9---vmware.1-tkg.4   5d12h   True
    
  5. Caricare il manifesto del cluster per la modifica utilizzando il comando kubectl edit.
    kubectl edit tanzukubernetescluster/tkg-cluster-1

    Il manifesto del cluster viene aperto nell'editor di testo definito dalle variabili di ambiente KUBE_EDITOR o EDITOR.

  6. Ridurre il numero di nodi di lavoro modificando il valore spec.topology.nodePools.NAME.replicas per il pool di nodi di lavoro di destinazione.
    Ad esempio:
    ...
    spec:
      topology:
        ...
        nodePools:
        - name: worker-1
          replicas: 4
    ...
    ...
    spec:
      topology:
        ...
        nodePools:
        - name: worker-1
          replicas: 3
    ...
  7. Per applicare le modifiche, salvare il file nell'editor di testo. Per annullare le modifiche, chiudere l'editor senza salvare.

    Quando si salva il file, kubectl applica le modifiche al cluster. In background, il Servizio macchina virtuale su Supervisore esegue il provisioning del nuovo nodo di lavoro.

  8. Verificare che i nodi di lavoro siano stati rimossi.
    kubectl get tanzukubernetescluster tkg-cluster-1
    Dopo la scalatura verticale, il cluster presenta 3 nodi di lavoro.
    NAMESPACE             NAME             CONTROL PLANE   WORKER   TKR NAME                   AGE     READY
    tkg-cluster-ns        tkg-cluster-1    3               3        v1.24.9---vmware.1-tkg.4   5d12h   True
    

Scalare verticalmente un cluster

TKG 2.0 su Supervisore supporta la scalabilità verticale per il piano di controllo del cluster e i nodi di lavoro. È possibile scalare verticalmente un cluster TKG modificando la classe macchina virtuale utilizzata per i nodi del cluster. La classe di macchine virtuali deve essere associata al Spazio dei nomi vSphere in cui viene eseguito il provisioning del cluster TKG.

TKG 2.0 su Supervisore supporta la scalabilità verticale attraverso il meccanismo di aggiornamento in sequenza incorporato nel sistema. Quando si modifica la definizione di VirtualMachineClass, il sistema implementa nuovi nodi con la nuova classe e rende inattivi i nodi precedenti. Vedere Gestione dei cluster TKG nel Supervisore.

  1. Accedere a Supervisore.
    kubectl vsphere login --server=SVC-IP-ADDRESS --vsphere-username USERNAME
  2. Passare al contesto Spazio dei nomi vSphere in cui è in esecuzione il cluster TKG.
    kubectl config use-context tkg-cluster-ns
  3. Elencare i cluster Kubernetes in esecuzione in Spazio dei nomi vSphere.
    kubectl get CLUSTER-KIND -n tkg-cluster-ns
    Ad esempio:
    kubectl get tanzukubernetescluster -n tkg-cluster-ns
  4. Descrivere il cluster TKG di destinazione e controllare la classe di macchine virtuali.
    kubectl describe tanzukubernetescluster tkg-cluster-1

    Ad esempio, il cluster seguente utilizza la classe di macchine virtuali best effort medium.

    spec:
      topology:
        controlPlane:
          replicas: 3
          vmClass: guaranteed-medium
          ...
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          vmClass: guaranteed-medium
          ...
    
  5. Elencare e descrivere le classi di macchine virtuali disponibili.
    kubectl get virtualmachineclassbinding
    kubectl describe virtualmachineclassbinding
    Nota: La classe di macchine virtuali deve essere associata allo Spazio dei nomi vSphere. Vedere Utilizzo delle classi di macchine virtuali con cluster TKG in Supervisore.
  6. Aprire per modificare il manifesto del cluster di destinazione.
    kubectl edit tanzukubernetescluster/tkg-cluster-1

    Il manifesto del cluster viene aperto nell'editor di testo definito dalle variabili di ambiente KUBE_EDITOR o EDITOR.

  7. Modificare il manifesto modificando la classe di macchine virtuali.
    Ad esempio, il cluster in modo utilizza la classe di macchine virtuali best-effort-xsmall per il piano di controllo e i nodi di lavoro.
    spec:
      topology:
        controlPlane:
          replicas: 3
          vmClass: best-effort-xsmall
          ...
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          vmClass: best-effort-xsmall
          ...
    
    Impostare la classe di macchine virtuali del piano di controllo su guaranteed-large e la classe di macchine virtuali per i nodi di lavoro in guaranteed-2xlarge.
    spec:
      topology:
        controlPlane:
          replicas: 3
          vmClass: guaranteed-large
          ...
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          vmClass: guaranteed-2xlarge
          ...
    
  8. Per applicare le modifiche, salvare il file nell'editor di testo. Per annullare le modifiche, chiudere l'editor senza salvare.

    Quando si salva il file, kubectl applica le modifiche al cluster. In background, il TKG su Supervisore esegue un aggiornamento in continuo del cluster TKG.

  9. Verificare che il cluster TKG venga aggiornato con la nuova classe di macchine virtuali.
    kubectl describe tanzukubernetescluster tkg-cluster-1

Scalare volumi dei nodi cluster TKG

Nella specifica del cluster TKG per i nodi, facoltativamente è possibile dichiarare uno o più volumi persistenti per il nodo. La dichiarazione di un volume di nodi è utile per i componenti ad alta rotazione, come il database ectd sul piano di controllo e il runtime del container e kubelet sui nodi di lavoro.

Se si desidera aggiungere o modificare uno o più volumi di nodi dopo la creazione del cluster, tenere presenti le considerazioni seguenti:
Nodo di volume Descrizione

Sono consentite modifiche al volume del nodo di lavoro

Dopo aver eseguito il provisioning di un cluster TKG, è possibile aggiungere o aggiornare volumi del nodo di lavoro. Quando si avvia un aggiornamento in rollback, il cluster viene aggiornato con il volume nuovo o modificato.

Avviso: Se si scala il nodo di lavoro con un volume nuovo o modificato, i dati nel volume corrente vengono eliminati durante l'aggiornamento in corso. Fare riferimento alla spiegazione che segue.

Un volume dichiarato per un nodo del cluster TKG viene considerato non effimero. Un cluster TKG utilizza un'attestazione di volume persistente (PVC) nello spazio dei nomi vSphere in modo che la capacità del volume venga conteggiata rispetto alla quota di storage del cluster TKG. Se si aumenta la capacità di un volume TKC, l'API del cluster Kubernetes (CAPI) eseguirà il rollout dei nuovi worker con un nuovo PVC. TKG non esegue alcuna migrazione dei dati in questo caso, ma Kubernetes (ri)pianifica i pod del carico di lavoro di conseguenza.

Le modifiche al volume del nodo del piano di controllo non sono consentite

Dopo il provisioning di un cluster TKG, non è possibile aggiungere o aggiornare il volume di un nodo del piano di controllo. L'API del cluster Kubernetes (CAPI) impedisce le modifiche successive alla creazione in spec.toplogy.controlPlane.volumes.

Se si tenta di aggiungere o modificare un volume del piano di controllo dopo la creazione del cluster, la richiesta viene rifiutata e viene visualizzato il messaggio di errore "Gli aggiornamenti ai campi non modificabili non sono consentiti".

A titolo di contesto, viene fornito un estratto delle specifiche del cluster con i volumi dei nodi dichiarati. Fare riferimento all'esempio del cluster TKG completo da cui viene eseguita questa azienda secondo necessità: Esempio v1alpha3: TKC con volumi di storage e nodi predefiniti.
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
...
spec:
   topology:
     controlPlane:
       replicas: 3
       storageClass: tkg-storage-policy
       vmClass: guaranteed-medium
       tkr:
         reference:
           name: v1.24.9---vmware.1-tkg.4
     nodePools:
     - name: worker-nodepool-a1
       replicas: 3
       storageClass: tkg-storage-policy
       vmClass: guaranteed-large
       tkr:
         reference:
           name: v1.24.9---vmware.1-tkg.4
       volumes:
       - name: containerd
         mountPath: /var/lib/containerd
         capacity:
           storage: 50Gi
       - name: kubelet
         mountPath: /var/lib/kubelet
         capacity:
           storage: 50Gi
     - name: worker-nodepool-a2
       ...
   settings:
     ...