En algunas situaciones, es posible que tengas que detener rápidamente la sincronización de Config Sync desde tu fuente de información veraz. Un ejemplo de este tipo de situación es cuando alguien envía una configuración sintácticamente válida, pero incorrecta, a la fuente y quieres limitar sus efectos en los clústeres en ejecución mientras se elimina o se corrige la configuración.
Esta página está dirigida a administradores y operadores de TI que gestionan el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles habituales y las tareas de ejemplo a las que hacemos referencia en el contenido, consulta Roles y tareas habituales de los usuarios de GKE. Google Cloud
En los clústeres con la versión 1.20.0 de Config Sync o posterior, o en cualquier clúster con las actualizaciones automáticas habilitadas, el operador ConfigManagement
no se ejecuta en tu clúster.
No es necesario que detengas la sincronización manualmente siguiendo los pasos que se indican en esta página. En su lugar, puede usar el campo spec.configSync.stopSyncing
de gcloud CLI
definiendo true
en su archivo de configuración de Config Sync. A continuación, para reanudar la sincronización, asigna el valor false
al campo.
Si has instalado Config Sync manualmente con kubectl
, no puedes usar el campo stopSyncing
. En ese caso, puedes seguir los pasos que se indican en esta página para detener la sincronización manualmente. Los pasos manuales varían en función de la versión de Config Sync que esté instalada en tus clústeres.
Requisitos previos
Para usar los comandos de este documento, necesitas los siguientes permisos de RBAC de Kubernetes en los espacios de nombres config-management-system
de todos los clústeres en los que quieras detener la sincronización:
- apiGroups: ["extensions"]
resources: ["deployments", "deployments/scale"]
verbs: ["get", "update"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["list", "watch"]
Detener y reanudar la sincronización desde una fuente de información veraz
En esta sección se explica cómo detener la sincronización rápidamente y cómo reanudarla cuando se haya resuelto el problema. Para saber cómo detener la sincronización de más de una fuente de referencia, consulta el artículo sobre cómo detener y reanudar la sincronización de más de una fuente de referencia.
Dejar de sincronizar
Para detener la sincronización de un solo clúster, ejecuta el siguiente comando:
kubectl scale -n config-management-system deployment --replicas=0 --all \ && kubectl wait -n config-management-system --for=delete pods --all
Los comandos reducen a 0 el replicas
recuento de todas las implementaciones que se ejecutan en el espacio de nombres config-management-system
. El conjunto exacto de implementaciones
afectadas varía según la versión del producto.
Todas las implementaciones siguen en el clúster, pero no hay réplicas de los procesos responsables de la sincronización, por lo que las configuraciones no se sincronizan desde la fuente de información veraz.
Para verificar que se han detenido todos los procesos, usa el siguiente comando y comprueba que todas las implementaciones tienen cero réplicas:
kubectl get -n config-management-system deployment
Si necesitas detener la sincronización en varios clústeres, ejecuta los comandos anteriores en cada uno de ellos.
Reanudar la sincronización
Para reanudar la sincronización de un solo clúster, ejecuta el siguiente comando:
kubectl -n config-management-system scale deployment reconciler-manager --replicas=1
Este comando escala la implementación de Reconciler Manager a 1 réplica. A continuación, el gestor de reconciliación detecta que los pods de los deployments del espacio de nombres config-management-system
se han escalado de forma incorrecta y los escala al número de réplicas adecuado.
Si necesitas reanudar la sincronización en varios clústeres, ejecuta el comando anterior en cada uno de ellos.
Detener y reanudar la sincronización desde más de una fuente de información veraz
Esta sección es para más de una fuente de referencia y muestra cómo detener y reanudar temporalmente la sincronización de más de una fuente de referencia. Para saber cómo detener la sincronización de una única fuente de información veraz, consulta el artículo sobre cómo detener y reanudar la sincronización de una fuente de información veraz.
Solo un administrador central puede detener la sincronización en la fuente de información principal raíz.
La posibilidad de detener la sincronización en más de una fuente de información veraz depende del método de configuración que hayas usado al configurar la sincronización desde más de una fuente de información veraz:
Si se ha usado el método Controlar las fuentes en una fuente de información principal raíz, solo un administrador central puede detener y reanudar la sincronización.
Si se ha usado el método Controlar una fuente de referencia con la API de Kubernetes, los operadores de aplicaciones pueden detener y reanudar la sincronización desde las fuentes de referencia del ámbito del espacio de nombres en las que trabajan.
Dejar de sincronizar
En las siguientes secciones se explica cómo detener la sincronización de la fuente de información principal raíz y de las fuentes de información con ámbito de espacio de nombres. Para evitar que el gestor de reconciliación revierta el cambio, primero debes detenerlo ejecutando los siguientes comandos:
kubectl scale deployment -n config-management-system reconciler-manager --replicas=0 \ && kubectl wait -n config-management-system --for=delete pods -l app=reconciler-manager
Estos comandos reducen el recuento de replicas
en la implementación de Reconciler Manager a 0.
Dejar de sincronizar desde la fuente de información veraz raíz
Para detener la sincronización de un clúster desde la fuente de información principal, un administrador central puede ejecutar el siguiente comando:
kubectl -n config-management-system scale deployment root-reconciler --replicas=0
Este comando reduce el recuento de replicas
en root-reconciler
Deployment
a 0.
Si necesitas detener la sincronización en varios clústeres, ejecuta el comando anterior en cada uno de ellos.
Dejar de sincronizar desde una fuente de referencia con permisos de espacio de nombres
Selecciona la pestaña Método de fuente de referencia raíz o Método de API de Kubernetes para ver las instrucciones correspondientes.
Método de fuente de información veraz raíz
Si se ha usado el método Control namespace sources of truth in the root source of truth (Controlar las fuentes de referencia del espacio de nombres en la fuente de referencia raíz), los administradores centrales pueden ejecutar los siguientes comandos para detener la sincronización de un clúster desde una fuente de referencia del espacio de nombres:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0
El comando reduce el número de réplicas de la implementación ns-reconciler-NAMESPACE
a 0.
Si necesitas detener la sincronización en varios clústeres, ejecuta el comando anterior en cada uno de ellos.
Método de la API de Kubernetes
Si se ha usado el método Controlar las fuentes con ámbito de espacio de nombres con la API de Kubernetes, los operadores de aplicaciones pueden detener la sincronización de un clúster ejecutando los siguientes comandos:
Recupera la configuración de
RepoSync
y guárdala para usarla más adelante cuando quieras reanudar la sincronización:kubectl -n NAMESPACE get reposyncs repo-sync -oyaml > repo-sync.yaml
Sustituye
NAMESPACE
por el espacio de nombres de tu objeto RepoSync.Elimina la configuración de
RepoSync
:kubectl -n NAMESPACE delete reposyncs repo-sync
Este comando activa el gestor de reconciliación para quitar el reconciliador de espacio de nombres (
ns-reconciler-NAMESPACE
) de NAMESPACE y detiene la sincronización.Si necesitas detener la sincronización en varios clústeres, ejecuta los comandos anteriores en cada uno de ellos.
Impedir que el webhook de admisión bloquee las derivas (opcional)
El webhook de admisión de Config Sync está inhabilitado de forma predeterminada. Puedes habilitar e inhabilitar la función de prevención de desviaciones que proporciona el webhook de admisión mediante la CLI de Google Cloud o kubectl
.
Dejar de sincronizar desde todas las fuentes de información veraz
Para detener la sincronización de todas las fuentes de información veraz, incluidas la fuente de información veraz raíz y las fuentes de ámbito de espacio de nombres, ejecuta los siguientes comandos:
kubectl scale deployment -n config-management-system -l app=reconciler --replicas=0 \ && kubectl wait -n config-management-system --for=delete pods -l app=reconciler
Los comandos reducen a 0 el replicas
recuento de todos los pods de reconciliación que se ejecutan en el espacio de nombres config-management-system
y esperan hasta que se eliminen todos los pods de reconciliación.
Todas las implementaciones de reconciliador siguen en el clúster, pero no hay réplicas de los reconciliadores ni de ninguno de los procesos responsables de la sincronización, por lo que las configuraciones no se sincronizan desde la fuente de información veraz.
Reanudar la sincronización
En esta sección se explica cómo reanudar la sincronización de la fuente de información principal raíz y de las fuentes con ámbito de espacio de nombres.
Reanudar la sincronización desde la fuente de información veraz raíz
Para reanudar la sincronización desde una fuente de referencia raíz, un administrador central puede ejecutar el siguiente comando:
kubectl -n config-management-system scale deployment root-reconciler --replicas=1
Este comando escala la implementación de root-reconciler
a 1 réplica.
Reanudar la sincronización desde una fuente con ámbito de espacio de nombres
Selecciona la pestaña Método de fuente de referencia raíz o Método de API de Kubernetes para ver las instrucciones correspondientes.
Método de fuente de información veraz raíz
Si has usado el método Fuentes de ámbito de espacio de nombres de Control en una fuente de información principal raíz, un administrador central puede ejecutar el siguiente comando:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=1
Este comando escala la implementación ns-reconciler-NAMESPACE a 1 réplica.
Método de la API de Kubernetes
Si has usado el método Controlar fuentes con ámbito de espacio de nombres con la API de Kubernetes, los operadores de aplicaciones pueden reanudar la sincronización volviendo a aplicar repo-sync.yaml
, que contiene la configuración de RepoSync
:
kubectl apply -f repo-sync.yaml
Este comando activa el gestor de reconciliación para crear un proceso de reconciliación de espacio de nombres y una ns-reconciler-NAMESPACE
implementación.
Habilitar e inhabilitar el webhook de admisión
El webhook de admisión de Config Sync está inhabilitado de forma predeterminada. Puedes habilitar e inhabilitar la función de prevención de desviaciones que proporciona el webhook de admisión mediante la CLI de Google Cloud o kubectl
.
Reanudar la sincronización de todas las fuentes de información veraz
Para reanudar la sincronización, ejecuta el siguiente comando:
kubectl -n config-management-system scale deployment reconciler-manager --replicas=1
Este comando escala la implementación de Reconciler Manager a 1 réplica. A continuación, el gestor de reconciliadores ajusta la escala del reconciliador raíz y de los reconciliadores de espacio de nombres al número de réplicas correspondiente.
.