Interrompere e riprendere la sincronizzazione delle configurazioni

In alcuni casi, potrebbe essere necessario interrompere rapidamente la sincronizzazione delle configurazioni da Source of Truth da parte di Config Sync. Uno di questi scenari è se qualcuno commette una sintattica valida ma errata all'origine e vuoi limitarne gli effetti dei cluster in esecuzione mentre la configurazione viene rimossa o corretta.

Questa pagina è rivolta agli amministratori IT e agli operatori che gestiscono il ciclo di vita dell'infrastruttura tecnologica di base. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti di Google Cloud, consulta Ruoli e attività comuni degli utenti di GKE Enterprise.

Prerequisiti

Per utilizzare i comandi in questo documento, devi disporre delle seguenti autorizzazioni RBAC di Kubernetes negli spazi dei nomi config-management-system su tutti i cluster in cui vuoi interrompere la sincronizzazione:

- apiGroups: ["extensions"]
  resources: ["deployments", "deployments/scale"]
  verbs: ["get", "update"]
- apiGroups: [""]
  resources: ["pods"]
  verbs: ["list", "watch"]

Interrompere e riprendere la sincronizzazione da una fonte attendibile

Questa sezione è dedicata a un'unica fonte di riferimento e mostra come interrompere rapidamente la sincronizzazione e come riprenderla quando il problema si verifica corretti. Per informazioni su come interrompere la sincronizzazione per più di una fonte di riferimento, vedi interrompere e riprendere la sincronizzazione da più fonti attendibili.

Interrompere la sincronizzazione

Per interrompere la sincronizzazione per un singolo cluster, esegui questi comandi, che sono fornito come singolo comando per comodità, ma può anche essere eseguito separatamente:

kubectl scale -n config-management-system deployment config-management-operator --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l k8s-app=config-management-operator \
&& kubectl scale -n config-management-system deployment --replicas=0 --all \
&& kubectl wait -n config-management-system --for=delete pods --all

I comandi eseguono le seguenti operazioni in sequenza. Se un comando non va a buon fine, non vengono eseguiti.

  1. Riduci il conteggio di replicas nel deployment dell'operatore ConfigManagement a 0.
  2. Riduci il numero di replicas di tutti i deployment in esecuzione nell' config-management-system su 0. L'insieme esatto di implementazioni interessato varia in base alla versione del prodotto.

Tutti i deployment sono ancora nel cluster, ma non sono presenti repliche L'operatore o uno qualsiasi dei processi responsabili della sincronizzazione disponibile, pertanto le configurazioni non vengono sincronizzate dalla fonte attendibile.

Per verificare che tutti i processi siano stati arrestati, utilizza quanto segue e verifica che tutti i deployment abbiano zero repliche:

kubectl get -n config-management-system deployment

Se devi interrompere la sincronizzazione su più cluster, esegui i comandi precedenti per ogni cluster.

Riprendi la sincronizzazione

Per riprendere la sincronizzazione per un singolo cluster, esegui questo comando:

kubectl -n config-management-system scale deployment config-management-operator --replicas=1

Questo comando scala il deployment dell'operatore a 1 replica. La L'operatore nota poi che i pod config-management-system di deployment vengono scalati in modo errato e e li scala in base al numero di repliche appropriato.

Se devi riprendere la sincronizzazione su più cluster, esegui il comando precedente per ogni cluster.

Interrompere e riprendere la sincronizzazione da più di una fonte attendibile

La sezione riguarda più di una fonte di riferimento e mostra come interrompere temporaneamente e riprendere la sincronizzazione da più fonti attendibili. Per scoprire come interrompere la sincronizzazione per un'unica fonte attendibile, consulta Interrompere e riprendere la sincronizzazione da una fonte attendibile.

Solo un amministratore centrale può interrompere la sincronizzazione nella source of truth principale.

La possibilità di interrompere la sincronizzazione in più fonti attendibili dipende da quale è stato utilizzato il metodo di configurazione quando configuri la sincronizzazione da più di una fonte attendibile:

  • Se è stato utilizzato il metodo Controlla le fonti in una fonte attendibile, l'amministratore centrale è l'unico che può interrompere e riprendere la sincronizzazione.

  • Se il metodo Controllare una fonte di riferimento con l'API Kubernetes utilizzato, gli operatori delle applicazioni possono interrompere e riprendere la sincronizzazione dall'ambito dello spazio dei nomi le fonti di dati su cui lavorano.

Interrompi sincronizzazione

Le sezioni seguenti mostrano come interrompere la sincronizzazione per l'origine della verità principale e per le origini della verità basate sullo spazio dei nomi. Per impedire a Reconciler Manager di annullare la variazione, devi prima interrompere Reconciler Manager eseguendo i seguenti comandi:

kubectl -n config-management-system scale deployment config-management-operator --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l k8s-app=config-management-operator --timeout=60s \
&& kubectl scale deployment -n config-management-system reconciler-manager --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l app=reconciler-manager

I comandi eseguono le seguenti operazioni in sequenza. Se un comando non va a buon fine, i comandi rimanenti non vengono eseguiti.

  1. Riduci il conteggio di replicas nel deployment dell'operatore ConfigManagement a 0.
  2. Riduci a 0 il conteggio di replicas nel deployment di Reconciler Manager.

Interrompi la sincronizzazione dalla fonte attendibile

Per interrompere la sincronizzazione di un cluster dalla fonte attendibile principale, un amministratore centrale può esegui questo comando:

kubectl -n config-management-system scale deployment root-reconciler --replicas=0

