En algunas situaciones, es posible que debas detener rápidamente el Sincronizador de configuración de tu fuente de información. Una de ellas es si se confirma una configuración sintácticamente válida pero incorrecta en la fuente, y deseas limitar sus efectos en los clústeres en ejecución mientras se quita o corrige la configuración.
Esta página está destinada a administradores de TI y operadores que administran el ciclo de vida de la infraestructura tecnológica subyacente. Para obtener más información sobre los roles comunes y las tareas de ejemplo a las que hacemos referencia en el contenido de Google Cloud , consulta Tareas y roles comunes de los usuarios de GKE Enterprise.
En el caso de los clústeres con la versión 1.20.0 del Sincronizador de configuración y versiones posteriores, o cualquier clúster con las actualizaciones automáticas habilitadas, el operador ConfigManagement
no se ejecuta en tu clúster.
No es necesario que sigas los pasos de esta página para detener la sincronización de forma manual. En su lugar, puedes usar el campo spec.configSync.stopSyncing
de gcloud CLI si configuras true
en el archivo de configuración del Sincronizador de configuración. Luego, para reanudar la sincronización, configura el campo como false
.
Si instalaste el Sincronizador de configuración de forma manual con kubectl
, no puedes usar el campo stopSyncing
. En este caso, puedes seguir los pasos que se indican en esta página para detener la sincronización de forma manual. Los pasos manuales difieren según la versión del
Sincronizador de configuración que esté instalada en tus clústeres.
Requisitos previos
Para usar los comandos de este documento, necesitas los siguientes permisos RBAC de Kubernetes en los espacios de nombres config-management-system
en todos los clústeres donde deseas detener la sincronización:
- apiGroups: ["extensions"]
resources: ["deployments", "deployments/scale"]
verbs: ["get", "update"]
- apiGroups: [""]
resources: ["pods"]
verbs: ["list", "watch"]
Detén y reanuda la sincronización desde una fuente de información
En esta sección, se muestra cómo detener la sincronización con rapidez y cómo reanudar la sincronización cuando se soluciona el problema. Para obtener información sobre cómo detener la sincronización de más de una fuente de información, consulta Detén y reanuda la sincronización de más de una fuente de información.
Detén la sincronización
Para detener la sincronización de un solo clúster, ejecuta el siguiente comando:
1.20.0 o una versión posterior
kubectl scale -n config-management-system deployment --replicas=0 --all \ && kubectl wait -n config-management-system --for=delete pods --all
Los comandos reducen el recuento de replicas
de todos los Deployments que se ejecutan en el espacio de nombres config-management-system
a 0. El conjunto exacto de Deployments afectados varía según la versión del producto.
1.19.2 o una versión anterior
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
Los comandos hacen lo siguiente, en secuencia. Si un comando falla, los comandos restantes no se ejecutan.
- Reduce el recuento de
replicas
a 0 en la implementación del operador de Config Management. - Reduce el recuento de
replicas
de todos los Deployments que se ejecutan en el espacio de nombresconfig-management-system
a 0. El conjunto exacto de Deployments afectados varía según la versión del producto.
Todas las implementaciones aún se encuentran 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 verdad.
Para verificar que se hayan detenido todos los procesos, usa el siguiente comando y verifica que todas las implementaciones tengan cero réplicas:
kubectl get -n config-management-system deployment
Si necesitas detener la sincronización en varios clústeres, ejecuta los comandos anteriores para cada uno.
Reanuda la sincronización
Para reanudar la sincronización de un solo clúster, ejecuta el siguiente comando:
1.20.0 o una versión posterior
kubectl -n config-management-system scale deployment reconciler-manager --replicas=1
Este comando escala la implementación del Administrador de conciliadores a 1 réplica. Luego, el administrador de conciliadores observa que los Pods en las implementaciones del espacio de nombres config-management-system
se escalan de forma incorrecta y los escala según su recuento de réplicas adecuado.
1.19.2 o una versión anterior
kubectl -n config-management-system scale deployment config-management-operator --replicas=1
Este comando escala la implementación del operador a 1 réplica. Luego, el operador observa que los Pods en las implementaciones del espacio de nombres config-management-system
se escalan de forma incorrecta y los escala según su recuento de réplicas adecuado.
Si necesitas reanudar la sincronización en varios clústeres, ejecuta el comando anterior para cada uno.
Detén y reanuda la sincronización desde más de una fuente de información
La sección es para más de una fuente de información y te muestra cómo detener y reanudar temporalmente la sincronización desde más de una fuente de información. Si deseas obtener más información para detener la sincronización de una sola fuente de información, consulta Detén y reanuda la sincronización desde una fuente de información.
Solo un administrador central puede detener la sincronización en la fuente de información raíz.
La capacidad de detener la sincronización en más de una fuente de información depende del método de configuración que se usó cuando configuraste la sincronización desde más de una fuente de información:
Si se usó el método de control de fuentes en una fuente de información raíz, un administrador central es el único que puede detener y reanudar la sincronización.
Si se usó el método de control de una fuente de información con la API de Kubernetes, los operadores de la aplicación pueden detener y reanudar la sincronización desde las fuentes con alcance de espacio de nombres en las que operan.
Detén la sincronización
En las siguientes secciones, se muestra cómo detener la sincronización para la fuente de información raíz y las fuentes de verdad con alcance de espacio de nombres. Para evitar que el administrador de conciliadores revierta el cambio, primero debes detenerlo con los siguientes comandos:
1.20.0 o una versión posterior
kubectl scale deployment -n config-management-system reconciler-manager --replicas=0 \ && kubectl wait -n config-management-system --for=delete pods -l app=reconciler-manager
Los comandos reducen el recuento de replicas
a 0 en la implementación del administrador de conciliadores.
1.19.2 o una versión anterior
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
Los comandos hacen lo siguiente, en secuencia. Si un comando falla, los comandos restantes no se ejecutan.
- Reduce el recuento de
replicas
a 0 en la implementación del operador de Config Management. - Reduce el recuento de
replicas
a 0 en la implementación del administrador de conciliadores.
Detén la sincronización desde la fuente de información raíz
Para detener la sincronización de un clúster desde la fuente de información raíz, un administrador central puede ejecutar el siguiente comando:
kubectl -n config-management-system scale deployment root-reconciler --replicas=0
Mediante este comando, se reduce el recuento de replicas
en el Deployment de root-reconciler
a 0.
Si necesitas detener la sincronización en varios clústeres, ejecuta el comando anterior para cada uno.
Detén la sincronización desde la fuente de verdad con alcance de espacio de nombres
Selecciona la pestaña Método de fuente de información raíz o Método de la API de Kubernetes para ver las instrucciones relevantes.
Método de fuente de confianza raíz
Si se usó el método de Control de fuentes de información con alcance de espacio de nombres en la fuente de información raíz, los administradores centrales pueden ejecutar los siguientes comandos para detener la sincronización del clúster desde una fuente de información con alcance de espacio de nombres:
kubectl -n config-management-system scale deployment ns-reconciler-NAMESPACE --replicas=0
Mediante el comando, se reduce el recuento de réplicas en el Deployment de ns-reconciler-NAMESPACE
a 0.
Si necesitas detener la sincronización en varios clústeres, ejecuta el comando anterior para cada uno.
Método de la API de Kubernetes
Si se usó el método de control de las fuentes con alcance de espacio de nombres con la API de Kubernetes, los operadores de la aplicación pueden detener la sincronización del clúster mediante la ejecución de 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
Reemplaza
NAMESPACE
por el espacio de nombres de RepoSync.Borra la configuración de
RepoSync
:kubectl -n NAMESPACE delete reposyncs repo-sync
Mediante este comando, se activa el Administrador de conciliadores para quitar el conciliador de espacios de nombres (
ns-reconciler-NAMESPACE
) de NAMESPACE y se detiene la sincronización.Si necesitas detener la sincronización en varios clústeres, ejecuta los comandos anteriores para cada uno.
Detén el webhook de admisión del bloqueo de desvíos (opcional)
El webhook de admisión del Sincronizador de configuración está inhabilitado de forma predeterminada, y puedes habilitar y inhabilitar la funcionalidad de prevención de desvío que proporciona el webhook de admisión mediante Google Cloud CLI o kubectl
.
Detén la sincronización desde todas las fuentes de información
Para detener la sincronización de todas las fuentes de información, incluidas la fuente de información raíz y las fuentes con alcance 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 el recuento de replicas
de todos los Pods de conciliador que se ejecutan en el espacio de nombres config-management-system
a 0 y esperan hasta que se borren todos los Pods de conciliador.
Todas las implementaciones de conciliadores aún se encuentran en el clúster, pero no hay réplicas de conciliador ni ninguno de los procesos responsables de la sincronización, por lo que los parámetros de configuración no se sincronizan desde la fuente de verdad.
Reanuda la sincronización
En esta sección, se muestra cómo reanudar la sincronización de la fuente de información raíz y las fuentes con alcance de espacio de nombres.
Reanuda la sincronización desde la fuente de información raíz
Para reanudar la sincronización desde una fuente de información raíz, un administrador central puede ejecutar el siguiente comando:
kubectl -n config-management-system scale deployment root-reconciler --replicas=1
Este comando escala el Deployment root-reconciler
a 1 réplica.
Reanuda la sincronización desde una fuente con alcance de espacio de nombres
Selecciona la pestaña Método de fuente de información raíz o Método de la API de Kubernetes para ver las instrucciones relevantes.
Método de fuente de confianza raíz
Si usaste el método Controla fuentes de información con alcance de espacio de nombres en una fuente de información 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 el Deployment ns-reconciler-NAMESPACE a 1 réplica.
Método de la API de Kubernetes
Si usaste el método de Control de la fuente con alcance de espacio de nombres con la API de Kubernetes, los operadores de la aplicación pueden reanudar la sincronización si vuelven a aplicar el archivo repo-sync.yaml
que contiene la configuración de RepoSync
:
kubectl apply -f repo-sync.yaml
Con este comando, se activa el administrador de conciliadores para crear un proceso de conciliación de espacios de nombres y crear un Deployment ns-reconciler-NAMESPACE
.
Habilita e ihnabilita el webhook de admisión
El webhook de admisión del Sincronizador de configuración está inhabilitado de forma predeterminada, y puedes habilitar y inhabilitar la funcionalidad de prevención de desvío que proporciona el webhook de admisión mediante Google Cloud CLI o kubectl
.
Reanuda la sincronización desde todas las fuentes de información
1.20.0 o una versión posterior
kubectl -n config-management-system scale deployment reconciler-manager --replicas=1
Este comando escala la implementación del Administrador de conciliadores a 1 réplica. Luego, el administrador de conciliadores escala el conciliador raíz y los conciliadores de espacio de nombres al recuento de réplicas correspondiente.
1.19.2 o una versión anterior
kubectl -n config-management-system scale deployment config-management-operator --replicas=1
Este comando escala la implementación del operador a 1 réplica. Luego, el operador observa que la implementación del administrador de conciliadores se escala de forma incorrecta y la escala al recuento de réplicas adecuado. Al final, el administrador de conciliadores escala el conciliador raíz y los conciliadores de espacio de nombres al recuento de réplicas correspondiente.