El complemento kubectl mongodb siempre agrega la anotación mongodb.com/migration-dry-run: true al recurso que genera para migrar un despliegue a Kubernetes. Mientras esta anotación esté presente, Kubernetes Operator no realiza cambios en la configuración de automatización. Solo valida la conectividad y las credenciales, por lo que puede solucionar problemas y volver a ejecutar el proceso tantas veces como sea necesario antes de que Kubernetes Operator tome el control del despliegue.
Acerca de esta tarea
El operador de Kubernetes crea un trabajo por cada recurso
MongoDB, denominado<resourceName>-connectivity-check. Este trabajo se conecta a cada miembro externo y se autentica. Se elimina mediantettlSecondsAfterFinished, y la siguiente reconciliación lo vuelve a crear, por lo que la revalidación tras una corrección es automática. No es necesario activarla manualmente.La prueba preliminar verifica la accesibilidad de Kubernetes a la máquina virtual (DNS, TLS, cortafuegos y direcciones de miembros) y las credenciales, incluido el rol
__systemen la base de datoslocaly la CA cuando TLS está habilitado.La prueba en seco no comprueba la conectividad entrante entre la máquina virtual y Kubernetes. Verifique usted mismo esta dirección, ya sea a través de la interfaz de usuario de Ops Manager para supervisar el estado del despliegue o ejecutando
rs.status()desde una máquina virtual miembro y confirmando que puede acceder 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 prueba está presente.
Antes de comenzar
Se generó un recurso personalizado
MongoDBcon la anotaciónmongodb.com/migration-dry-run: trueaún presente. Para obtener información sobre cómo generar este recurso, consulte Migrar un conjunto de réplicas a Kubernetes.Si el despliegue utiliza TLS, se deben usar los certificados de miembro y el material de CA descritos en Configurar TLS para una migración a Kubernetes.
El operador de Kubernetes
ServiceAccounttiene permisosbatch/jobs(create,get,list,watchydelete). Sin esta autorización, el operador de Kubernetes no puede crear el trabajo del validador de conectividad.
Procedimiento
Aplique el recurso y deje que se realice la prueba.
Aplique el recurso personalizado MongoDB con la anotación dry-run aún establecida. El operador de Kubernetes crea el trabajo <resourceName>-connectivity-check e informa del progreso a través de status.phase y la condición NetworkConnectivityVerified.
Mientras se ejecuta el trabajo, status.phase lee ConnectivityCheckRunning.
Lee el resultado.
Leer status.conditions[type=NetworkConnectivityVerified]:
Código de salida del trabajo del validador | Estado de la condición | Razón | Significado |
|---|---|---|---|
El trabajo sigue en marcha. |
|
| The |
|
|
| Todos los miembros externos son accesibles y están autenticados. |
|
|
| Credentials, the authentication mechanism, or a missing |
|
|
| Problemas con DNS, TLS, tiempos de espera o miembros inaccesibles. Consulte los registros del Job Pod. |
|
|
| Error no clasificado. Compruebe los registros del Job Pod. |
Failures that occur before the Job starts use the reasons OperatorImageUnknown, BuildStatefulSetOptions, AgentCertSecretFailed, and AgentCertSubject.
Kubernetes Operator removes the NetworkConnectivityVerified condition from status.conditions entirely once no external members remain.
Solucione los problemas y vuelva a ejecutar el programa, si es necesario.
Solucione los problemas de conectividad o credenciales en Kubernetes o en la interfaz de usuario de Ops Manager, según sea necesario. No es necesario eliminar ni volver a aplicar nada: la siguiente reconciliación recreará automáticamente el trabajo del validador.
Si la prueba en seco parece bloqueada, elimine el trabajo <resourceName>-connectivity-check. La siguiente conciliación lo recreará.
La falta de una concesión RBAC batch/jobs en el operador de Kubernetes ServiceAccount impide que se cree el trabajo, por lo que en ese caso no aparece ninguna condición ni trabajo. Los fallos que se producen antes de que comience el trabajo se muestran como motivos OperatorImageUnknown, BuildStatefulSetOptions, AgentCertSecretFailed o AgentCertSubject en lugar de los motivos de código de salida de la tabla anterior.
Elimine la anotación de prueba para continuar.
Cuando la condición NetworkConnectivityVerified es True con razón NetworkValidationPassed, elimine la anotación:
kubectl annotate mdb <resourceName> \ mongodb.com/migration-dry-run-
Importante
Al eliminar la anotación de prueba, Kubernetes Operator toma posesión del proyecto Ops Manager o Cloud Manager. Considere esto como el punto de no retorno para la conectividad y el estado de las credenciales que acaba de validar.