Gestisci gli upgrade dei cluster in diversi ambienti di produzione


Questa pagina mostra come gestire gli upgrade dei cluster GKE utilizzando la sequenza di implementazione. Per scoprire di più, consulta Informazioni sugli upgrade dei cluster con sequenza di implementazione.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti attività:

  • Abilita l'API Google Kubernetes Engine.
  • Abilita l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installa e inizializza l'interfaccia alla gcloud CLI.

Configurare una sequenza di implementazione

Questo documento spiega come utilizzare i parchi risorse e gli ambiti del parco risorse per organizzare i cluster e creare sequenze di implementazione.

Con la sequenza di implementazione, puoi scegliere l'ordine e la tempistica di implementazione delle versioni nei set di cluster sullo stesso canale di rilascio. Puoi creare una sequenza di un massimo di tre ambiti.

Per creare una sequenza di implementazione, i cluster devono essere organizzati in ambiti. Per indicazioni su come organizzare i cluster in ambiti, consulta questo esempio. Una volta organizzate in ambiti, puoi creare una sequenza di lancio definendo le relazioni dell'ambito upstream e il tempo di attesa di ogni ambito. Per scoprire di più su come funziona, consulta l'articolo Come viene creata una sequenza di implementazione.

Organizza i cluster in ambiti

In una sequenza di implementazione, tutti i cluster in tutti gli ambiti devono essere registrati nello stesso canale di rilascio e devono trovarsi nella stessa versione secondaria. Se questi requisiti non sono soddisfatti e ci sono discrepanze nella versione tra i cluster, possono verificarsi problemi con l'implementazione della versione. Per ulteriori informazioni, consulta Idoneità all'implementazione.

Gli ambiti sono un'unità organizzativa all'interno di un parco risorse. I cluster possono essere registrati in un parco risorse e un ambito ospitati in un progetto diverso. Puoi creare una sequenza di implementazione con ambiti in più parchi risorse.

Se hai già organizzato i cluster in ambiti, puoi saltare i seguenti passaggi e procedere a Creare una sequenza di implementazione.

  1. Per ogni cluster nella sequenza, registra il cluster con un parco risorse. Il cluster deve essere registrato nel parco risorse nel progetto in cui creerai l'ambito per questo cluster. Se vuoi registrare un cluster per un parco risorse in un altro progetto host, assicurati di avere impostato le autorizzazioni necessarie per la registrazione tra progetti.
  2. Crea 2-3 ambiti per organizzare i cluster. Esegui il comando nel progetto host del rispettivo parco risorse dell'ambito. Puoi avere fino a tre ambiti in una sequenza di implementazione. Ripeti il comando per ogni ambito che vuoi creare.

    Consulta il riferimento per gcloud alpha container fleet scopes create per un elenco completo dei flag. Con il comando create, puoi utilizzare i flag nelle istruzioni per creare una sequenza di implementazione.

  3. Aggiungi ogni cluster a un ambito:

Creare una sequenza di implementazione

