In alcune situazioni, potrebbe essere necessario interrompere rapidamente la sincronizzazione di Config Sync dalle fonti attendibili. Uno scenario di questo tipo si verifica se qualcuno esegue il commit di una configurazione valida dal punto di vista sintattico 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 e agli operatori IT che gestiscono il ciclo di vita dell'infrastruttura tecnologica sottostante. Per scoprire di più sui ruoli comuni e sulle attività di esempio a cui facciamo riferimento nei contenuti, consulta Ruoli utente e attività comuni di GKE. Google Cloud
Per i cluster con Config Sync versione 1.20.0 e successive o qualsiasi cluster con gli upgrade automatici abilitati, l'operatore ConfigManagement
non viene eseguito sul cluster.
Non è necessario interrompere manualmente la sincronizzazione seguendo i passaggi descritti in questa pagina. In alternativa, puoi utilizzare
il campo spec.configSync.stopSyncing
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 di verità e mostra come interrompere rapidamente la sincronizzazione e come riprenderla quando il problema è risolto. Per scoprire come interrompere la sincronizzazione per più di una fonte attendibile, consulta Interruzione e ripresa della sincronizzazione da più di una fonte attendibile.
Interrompere la sincronizzazione
Per interrompere la sincronizzazione per un singolo cluster, esegui questo 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 di replicas
di tutti i deployment in esecuzione nello spazio dei nomi config-management-system
. Il set esatto di deployment
interessati 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 il conteggio di
replicas
di tutti i deployment in esecuzione nello spazio dei nomiconfig-management-system
a 0. Il set esatto di deployment interessati varia in base alla versione del prodotto.
Tutti i deployment sono ancora nel cluster, ma non sono disponibili repliche dei processi responsabili della sincronizzazione, quindi le configurazioni non vengono sincronizzate dalla fonte attendibile.
Per verificare che tutti i processi siano stati interrotti, utilizza il seguente comando 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.
Riprendere la sincronizzazione
Per riprendere la sincronizzazione per un singolo cluster, esegui questo comando:
1.20.0 o versioni successive
kubectl -n config-management-system scale deployment reconciler-manager --replicas=1
Questo comando ridimensiona il deployment di Reconciler Manager a 1 replica. Il
gestore di riconciliazione nota quindi che i pod nei
deployment dello spazio dei nomi config-management-system
sono scalati in modo errato e
li scala 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 ridimensiona il deployment dell'operatore a 1 replica. L'operatore nota quindi che i pod nei deployment dello spazio dei nomi config-management-system
vengono scalati in modo errato e li ridimensiona 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
Questa sezione è dedicata a più fonti attendibili 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 Interruzione e ripresa della sincronizzazione da una fonte attendibile.
Solo un amministratore centrale può interrompere la sincronizzazione nell'origine principale della verità.
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 Controlla le origini in un'unica origine attendibile, solo un amministratore centrale può interrompere e riprendere la sincronizzazione.
Se è stato utilizzato il metodo Controllare una sorgente attendibile con l'API Kubernetes, gli operatori delle applicazioni possono interrompere e riprendere la sincronizzazione dalle sorgenti attendibili con ambito spazio dei nomi su cui lavorano.
Interrompere la sincronizzazione
Le sezioni seguenti mostrano come interrompere la sincronizzazione per l'origine principale di riferimento e le origini di riferimento con ambito spazio dei nomi. Per impedire a Reconciler Manager di ripristinare la modifica, devi prima arrestarlo 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 il conteggio di
replicas
nel deployment di Reconciler Manager a 0.
Interrompere la sincronizzazione dalla fonte attendibile principale
Per interrompere la sincronizzazione di un cluster dalla fonte attendibile principale, un amministratore centrale può eseguire questo 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 con ambito a livello di spazio dei nomi
Seleziona la scheda Metodo di origine principale di riferimento o Metodo API Kubernetes per visualizzare le istruzioni pertinenti.
Metodo della fonte attendibile principale
Se è stato utilizzato il metodo Controlla le origini attendibili dello spazio dei nomi nell'origine attendibile principale, gli amministratori centrali possono eseguire i seguenti comandi per impedire la sincronizzazione di un cluster da un'origine attendibile dello spazio dei nomi:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0
Il comando riduce il numero di repliche nel deployment ns-reconciler-NAMESPACE
a 0.
Se devi interrompere la sincronizzazione su più cluster, esegui il comando precedente per ogni cluster.
Metodo API Kubernetes
Se è stato utilizzato il metodo Controlla le origini con ambito 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 di
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 Reconciler Manager per rimuovere il riconciliatore dello spazio dei nomi (
ns-reconciler-NAMESPACE
) da NAMESPACE e interrompe la sincronizzazione.Se devi interrompere la sincronizzazione su più cluster, esegui i comandi precedenti per ogni cluster.
Impedisci al webhook di ammissione di bloccare le derive (facoltativo)
Il webhook di ammissione di Config Sync è disattivato 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 con ambito 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 il conteggio replicas
di tutti i pod di riconciliazione in esecuzione nello spazio dei nomi config-management-system
a 0 e attendono l'eliminazione di tutti i pod di riconciliazione.
Tutti i deployment di Reconciler sono ancora nel cluster, ma non sono disponibili repliche dei Reconciler o di uno dei processi responsabili della sincronizzazione, quindi le configurazioni non vengono sincronizzate dalla fonte attendibile.
Riprendere la sincronizzazione
Questa sezione mostra come riprendere la sincronizzazione per l'origine principale di riferimento e per le origini con ambito spazio dei nomi.
Riprendere la sincronizzazione dalla fonte 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 scala il deployment root-reconciler
a 1 replica.
Riprendere la sincronizzazione da un'origine con ambito spazio dei nomi
Seleziona la scheda Metodo di origine principale di riferimento o Metodo API Kubernetes per visualizzare le istruzioni pertinenti.
Metodo della fonte attendibile principale
Se hai utilizzato il metodo Controlla le origini con ambito spazio dei nomi in un'origine principale attendibile, 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 con ambito namespace con l'API Kubernetes, gli operatori delle applicazioni possono riprendere la sincronizzazione riapplicando 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 creare un deployment ns-reconciler-NAMESPACE
.
Attivare e disattivare il webhook di ammissione
Il webhook di ammissione di Config Sync è disattivato 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
.
Riprendere 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 ridimensiona il deployment di Reconciler Manager a 1 replica. Il gestore di riconciliazione scala quindi il riconciliatore principale e i riconciliatori dello spazio dei nomi 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 ridimensiona il deployment dell'operatore a 1 replica. L'operatore nota quindi che il deployment di Reconciler Manager è scalato in modo errato e lo scala al numero di repliche appropriato. Alla fine, Reconciler Manager ridimensiona il riconciliatore principale e i riconciliatori dello spazio dei nomi in base al numero di repliche corrispondente.