Questo comando riduce il conteggio di replicas nel Deployment root-reconciler a 0.

Se devi interrompere la sincronizzazione su più cluster, esegui il comando precedente per ogni cluster.

Interrompi la sincronizzazione da una fonte attendibile con ambito dello spazio dei nomi

Seleziona il metodo della fonte di riferimento principale o la scheda Metodo API Kubernetes per visualizzarlo le relative istruzioni.

Metodo dell'origine attendibile principale

Se è stato utilizzato il metodo Controlla le origini dello spazio dei nomi nella fonte attendibile principale, gli amministratori centrali possono eseguire i comandi seguenti per arrestare un cluster da una fonte attendibile dello spazio dei nomi:

kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0

Il comando riduce il numero di repliche ns-reconciler-NAMESPACE Deployment in 0.

Se devi interrompere la sincronizzazione su più cluster, esegui il comando precedente per ogni cluster.

Metodo dell'API Kubernetes

Se è stato utilizzato il metodo Controlla le origini basate sullo spazio dei nomi con l'API Kubernetes, gli operatori delle applicazioni possono interrompere la sincronizzazione di un cluster eseguendo i seguenti comandi:

  1. Recupera la configurazione RepoSync e salvala per utilizzarla in un secondo momento vuoi riprendere la sincronizzazione:

    kubectl -n NAMESPACE get reposyncs repo-sync -oyaml > repo-sync.yaml
    

    Sostituisci NAMESPACE con lo spazio dei nomi dell'oggetto RepoSync.

  2. Elimina la configurazione di RepoSync:

    kubectl -n NAMESPACE delete reposyncs repo-sync
    

    Questo comando attiva il Gestore riconciliatore per rimuovere lo spazio dei nomi riconciliatore (ns-reconciler-NAMESPACE) da NAMESPACE e interrompe la sincronizzazione.

    Se devi interrompere la sincronizzazione su più cluster, esegui la precedente per ogni cluster.

Impedire al webhook di ammissione di bloccare le derive (facoltativo)

Il webhook di ammissione Config Sync è disattivato per impostazione predefinita e puoi abilita e disabilita la deviazione Funzionalità di prevenzione fornita dal webhook di ammissione utilizzando Google Cloud CLI o kubectl.

Interrompi la sincronizzazione da tutte le fonti attendibili

Per interrompere la sincronizzazione da tutte le fonti attendibili, inclusa la fonte attendibile principale e le fonti basate sullo spazio dei nomi, esegui i seguenti comandi:

kubectl scale deployment -n config-management-system -l app=reconciler --replicas=0 \
&& kubectl wait -n config-management-system --for=delete pods -l app=reconciler

I comandi riducono a 0 il conteggio replicas di tutti i pod di riconciliazione in esecuzione nello spazio dei nomi config-management-system e aspettano che tutti i pod di riconciliazione vengano eliminati.

Tutti i deployment del riconciliatore sono ancora nel cluster, ma non sono presenti repliche I riconciliatori o qualsiasi processo responsabile della sincronizzazione viene disponibile, pertanto le configurazioni non vengono sincronizzate dalla fonte attendibile.

Riprendi sincronizzazione

Questa sezione mostra come riprendere la sincronizzazione per la fonte attendibile principale e per con ambito a livello di spazio dei nomi.

Riprendi la sincronizzazione dalla fonte attendibile

Per riprendere la sincronizzazione da una fonte attendibile, un amministratore centrale può eseguire seguente comando:

kubectl -n config-management-system scale deployment root-reconciler --replicas=1

Questo comando esegue il ridimensionamento del deployment root-reconciler a 1 replica.

Riprendi la sincronizzazione da un'origine con ambito dello spazio dei nomi

Seleziona la scheda Metodo di origine attendibile principale o Metodo API Kubernetes per visualizzare le istruzioni pertinenti.

Metodo della fonte di riferimento principale

Se hai utilizzato il metodo Controllare le origini basate sullo spazio dei nomi in una sorgente attendibile principale, un amministratore centrale può eseguire il seguente comando:

kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=1

Questo comando scala il deployment ns-reconciler-NAMESPACE a 1 replica.

Metodo API Kubernetes

Se hai utilizzato il metodo Controllare le origini basate sullo spazio dei nomi con l'API Kubernetes, gli operatori delle applicazioni possono riprendere la sincronizzazione applicando nuovamente repo-sync.yaml che contiene la configurazione RepoSync:

kubectl apply -f repo-sync.yaml

Questo comando attiva il gestore della riconciliazione in modo che crei un riconciliatore dello spazio dei nomi e creerai un deployment ns-reconciler-NAMESPACE.

Attivare e disattivare l'webhook di ammissione

Il webhook di ammissione di Config Sync è disabilitato per impostazione predefinita e puoi attivare e disattivare la funzionalità di prevenzione della deriva fornita dal webhook di ammissione utilizzando Google Cloud CLI o kubectl.

Riprendi la sincronizzazione da tutte le fonti attendibili

Per riprendere la sincronizzazione da tutte le origini attendibili, esegui il seguente comando:

kubectl -n config-management-system scale deployment config-management-operator --replicas=1

Questo comando scala il deployment dell'operatore a 1 replica. L'Operatore nota quindi che il deployment di Reconciler Manager è scalato in modo errato e lo scala in base al numero di repliche appropriato. Alla fine, il gestore del riconciliatore esegue la scalabilità del riconciliatore principale e dei riconciliatori dello spazio dei nomi in base al corrispondente conteggio delle repliche.

Passaggi successivi