Risolvere i problemi di aggiornamento di Google Distributed Cloud

Puoi diagnosticare e risolvere i problemi che si verificano durante gli aggiornamenti dei cluster in Google Distributed Cloud, ad esempio timeout delle operazioni, modifiche alla configurazione rifiutate o ignorate ed errori dei controlli preflight. Per ulteriori informazioni sulle impostazioni che puoi aggiornare, consulta Cosa è possibile aggiornare e cosa no nei cluster.

Timeout aggiornamento

Il timeout dell'aggiornamento viene calcolato dinamicamente in base alle risorse da aggiornare. Tuttavia, il calcolo non è sempre preciso. Quando l'aggiornamento scade, vengono visualizzati errori simili ai seguenti:

  • Nel cluster utente:

    Failed to update the cluster:...timed out waiting for the condition...
    
  • Nel cluster di amministrazione:

    Failed to update the admin cluster:...timed out waiting for the condition...
    

Puoi ignorare questo tipo di errore di timeout e riprovare il comando di aggiornamento. Se riprovi a eseguire il comando e si verifica di nuovo un timeout con lo stesso messaggio di errore, contatta l'assistenza clienti Google Cloud.

L'aggiornamento contiene più modifiche

I comandi gkectl update admin e gkectl update cluster non consentono di aggiornare più impostazioni in un unico comando. Se il file di configurazione modifica più di un'impostazione, il comando restituisce un errore simile al seguente esempio:

Update summary for cluster X:
    antiAffinityGroups: enabled to be set to true from false          &config.AAGSpec{
        -   Enabled: false,
        +   Enabled: true,
          }
    user master cpu to be set to 5 from 4          config.NodePoolProps{
            Role:        "master",
            MachineType: "standard-master",
        -   CPUs:        4,
        +   CPUs:        5,
            MemoryMB:    8192,
            Replicas:    3,
            ... // 2 identical fields
            Labels:         nil,
            NodeTaints:     nil,
        -   Vsphere:        nil,
        &config.NodePoolVsphereSpec{Datastore: "lifecycle-workloads1-datastore1"},
        +   Vsphere:        nil,
            BootDiskSizeGB: nil,
            OSImageType:    "",
            ... // 5 identical fields
          }

Exit with error:
Failed to update the cluster: the update contains multiple changes. Please
update only one feature at a time

Questo errore potrebbe verificarsi per vari motivi, tra cui:

  • Un errore o una configurazione errata.
  • Hai eseguito gkectl upgrade in precedenza con la differenza di configurazione e ti aspettavi che le modifiche venissero applicate.
    • gkectl upgrade non applica alcuna differenza di configurazione, ad eccezione dell'incremento della versione.
  • In precedenza hai modificato la configurazione per un altro aggiornamento delle funzionalità, ma hai dimenticato di eseguire il comando gkectl update.

Se riscontri questo errore, esamina la differenza nel messaggio di errore e aggiorna le impostazioni richieste una alla volta con più comandi gkectl update. Per identificare le modifiche, puoi utilizzare gkectl get-config per generare file di configurazione da un cluster e visualizzare lo stato e la configurazione esistenti.

Modifiche non supportate

I comandi gkectl update cluster e gkectl update admin ignorano le modifiche non supportate e visualizzano messaggi di errore simili ai seguenti esempi:

detected unsupported changes: (-current +desired)
    ...
-   AdvancedNetworking:       &true,
+   AdvancedNetworking:       &false,
    ...
, which will be ignored

Se si verifica questo errore, esamina la differenza nel messaggio di errore ed esegui le seguenti azioni:

  • Se la modifica non è intenzionale, modifica il file YAML di configurazione e aggiornalo solo con le modifiche corrette e previste.
    • Nell'esempio precedente, se non volevi disattivare AdvancedNetworking, imposta advancedNetworking: true nel file YAML di configurazione.
  • Se la modifica è intenzionale, l'errore indica che non è supportata. Esegui una delle seguenti azioni:

L'immagine sistema operativo non esiste

I comandi gkectl update cluster e gkectl update admin potrebbero non riuscire con errori dei controlli preflight OS Images simili ai seguenti esempi:

  • Nel cluster utente:

    - Validation Category: OS Images
        - [FAILURE] User cluster OS images exist: os images  [xxxx] don't exist,
        please run `gkectl prepare` to upload os images.
    
  • Nel cluster di amministrazione:

    - Validation Category: OS Images
        - [FAILURE] Admin cluster OS images exist: os images [xxxx] don't exist,
        please run `gkectl prepare` to upload os images.
    

Questi errori possono verificarsi se l'immagine sistema operativo è stata rimossa in modo imprevisto nel tuo ambiente vCenter, ad esempio da un job di pulizia periodico.

Per reimportare le immagini sistema operativo, esegui il seguente comando gkectl prepare:

gkectl prepare \
    --bundle-path /var/lib/gke/bundles/gke-onprem-vsphere-TARGET_VERSION.tgz \
    --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --skip-upload-container-images

Spazio libero nel datastore insufficiente per i nuovi pool di nodi

Quando aggiungi nuovi node pool, il comando gkectl update cluster potrebbe non riuscire con errori dei controlli preflight VSphere Datastore FreeSpace simili al seguente esempio:

  - [FAILURE] VSphere Datastore FreeSpace: vCenter datastore: xxxx insufficient
  FreeSpace, requires at least xxx  GB

Questo errore indica che il datastore non dispone di spazio libero sufficiente per i nuovi node pool. Per fornire spazio sufficiente per l'aggiornamento, esegui una delle seguenti operazioni:

  • Liberare spazio dal datastore.
  • Configura un datastore nodePools[].vsphere.datastore diverso per il node pool.

Passaggi successivi

Se hai bisogno di ulteriore assistenza, contatta l'assistenza clienti Google Cloud.

Puoi anche consultare Assistenza per ulteriori informazioni sulle risorse di assistenza, tra cui: