Rotazione dell'IP del piano di controllo


Questa pagina spiega come eseguire una rotazione IP per il piano di controllo nei cluster di Google Kubernetes Engine (GKE).

Panoramica

Puoi eseguire una rotazione IP per modificare l'indirizzo IP utilizzato dal piano di controllo per gestire le richieste dall'API Kubernetes. L'indirizzo IP del control plane è statico e non cambia a meno che non esegui una rotazione IP.

La rotazione IP modifica il certificato SSL e l'autorità di certificazione (CA) del cluster, il che limita la possibilità di collegare l'indirizzo precedente a quello nuovo.

La rotazione IP avviene anche nell'ambito della rotazione delle credenziali.

Prima di iniziare

Prima di iniziare, assicurati di aver eseguito le seguenti operazioni:

  • Attiva l'API Google Kubernetes Engine.
  • Attiva l'API Google Kubernetes Engine
  • Se vuoi utilizzare Google Cloud CLI per questa attività, installa e poi inizializza gcloud CLI. Se hai già installato gcloud CLI, ottieni la versione più recente eseguendo gcloud components update.

Eseguire una rotazione degli IP

La rotazione degli IP è un processo in più passaggi:

  1. Quando avvii una rotazione IP, il piano di controllo inizia a eseguire il servizio sul nuovo indirizzo IP oltre che sull'indirizzo IP originale.
  2. GKE ricrea i pool di nodi in modo da utilizzare il nuovo indirizzo IP, rispettando la disponibilità per la manutenzione. Puoi anche ricreare i pool di nodi manualmente eseguendo un upgrade della versione del pool di nodi alla stessa versione GKE già in esecuzione sui nodi.
  3. Dopo aver avviato una rotazione, devi aggiornare i client API del cluster (ad esempio le macchine di sviluppo che utilizzano l'interfaccia a riga di comando kubectl) per iniziare a comunicare con il piano di controllo tramite il nuovo indirizzo IP.
  4. Al termine della rotazione, il piano di controllo smette di gestire il traffico con l'indirizzo IP precedente.

Quando avvii una rotazione degli indirizzi IP, GKE ricrea i tuoi nodi per te, rispettando la disponibilità per la manutenzione. Durante eventi importanti come Google Cloud Next, GKE potrebbe mettere in pausa le ricostruzioni automatiche dei nodi in modo da evitare interruzioni. Per scoprire di più su come la disponibilità per la manutenzione influisce sulla rotazione degli IP e su quale tipo di interruzione si verifica nel cluster durante i passaggi di una rotazione, consulta la riga relativa alla rotazione degli IP nella tabella delle modifiche manuali che ricreano i nodi utilizzando una strategia di upgrade dei nodi e rispettando le norme di manutenzione. GKE dipende dalla disponibilità delle risorse per aggiornare i nodi. Per scoprire di più sugli aggiornamenti dei nodi, consulta Pianificare le interruzioni per gli aggiornamenti dei nodi.

Se non completi una rotazione degli indirizzi IP entro sette giorni dall'avvio, GKE tenta di completarla per te. Se alcuni nodi del tuo cluster utilizzano ancora l'indirizzo IP precedente, l'operazione di completamento automatico non va a buon fine, ma GKE continua a tentare il completamento finché i nodi non vengono ricreati e l'operazione non può essere completata.

Dovresti pianificare di monitorare e completare manualmente la rotazione degli indirizzi IP dopo aver avviato la rotazione. Puoi sempre ignorare la disponibilità per la manutenzione e attivare manualmente passaggi specifici per assicurarti che la rotazione delle credenziali possa essere completata. Non fare affidamento sul completamento automatico, che è una misura del tipo "best effort".

Avvia la rotazione

  1. Per avviare una rotazione IP, esegui il seguente comando:

    gcloud container clusters update CLUSTER_NAME \
        --start-ip-rotation
    

    Sostituisci CLUSTER_NAME con il nome del cluster.

    L'output è simile al seguente:

    This will start an IP Rotation on cluster CLUSTER_NAME.
    The master will be updated to serve on a new IP address in addition to
    the current IP address. Google Kubernetes Engine will then schedule recreation of all nodes
    to point to the new IP address.  If maintenance window is
    used, nodes are not recreated until a maintenance window occurs. See
    documentation on how to manually update nodes. This operation is
    long-running and will block other operations on the cluster (including
    delete) until it has run to completion.
    Do you want to continue (Y/n)?
    

    Questo comando configura il piano di controllo in modo che venga eseguito su due indirizzi IP: l'indirizzo originale e un nuovo indirizzo.

  2. Conferma la rotazione e lascia aperta la shell per il completamento dell'operazione.

Ricrea i nodi

Dopo aver riconfigurato il server API in modo che venga pubblicato su un nuovo indirizzo IP, GKE aggiorna automaticamente i nodi in modo che utilizzino il nuovo indirizzo IP. GKE esegue l'upgrade di tutti i nodi alla versione del nodo supportata più vicina, che ricrea i nodi. Per ulteriori informazioni, consulta Upgrade dei node pool.

Per impostazione predefinita, GKE completa automaticamente le rotazioni degli indirizzi IP sette giorni dopo l'avvio dell'operazione. Se una periodo di manutenzione o un'esclusione attiva nel cluster impedisce a GKE di ricreare alcuni nodi durante questo periodo di sette giorni, la rotazione degli indirizzi IP non riesce inizialmente a completarsi. Tuttavia, GKE continua a provare a ricreare i nodi e completare la rotazione finché la disponibilità per la manutenzione non consente a GKE di procedere.

  • Se utilizzi esclusioni o finestre di manutenzione che potrebbero comportare un fallimento della rotazione, esegui manualmente l'upgrade del cluster per forzare la ricreazione dei nodi:

    gcloud container clusters upgrade CLUSTER_NAME \
        --location=LOCATION \
        --cluster-version=VERSION
    

    Sostituisci VERSION con la stessa versione GKE utilizzata già dal cluster.

    Per ulteriori informazioni, consulta Manutenzione automatica che rispetta i criteri di manutenzione GKE.

Controllare l'avanzamento della ricreazione del pool di nodi

  1. Per monitorare l'operazione di rotazione, esegui il seguente comando:

    gcloud container operations list \
        --filter="operationType=UPGRADE_NODES AND status=RUNNING" \
        --format="value(name)"
    

    Questo comando restituisce l'ID operazione dell'operazione di upgrade del nodo.

  2. Per eseguire il polling dell'operazione, passa l'ID operazione al seguente comando:

    gcloud container operations wait OPERATION_ID
    

I pool di nodi vengono ricreati uno alla volta e ognuno ha la propria operazione. Se hai più pool di nodi, segui queste istruzioni per eseguire il polling di ogni operazione.

Aggiorna i client API

Dopo aver avviato la rotazione IP, devi aggiornare tutti i client API esterni al cluster (ad esempio kubectl sulle macchine degli sviluppatori) in modo che puntino al nuovo indirizzo IP.

Per aggiornare i client API, esegui il seguente comando per ogni client:

gcloud container clusters get-credentials CLUSTER_NAME

Aggiorna gli indirizzi IP e le regole firewall hardcoded

Se hai impostato in modo hardcoded l'indirizzo IP del piano di controllo nel tuo ambiente o se hai regole firewall che hanno come target l'indirizzo IP del piano di controllo, aggiorna gli indirizzi con il nuovo indirizzo IP. Se completi la rotazione senza aggiornare gli indirizzi IP nelle applicazioni e nelle regole del firewall, queste risorse potrebbero subire interruzioni quando GKE smette di funzionare sull'indirizzo IP del control plane precedente.

Completa la rotazione

Dopo aver aggiornato i client API all'esterno del cluster, completa la rotazione per configurare il piano di controllo in modo che venga eseguito solo sul nuovo indirizzo IP.

Per completare la rotazione, esegui il seguente comando:

gcloud container clusters update CLUSTER_NAME \
    --complete-ip-rotation

L'output è simile al seguente:

This will complete the in-progress IP Rotation on cluster CLUSTER_NAME.
The master will be updated to stop serving on the old IP address and only
serve on the new IP address. Make sure all API clients have been updated
to communicate with the new IP address (e.g. by running `gcloud container
clusters get-credentials --project PROJECT_ID --region COMPUTE_REGION
CLUSTER_NAME`). This operation is long-running and will
block other operations on the cluster (including delete) until it has
run to completion.

Se la rotazione degli indirizzi IP non viene completata e viene restituito un messaggio di errore simile al seguente, consulta Errore 400: il pool di nodi richiede la ricreazione:

ERROR: (gcloud.container.clusters.update) ResponseError: code=400, message=Node pool "test-pool-1" requires recreation.

Se non completi una rotazione degli indirizzi IP entro sette giorni dall'avvio, GKE tenta di completarla per te. Se alcuni nodi del tuo cluster utilizzano ancora l'indirizzo IP precedente, potenzialmente a causa della disponibilità per la manutenzione e dei vincoli correlati che impediscono la loro ricreazione, il completamento automatico non va a buon fine, ma GKE continua a tentare il completamento finché i nodi non vengono ricreati e l'operazione non può essere completata.

Passaggi successivi