In alcuni casi, potrebbe essere necessario interrompere rapidamente la sincronizzazione delle configurazioni da Config Sync dalla tua fonte attendibile. Uno di questi scenari si verifica quando qualcuno esegue il commit di una configurazione sintatticamente valida, ma errata, nell'origine e vuoi limitarne gli effetti sui 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, consulta Ruoli e attività comuni degli utenti di GKE Enterprise. Google Cloud
Per i cluster su Config Sync versione 1.20.0 e successive o per qualsiasi cluster con gli upgrade automatici abilitati, l'operatore ConfigManagement
non viene eseguito sul cluster.
Non è necessario interrompere manualmente la sincronizzazione seguendo i passaggi indicati in questa pagina. In alternativa, puoi utilizzare
spec.configSync.stopSyncing
campo
dell'interfaccia a riga di comando gcloud impostando true
nel file di configurazione di Config Sync. Quindi, per riprendere la sincronizzazione, imposta il campo su
false
.
Se hai installato Config Sync manualmente utilizzando kubectl
, non puoi utilizzare il campo stopSyncing
. In questo caso, puoi seguire i passaggi descritti in questa pagina per interrompere manualmente la sincronizzazione. I passaggi manuali variano a seconda della versione di Config Sync installata sui cluster.
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 una singola fonte attendibile e mostra come interrompere rapidamente la sincronizzazione e come riprendere la sincronizzazione una volta risolto il problema. Per scoprire come interrompere la sincronizzazione per più di una fonte attendibile, consulta Interrompere e riprendere la sincronizzazione da più di una fonte attendibile.
Interrompere la sincronizzazione
Per interrompere la sincronizzazione per un singolo cluster, esegui il seguente comando:
1.20.0 o versioni successive
kubectl scale -n config-management-system deployment --replicas=0 --all \ && kubectl wait -n config-management-system --for=delete pods --all
I comandi riducono a 0 il conteggio replicas
di tutti i deployment in esecuzione nello spazio dei nomi config-management-system
. L'insieme esatto di implementazioni
interessato varia in base alla versione del prodotto.
1.19.2 o versioni precedenti
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, i comandi rimanenti non vengono eseguiti.
- Riduci a 0 il conteggio di
replicas
nel deployment dell'operatore ConfigManagement. - Riduci a 0 il conteggio
replicas
di tutti i deployment in esecuzione nello spazio dei nomiconfig-management-system
. L'insieme esatto di implementazioni interessato varia in base alla versione del prodotto.
Tutti i deployment sono ancora nel cluster, ma non sono disponibili repliche dei processi responsabili della sincronizzazione, pertanto le configurazioni non vengono sincronizzate dalla fonte di riferimento.
Per verificare che tutte le procedure siano state interrotte, utilizza il seguente comando e verifica che tutti i deployment non abbiano repliche:
kubectl get -n config-management-system deployment
Se devi interrompere la sincronizzazione su più cluster, esegui i comandi precedenti per ogni cluster.
Ripristinare la sincronizzazione
Per riprendere la sincronizzazione per un singolo cluster, esegui il seguente comando:
1.20.0 o versioni successive
kubectl -n config-management-system scale deployment reconciler-manager --replicas=1
Questo comando esegue la scalabilità del deployment del gestore del riconciliatore a 1 replica. Il gestore del riconciliatore nota quindi che i pod nei deployment dello spazio dei nomi config-management-system
sono scalati in modo errato e li scala in base al numero di repliche appropriato.
1.19.2 o versioni precedenti
kubectl -n config-management-system scale deployment config-management-operator --replicas=1
Questo comando esegue il ridimensionamento del deployment dell'operatore a 1 replica. L'Operatore nota quindi che i pod nei deployment dello spazio dei nomi config-management-system
sono scalati in modo errato 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 è dedicata a più di una fonte attendibile e mostra come interrompere temporaneamente e riprendere la sincronizzazione da più di una fonte attendibile. 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ù di una fonte attendibile dipende dal metodo di configurazione utilizzato quando hai configurato la sincronizzazione da più di una fonte attendibile:
Se è stato utilizzato il metodo Controllare le origini in una fonte attendibile principale, un amministratore centrale è l'unico che può interrompere e riprendere la sincronizzazione.
Se è stato utilizzato il metodo Controlla una sorgente di dati con l'API Kubernetes, gli operatori delle applicazioni possono interrompere e riprendere la sincronizzazione dalle sorgenti di dati basate sul nome del namespace su cui lavorano.
Interrompere la 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:
1.20.0 o versioni successive
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 riducono a 0 il conteggio di replicas
nel deployment di Reconciler Manager.
1.19.2 o versioni precedenti
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 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.
- Riduci a 0 il conteggio di
replicas
nel deployment dell'operatore ConfigManagement. - Riduci a 0 il conteggio di
replicas
nel deployment di Reconciler Manager.
Interrompere la sincronizzazione dalla fonte attendibile principale
Per interrompere la sincronizzazione di un cluster dall'origine della verità principale, un amministratore centrale può eseguire il seguente comando:
kubectl -n config-management-system scale deployment root-reconciler --replicas=0
Questo comando riduce il conteggio di replicas
nel root-reconciler
Deployment
a 0.
Se devi interrompere la sincronizzazione su più cluster, esegui il comando precedente per ogni cluster.
Interrompere la sincronizzazione dalla fonte attendibile basata sullo spazio dei nomi
Seleziona la scheda Metodo di origine attendibile principale o Metodo API Kubernetes per visualizzare le istruzioni pertinenti.
Metodo dell'origine attendibile principale
Se è stato utilizzato il metodo Controlla le sorgenti di dati dello spazio dei nomi nella sorgente di dati principale, gli amministratori centrali possono eseguire i seguenti comandi per interrompere la sincronizzazione di un cluster da una sorgente di dati dello spazio dei nomi:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0
Il comando riduce a 0 il numero di repliche nel deployment ns-reconciler-NAMESPACE
.
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:
Recupera la configurazione
RepoSync
e salvala per utilizzarla in un secondo momento quando 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.Elimina la configurazione di
RepoSync
:kubectl -n NAMESPACE delete reposyncs repo-sync
Questo comando attiva il gestore del riconciliatore per rimuovere il riconciliatore del nome di spazio (
ns-reconciler-NAMESPACE
) da NAMESPACE e interrompe la sincronizzazione.Se devi interrompere la sincronizzazione su più cluster, esegui i comandi precedenti per ogni cluster.
Impedire al webhook di ammissione di bloccare le derive (facoltativo)
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
.
Interrompere 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 dei riconciliatori sono ancora nel cluster, ma non sono disponibili repliche dei riconciliatori o dei processi responsabili della sincronizzazione, pertanto le configurazioni non vengono sincronizzate dalla fonte di riferimento.
Ripristinare la sincronizzazione
Questa sezione mostra come riprendere la sincronizzazione per l'origine della verità principale e per le origini basate sullo spazio dei nomi.
Ripristinare la sincronizzazione dall'origine attendibile principale
Per riprendere la sincronizzazione da una fonte attendibile principale, un amministratore centrale può eseguire il 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.
Ripristinare la sincronizzazione da un'origine basata sullo spazio dei nomi
Seleziona la scheda Metodo di origine attendibile principale o Metodo API Kubernetes per visualizzare le istruzioni pertinenti.
Metodo dell'origine attendibile 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 esegue il ridimensionamento del deployment ns-reconciler-NAMESPACE a 1 replica.
Metodo dell'API Kubernetes
Se hai utilizzato il metodo Controllare le origini basate sul nome del namespace 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 Reconciler Manager per creare un processo di riconciliazione dello spazio dei nomi e 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
.
Ripristinare la sincronizzazione da tutte le fonti attendibili
1.20.0 o versioni successive
kubectl -n config-management-system scale deployment reconciler-manager --replicas=1
Questo comando esegue la scalabilità del deployment del gestore del riconciliatore a 1 replica. Il gestore del riconciliatore esegue la scalabilità del riconciliatore principale e dei riconciliatori dello spazio dei nomi in base al numero di repliche corrispondente.
1.19.2 o versioni precedenti
kubectl -n config-management-system scale deployment config-management-operator --replicas=1
Questo comando esegue il ridimensionamento del 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 numero di repliche corrispondente.