Una sequenza di implementazione è organizzata come un elenco collegato. Per scoprire di più, consulta Come viene creata una sequenza di implementazione. Quando crei una sequenza di lancio, imposti le seguenti proprietà per ogni ambito:

  • Ambito upstream: il percorso della risorsa dell'ambito upstream nel formato projects/{project-number}/locations/global/scopes/{scope-name}. Non imposti un ambito upstream per il primo ambito in una sequenza. L'ambito upstream qualifica le nuove versioni dell'ambito downstream.
  • Tempo di attesa: il tempo di attesa per un ambito è il tempo che intercorre tra il completamento degli upgrade (o l'implementazione ha richiesto 30 giorni) e il momento in cui può iniziare l'ambito a valle. Per scoprire di più, consulta la pagina Come funziona la qualificazione della versione in una sequenza di lancio.

Puoi impostare queste proprietà quando crei o aggiorni un ambito. Le seguenti istruzioni utilizzano il comando update, ma puoi impostare le stesse proprietà quando crei un ambito con il comando create.

Per ognuno dei seguenti comandi, sostituisci SOAK_TIME con il tempo di attesa per l'ambito che stai aggiornando.

  1. Imposta il tempo di attesa per il primo cluster della sequenza:

    gcloud alpha container fleet scopes update FIRST_SCOPE \
        --default-upgrade-soaking=SOAK_TIME \
        --project=FIRST_SCOPE_PROJECT_ID
    

    Sostituisci FIRST_SCOPE con il percorso completo del primo ambito e FIRST_SCOPE_PROJECT_ID con l'ID del progetto in cui è ospitato il primo ambito.

  2. Imposta l'ambito upstream e il tempo di attesa per il secondo ambito nella sequenza:

    gcloud alpha container fleet scopes update SECOND_SCOPE \
        --upstream-scope=projects/FIRST_SCOPE_PROJECT_NUMBER/locations/global/scopes/FIRST_SCOPE \
        --default-upgrade-soaking=SOAK_TIME \
        --project=SECOND_SCOPE_PROJECT_ID
    

    Sostituisci SECOND_SCOPE con il percorso completo del primo ambito e SECOND_SCOPE_PROJECT_ID con l'ID progetto del progetto in cui è ospitato il secondo ambito.

  3. (Facoltativo) Se vuoi avere tre ambiti in una sequenza di lancio, imposta l'ambito upstream per il terzo ambito nella sequenza:

    gcloud alpha container fleet scopes update THIRD_SCOPE \
        --upstream-scope=projects/SECOND_SCOPE_PROJECT/locations/global/scopes/SECOND_SCOPE \
        --default-upgrade-soaking=SOAK_TIME \
        --project=THIRD_SCOPE_PROJECT_ID
    

    Sostituisci THIRD_SCOPE con il percorso completo del primo ambito e THIRD_SCOPE_PROJECT_ID con l'ID progetto del progetto in cui è ospitato il terzo ambito.

Verificare la sequenza di implementazione

Descrivi il primo ambito nella sequenza per confermare le impostazioni. Per ogni ambito, quando descrivi l'ambito puoi vedere l'ambito upstream e downstream.

Controllare il processo di implementazione della versione

Gli upgrade dei cluster con GKE offrono una serie di meccanismi per il controllo manuale del processo. Oltre a questi controlli, hai a disposizione altri modi per controllare gli upgrade dei cluster con la sequenza di lancio. In questa sezione, scopri come, se necessario, puoi esercitare un controllo sugli upgrade.

Controllare lo stato di una sequenza di implementazione

Verifica lo stato di una sequenza di implementazione:

gcloud alpha container fleet scopes describe SCOPE_NAME \
    --show-linked-cluster-upgrade
    --project=SCOPE_PROJECT_ID

Sostituisci SCOPE_NAME con il nome di qualsiasi ambito nella sequenza di lancio e SCOPE_PROJECT_ID con l'ID progetto di questo ambito. Se la sequenza di lancio ha ambiti tra progetti in parchi risorse diversi, devi disporre delle autorizzazioni richieste per eseguire questo comando.

Nell'output, gli attributi clusterUpgrade(s).spec e clusterUpgrade(s).state contengono informazioni aggiuntive sull'upgrade del cluster, ad esempio il tempo di attesa, le sostituzioni dell'upgrade del cluster e lo stato dell'upgrade. Per ulteriori informazioni su quali informazioni vengono fornite con questo comando, consulta Controllare lo stato di implementazione della versione in sequenza.

Se hai bisogno solo di informazioni su un ambito nella sequenza, sostituisci il flag --show-linked-cluster-upgrade con --show-cluster-upgrade.

Consulta il riferimento per gcloud alpha container fleet scopes describe per un elenco completo dei flag.

Per visualizzare lo stato di singoli cluster all'interno di un ambito, esegui questo comando nel progetto del parco risorse in cui si trova l'ambito:

gcloud alpha container fleet features describe clusterupgrade

Risolvere i problemi di idoneità all'implementazione

Se tutti i cluster in una sequenza di lancio non hanno lo stesso target di upgrade, GKE potrebbe non essere in grado di procedere con gli upgrade dei cluster poiché i cluster nell'ambito a monte non convalidano il target di upgrade necessario per i cluster nell'ambito a valle.

Per verificare se la sequenza di implementazione presenta problemi di idoneità all'implementazione, controlla lo stato della sequenza di implementazione. Se un ambito non è idoneo, segui le istruzioni per visualizzare lo stato dei singoli cluster in un ambito.

Se un cluster non è idoneo perché si trova in una versione precedente (ad esempio, la maggior parte dei cluster nell'ambito è in fase di upgrade da 1.23 a 1.24 e un cluster è sulla versione 1.22), puoi eseguire manualmente l'upgrade del cluster alla versione 1.24 per risolvere la discrepanza della versione.

Se un cluster non è idoneo perché è in una versione successiva (ad esempio, la maggior parte dei cluster nell'ambito è in fase di upgrade da 1.23 a 1.24 e un cluster è sulla versione 1.25), non puoi eseguire manualmente l'upgrade del cluster per risolvere la discrepanza della versione.

Per migliorare immediatamente gli upgrade dei cluster, rimuovi eventuali cluster con uno stato INELIGIBLE seguendo le istruzioni per avanzare parzialmente le implementazioni idonee.

Modifica del tempo di attesa

Se vuoi che il tempo di attesa di un'implementazione di versione specifica sia diverso da quello di attesa configurato per la sequenza, puoi modificarlo utilizzando il flag --add-upgrade-soaking-override con il seguente comando:

gcloud alpha container fleet scopes update SCOPE_NAME \
    --add-upgrade-soaking-override=SOAK_TIME \
    --upgrade-selector=name=UPGRADE_NAME,version=VERSION

Sostituisci quanto segue:

  • SCOPE_NAME: il nome dell'ambito per cui vuoi sostituire il tempo di attesa utilizzato per l'implementazione della versione di una versione specifica.
  • SOAK_TIME: il tempo di attesa da utilizzare diverso da quello predefinito (ad esempio, "0d" se vuoi saltare il tempo di attesa per l'implementazione di una versione).
  • UPGRADE_NAME: il nome dell'upgrade, che può essere k8s_control_plane o k8s_node.
  • VERSION: la versione di GKE in cui vuoi il tempo di attesa dopo l'implementazione in questo ambito, ad esempio 1.25.2-gke.400.

Ad esempio, se hai già qualificato una nuova versione e vuoi che gli upgrade inizino nell'ambito successivo, puoi impostare il tempo di attesa su zero. Puoi anche utilizzarla se vuoi più tempo rispetto al tempo di attesa predefinito per qualificare una versione specifica.

Modificare l'ordine di una sequenza

Se vuoi modificare l'ordine di una sequenza, utilizza i comandi delle istruzioni per creare una sequenza di implementazione per aggiornare gli ambiti a monte.

Ritarda il completamento dell'implementazione della versione dell'ambito

Se devi impedire temporaneamente all'ambito di completare l'implementazione di una nuova versione nei relativi cluster, puoi aggiungere un'esclusione di manutenzione a tutti i cluster di cui non è stato eseguito l'upgrade alla versione di destinazione. Questo può mettere in pausa un ambito dal procedere al tempo di attesa o all'ambito downstream per un massimo di 30 giorni. Dopo 30 giorni, l'ambito inizierà a essere immerso.

Puoi anche modificare il tempo di attesa per tale ambito e impostarlo su 30 giorni per massimizzare il tempo di attesa della sequenza di implementazione prima di passare all'ambito successivo.

Se hai bisogno di ritardare ulteriormente gli upgrade a partire dall'ambito successivo, puoi utilizzare le esclusioni di manutenzione per i cluster nell'ambito successivo.

Passa a implementazioni parzialmente idonee

Se gli upgrade dei cluster in un ambito non hanno ancora raggiunto il limite di 30 giorni e non saranno completati a causa di problemi di idoneità all'implementazione (ad esempio, discrepanze nelle versioni in un ambito), puoi rimuovere un cluster da un ambito per completare l'implementazione della versione e iniziare il tempo di attesa o passare all'ambito successivo nella sequenza di lancio. Puoi anche rimuovere un cluster da un ambito per altri motivi, ad esempio se l'utilizzo di questo cluster non è più correlato agli altri cluster nell'ambito.

Segui le istruzioni per rimuovere i cluster dagli ambiti.

Una volta rimossi tutti i cluster che impediscono il completamento dell'implementazione della versione di un ambito, verrà completata l'implementazione della versione dell'ambito. Per verificarlo, segui le istruzioni per verificare lo stato di implementazione di una versione.

Eliminare una sequenza

Per eliminare una sequenza, utilizza il comando seguente per rimuovere l'associazione dell'ambito upstream per il secondo ambito (e il terzo ambito, se questa sequenza di implementazione include tre ambiti):

gcloud alpha container fleet scopes update SCOPE_NAME --reset-upstream-scope

Sostituisci SCOPE_NAME con il nome dell'ambito che vuoi eliminare.

Esegui la pulizia

Per evitare addebiti di fatturazione imprevisti, se hai eseguito la registrazione a una prova gratuita dell'API Anthos per testare la funzionalità Sequenza di implementazione, assicurati di disattivare l'API al termine del test di questa funzionalità in Anteprima privata. Devi disabilitare l'API prima che il progetto host del parco risorse venga rimosso dalla lista consentita per questa funzionalità.

Passaggi successivi