In alcune situazioni, potrebbe essere necessario interrompere rapidamente la sincronizzazione delle configurazioni a Config Sync dalla tua fonte attendibile. Uno di questi scenari è se qualcuno esegue il commit di una configurazione sintattica valida ma errata nell'origine e vuoi limitarne gli effetti sui cluster in esecuzione mentre la configurazione viene rimossa o corretta.
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 attendibile e illustra come interrompere la sincronizzazione rapidamente e come riprenderla dopo aver risolto il problema. Per informazioni su come interrompere la sincronizzazione per più origini dati attendibili, consulta l'articolo su come interrompere e riprendere la sincronizzazione da più origini dati.
Interrompi sincronizzazione
Per interrompere la sincronizzazione per un singolo cluster, esegui questi comandi, che vengono forniti come singolo comando per comodità, ma possono anche essere eseguiti 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, i comandi rimanenti non vengono eseguiti.
- Riduci il conteggio di
replicas
nel deployment dell'operatore ConfigManagement a 0. - Riduci a 0 il numero di
replicas
di tutti i deployment in esecuzione nello spazio dei nomiconfig-management-system
. L'insieme esatto di deployment interessati varia a seconda della versione del prodotto.
Tutti i deployment si trovano ancora nel cluster, ma non sono disponibili repliche dell'operatore o dei processi responsabili della sincronizzazione, quindi le configurazioni non vengono sincronizzate dalla fonte attendibile.
Per verificare che tutti i processi siano stati arrestati, utilizza il comando seguente 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 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. L'operatore nota poi che i pod nello spazio dei nomi config-management-system
dei deployment non vengono scalati correttamente e li scala 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ù fonti attendibili
La sezione riguarda più di una fonte di riferimento e mostra come interrompere temporaneamente e riprendere la sincronizzazione da più fonti. Per informazioni su come interrompere la sincronizzazione per un'unica fonte attendibile, consulta l'articolo su come interrompere e riprendere la sincronizzazione da una fonte attendibile.
Solo un amministratore centrale può interrompere la sincronizzazione nella fonte attendibile principale.
La possibilità di interrompere la sincronizzazione in più fonti attendibili dipende dal metodo di configurazione utilizzato durante la configurazione della sincronizzazione da più fonti attendibili:
Se è stato utilizzato il metodo Controlla le origini in una fonte attendibile, l'amministratore centrale è l'unico che può interrompere e riprendere la sincronizzazione.
Se è stato utilizzato il metodo Controlla una fonte attendibile con l'API Kubernetes, gli operatori delle applicazioni possono interrompere e riprendere la sincronizzazione dalle fonti di riferimento basate sullo spazio dei nomi su cui lavorano.
Interrompi sincronizzazione
Le sezioni seguenti mostrano come interrompere la sincronizzazione per la fonte attendibile principale e quelle basate sullo spazio dei nomi. Per impedire a Gestore riconciliatore di ripristinare la modifica, devi prima arrestarlo eseguendo questi 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.
- Riduci il conteggio di
replicas
nel deployment dell'operatore ConfigManagement a 0. - Riduci il numero di
replicas
nel deployment di Reconciler Manager a 0.
Interrompi la sincronizzazione dalla fonte attendibile
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
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 attendibilità principale o la scheda Metodo API Kubernetes per visualizzare le istruzioni pertinenti.
Metodo della fonte di riferimento principale
Se è stato utilizzato il metodo Controlla le origini attendibili dello spazio dei nomi nella fonte principale di riferimento, gli amministratori centrali possono eseguire i comandi seguenti per interrompere la sincronizzazione di 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 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 dello 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 vorrai 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
RepoSync
:kubectl -n NAMESPACE delete reposyncs repo-sync
Questo comando attiva il gestore riconciliatore per rimuovere il riconciliatore dello spazio dei nomi (
ns-reconciler-NAMESPACE
) da NAMESPACE e interrompere la sincronizzazione.Se devi interrompere la sincronizzazione su più cluster, esegui i comandi precedenti per ogni cluster.
(Facoltativo) Impedisci al webhook di ammissione di bloccare le deviazioni
Il webhook di ammissione di Config Sync è disabilitato per impostazione predefinita e puoi
enable e
disattivare la funzionalità di prevenzione
della deviazione 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 origini attendibili, incluse quelle con ambito basato su spazio dei nomi e quelle principali, esegui questi 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 numero di replicas
di tutti i pod di riconciliazione in esecuzione nello spazio dei nomi config-management-system
e attendono l'eliminazione di tutti i pod del riconciliazione.
Tutti i deployment dei riconciliatori sono ancora nel cluster, ma non sono disponibili repliche dei riconciliatori o dei processi responsabili della sincronizzazione, quindi le configurazioni non vengono sincronizzate dalla fonte attendibile.
Riprendi sincronizzazione
Questa sezione mostra come riprendere la sincronizzazione per l'origine attendibile principale e per le origini 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 questo comando:
kubectl -n config-management-system scale deployment root-reconciler --replicas=1
Questo comando scala il deployment root-reconciler
a 1 replica.
Riprendi la sincronizzazione da un'origine con ambito dello spazio dei nomi
Seleziona il Metodo della fonte di attendibilità principale o la scheda Metodo API Kubernetes per visualizzare le istruzioni pertinenti.
Metodo della fonte di riferimento principale
Se hai utilizzato il metodo Controlla le origini con ambito dello spazio dei nomi in una fonte attendibile, un amministratore centrale può eseguire il comando seguente:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=1
Questo comando scala il deployment ns-reconciler-NAMESPACE in 1 replica.
Metodo API Kubernetes
Se hai utilizzato il metodo Controlla le origini con ambito dello 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 processo di riconciliazione dello spazio dei nomi e crei un deployment ns-reconciler-NAMESPACE
.
Attiva e disattiva il webhook di ammissione
Il webhook di ammissione di Config Sync è disabilitato per impostazione predefinita e puoi
enable e
disattivare la funzionalità di prevenzione
della deviazione 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 fonti attendibili, 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. L'operatore nota poi che il deployment di Gestore riconciliazione non è correttamente scalato e lo ridimensiona al numero di repliche appropriato. Alla fine, il Gestore riconciliatore scala i riconciliatori dei riconciliatori radice e dello spazio dei nomi in base al numero di repliche corrispondente.