El plugin kubectl mongodb siempre añade la anotación mongodb.com/migration-dry-run: true al recurso que genera para migrar una implementación a Kubernetes. Mientras esa anotación esté presente, el operador de Kubernetes no realiza cambios en la configuración de automatización. Solo valida la conectividad y las credenciales, para que pueda solucionar problemas y volver a ejecutar tantas veces como sea necesario antes de que el operador de Kubernetes se haga cargo de la implementación.
Acerca de esta tarea
El operador de Kubernetes crea una tarea por cada recurso
MongoDB, denominada<resourceName>-connectivity-check. La tarea llama a cada nodo externo y se autentica en él. Se borrar a sí misma mediantettlSecondsAfterFinished, y la siguiente conciliación la vuelve a crear, por lo que la re-validación después de una corrección es automática. No es necesario activarla manualmente.La ejecución de prueba comprueba la accesibilidad de Kubernetes a la máquina virtual (DNS, TLS, firewalls y direcciones de nodo) y las credenciales, incluido el rol
__systemen la base de datoslocal, y la CA cuando TLS está habilitado.La ejecución de prueba no comprueba la conectividad de entrada de máquina virtual a Kubernetes. Verifique esa dirección usted mismo, ya sea a través del estado de supervisión de la Interfaz de Usuario de Ops Manager para la implementación o ejecutando
rs.status()desde un nodo de máquina virtual y confirmando que puede llegar a los Pods de Kubernetes.La comprobación de la versión del plugin y del operador de Kubernetes se ejecuta independientemente de si la anotación de ejecución en seco está presente.
Antes de comenzar
Un recurso personalizado
MongoDBgenerado con la anotaciónmongodb.com/migration-dry-run: truetodavía presente. Para aprender a generar este recurso, consulte Migrar un set de réplicas a Kubernetes.Si la implementación utiliza TLS, los certificados de nodo y el material de CA descritos en Configurar TLS para una migración a Kubernetes.
El operador de Kubernetes
ServiceAccounttienebatch/jobspermisos (create,get,list,watchydelete). Sin este permiso, el operador de Kubernetes no puede crear la tarea de validación de conectividad en absoluto.
Procedimiento
Aplicar el recurso y dejar que la ejecución de prueba se ejecute.
Aplicar el recurso personalizado MongoDB con la anotación dry-run aún establecida. El operador de Kubernetes crea la tarea <resourceName>-connectivity-check e informa del progreso a través de status.phase y la condición NetworkConnectivityVerified.
Mientras la tarea se ejecuta, status.phase lee ConnectivityCheckRunning.
Leer el resultado.
Leer status.conditions[type=NetworkConnectivityVerified]:
Código de salida de la tarea del validador | Estado de la condición | Razón | Significado |
|---|---|---|---|
Tarea aún en ejecución |
|
| El |
|
|
| Todos los nodos externos son accesibles y están autenticados. |
|
|
| Credenciales, el mecanismo de autenticación o un rol |
|
|
| DNS, TLS, tiempos de espera o nodos inaccesibles. Compruebe el registro de la tarea Pod. |
|
|
| Error sin clasificar. Compruebe el registro de la tarea Pod. |
Los errores que se producen antes de que se inicie la tarea utilizan los motivos OperatorImageUnknown, BuildStatefulSetOptions, AgentCertSecretFailed y AgentCertSubject.
El operador de Kubernetes remueve la condición NetworkConnectivityVerified de status.conditions por completo una vez que no queden nodos externos.
Solucionar problemas y volver a ejecutar, si es necesario.
Solucione los problemas de conectividad o de credenciales en Kubernetes o en la Interfaz de Usuario de MongoDB Ops Manager, según sea necesario. No es necesario borrar ni volver a aplicar nada: la siguiente conciliación vuelve a crear la tarea de validación automáticamente.
Si la ejecución de prueba parece atascada, borre la tarea <resourceName>-connectivity-check. La siguiente conciliación la vuelve a crear.
Una concesión RBAC batch/jobs faltante en el operador de Kubernetes ServiceAccount impide que la tarea se cree en primer lugar, por lo que en ese caso no aparece ninguna condición ni tarea. Los errores que se producen antes de que se inicie la tarea aparecen como motivos OperatorImageUnknown, BuildStatefulSetOptions, AgentCertSecretFailed o AgentCertSubject en lugar de los motivos de código de salida de la tabla anterior.
Remueve la anotación dry-run para continuar.
Cuando la condición NetworkConnectivityVerified es True con el motivo NetworkValidationPassed, remover la anotación:
kubectl annotate mdb <resourceName> \ mongodb.com/migration-dry-run-Importante
Remover la anotación de ejecutar de prueba es el punto en el que Kubernetes operador asume la propiedad del proyecto de Ops Manager o Cloud Manager. Trate esto como el punto de no retorno para el estado de conectividad y credenciales que acaba de validar.