Importante
La configuración de esta página permite migrar una implementación autogestionada a Kubernetes bajo el operador de Kubernetes. No los establezca en un recurso MongoDB que implemente directamente en Kubernetes sin una migración que lo acompañe.
Esta página documenta los campos de recursos MongoDB, las condiciones de estado y las anotaciones que se aplican únicamente durante una migración desde una implementación autogestionada de máquina virtual a Kubernetes. Para el conjunto completo de MongoDB configuraciones de recursos, consulta Especificación de recursos de base de datos de MongoDB.
Nodos externos
Estos campos identifican la máquina virtual de origen o los procesos bare-metal que una migración está extendiendo a Kubernetes. Se aplican al recurso MongoDB, apiVersion: mongodb.com/v1.
Importante
Estos campos existen solo para migración. No los configure en un recurso MongoDB para una implementación de Kubernetes nueva.
spec.externalMembersTipo: arreglo de
ExternalMemberobjetosLos procesos de origen de la máquina virtual o bare-metal que forman parte de la migración. Este campo existe solo para migración.
Puedes remover entradas de esta lista, pero nunca debes agregar entradas una vez que la migración haya comenzado. Una lista
spec.externalMembersvacía significa que la migración ha finalizado.
spec.externalMembers[].processNameTipo: string
Requerido
Este campo existe solo para migración. El nombre del proceso exactamente como aparece en el arreglo
processesde la configuración de automatización.
spec.externalMembers[].hostnameTipo: string
Requerido
Este campo existe solo para migración. El valor de
host:portpara el proceso, exactamente como aparece en la configuración de automatización.
Sobrescrituras de nombre
Estos campos existen solo para la migración y anulan el nombre de la configuración de recursos o automatización que el operador de Kubernetes utilizaría o generaría de otro modo.
spec.replicaSetNameOverrideTipo: string
Este campo existe solo para migración. El nombre del set de réplicas de la configuración de automatización, cuando difiere del nombre del recurso de Kubernetes, o cuando el nombre del set de réplicas de la configuración de automatización no es un nombre de Kubernetes válido. El plugin
kubectl mongodb migrate-to-mckestablece este campo para usted a través de su indicador--resource-name-override.
spec.configServerNameOverrideTipo: string
Este campo existe solo para migración. Nombre del set de réplicas del servidor de configuración tal como aparece en la configuración de automatización.
spec.shardNameOverridesTipo: arreglo de
ShardNameOverrideobjetosEste campo existe solo para migración. Configuración de automatización por partición para el nombre del set de réplicas y la partición
_id.Nota
No confunda
spec.shardNameOverridesconspec.shardOverrides.spec.shardOverridesconfigura la configuración de recursos por partición y no está relacionado con la denominación de la migración.Los nombres de Kubernetes
StatefulSetnunca se ven afectados por estas anulaciones.
Rutas de configuración de automatización configurables
El operador de Kubernetes codificó rígidamente estas configuraciones de automatización anteriormente. La migración requiere que sean configurables para que una implementación de Kubernetes pueda coincidir con las rutas ya en uso en las máquinas virtuales de origen.
spec.downloadBaseTipo: string
Por defecto:
/var/lib/mongodb-mms-automationDirectorio donde el MongoDB Agent descarga el binario del agente. El Kubernetes Operator deriva la ruta del archivo de claves de esta configuración como
<downloadBase>/keyfile.
spec.security.tls.caFilePathTipo: string
Por defecto:
/mongodb-automation/tls/ca/ca-pemRuta absoluta donde el operador de Kubernetes proyecta el certificado de CA dentro del pod. Esta ruta debe contener al menos dos segmentos de ruta. No compatible con la base de datos de la aplicación.
Nota
Si la plantilla de su pod monta un volumen en esta ruta o por encima de ella, el montaje puede ocultar el archivo CA proyectado. Revise sus montajes de volumen
podTemplateantes de establecer un valor personalizado.
spec.security.authentication.agents.autoPEMKeyFilePathTipo: string
Ruta absoluta del archivo PEM combinado del MongoDB Agent dentro de los pods de la base de datos. Al establecer este campo, se establece el Ops Manager o el valor
tls.autoPEMKeyFilePathde Cloud Manager, y se monta el secreto al que hace referenciaspec.security.authentication.agents.clientCertificateSecretRefen esa ruta.Se requiere
spec.security.authentication.agents.clientCertificateSecretRef.Por defecto, la ruta de montaje del certificado de agente derivada del hash que utiliza el operador de Kubernetes para implementaciones no migradas.
Condiciones de estado
status.conditionsTipo: arreglo de Condiciones de Kubernetes
Condiciones estándar de Kubernetes, con clave
type. Este campo es nuevo en el recursoMongoDBy admite la migración.
status.conditions[type=Migrating]Tipo: condición de Kubernetes
El indicador principal de si una migración está activa.
statusesTruemientrasspec.externalMembersno está vacío, y cambia aFalsecon el motivoMigrationCompleteuna vez que remueva el último nodo externo.RazónEstadoSignificadoValidatingTrueLa anotación de dry-run está establecida.
ExtendingTrueEl recuento de nodos de Kubernetes deseado supera el último recuento conciliado.
PruningTrueEl recuento de
externalMemberscayó por debajo destatus.migrationObservedExternalMembersCount.InProgressTrueExisten nodos externos, pero nada está cambiando. Esta es también la razón de la primera conciliación.
MigrationCompleteFalseTodos los nodos externos han sido eliminados.
La precedencia es
Validating>Extending>Pruning>InProgress. Una poda que también hace crecer el lado de Kubernetes informaExtending, lo cual es otra razón para hacer un cambio a la vez.No se permite la poda y la extensión al mismo tiempo.
Para crear un script para la finalización de la migración, utilice
kubectl wait --for=condition=Migrating=Falseen lugar de sondearstatus.phase.
status.conditions[type=NetworkConnectivityVerified]Tipo: condición de Kubernetes
El resultado de la comprobación de conectividad de ejecutar en seco. El operador de Kubernetes remueve esta condición de
status.conditionspor completo una vez que no queden nodos externos.Código de salida de la tarea del validadorEstado de la condiciónRazónSignificadoTarea aún en ejecución
UnknownRunningEl
status.phaseesConnectivityCheckRunning.0TrueNetworkValidationPassedTodos los nodos externos son accesibles y están autenticados.
2FalseAuthenticationFailedCredenciales, el mecanismo de autenticación o un rol
__system@localque falta.3FalseNetworkFailedDNS, TLS, tiempos de espera o nodos inaccesibles. Compruebe el registro de la tarea Pod.
1o otrosFalseUnknownErrorError 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,AgentCertSecretFailedyAgentCertSubject.El operador de Kubernetes remueve la condición
NetworkConnectivityVerifieddestatus.conditionspor completo una vez que no queden nodos externos.
status.migrationObservedExternalMembersCountTipo: entero
El número de
spec.externalMembersentradas que el operador de Kubernetes observó en la última conciliación. Kubernetes operador compara este valor con el recuento actual despec.externalMembersen la siguiente conciliación para detectar que ha eliminado un nodo externo. Este campo no está establecido cuando no quedan nodos externos.Nota
Este campo también aparece en el esquema de recursos personalizados
MongoDBOpsManager, como efecto secundario de la incrustación de estructuras Go. En el recursoMongoDBOpsManager, el campo siempre es nulo. Ignórelo allí.
Anotaciones
metadata.annotations.mongodb.com/migration-dry-runTipo: string (valor booleano)
El plugin
kubectl mongodb migrate-to-mckestablece esta anotación entrue. Mientras esta anotación está presente, el operador de Kubernetes no realiza cambios en la configuración de automatización y solo realiza la validación de conectividad. Remover la anotación inicia la migración real.
Campos relacionados que requieren atención específica de la migración
Los siguientes campos de recursos MongoDB existentes no son solo para migración, pero requieren valores específicos o revisión durante una migración:
spec.members,spec.mongodsPerShardCount,spec.configServerCount, yspec.mongosCounttodos comienzan en0en el recurso que genera el pluginkubectl mongodb migrate-to-mck.spec.memberConfig[].votes(entero, valor predeterminado1) yspec.memberConfig[].priority(cadena que contiene un flotante, valor predeterminado"1"). Debe proporcionar al menos tantas entradasspec.memberConfigcomospec.members. Kubernetes Operator ignora el nivel superiorspec.memberConfigpara clústeres fragmentados solo cuandospec.topologyesMultiCluster. Para clústeres fragmentados de un solo clúster, el nivel superiorspec.memberConfigconfigura los miembros del servidor de configuración y los miembros de cada fragmento sin una entradaspec.shardOverridescoincidente. El complementokubectl mongodb migrate-to-mckno generaspec.memberConfig, y Kubernetes Operator no establece por defecto a los nuevos miembros como no votantes, por lo que los valores predeterminados de CRD de1y"1"son incorrectos mientras se sincroniza un nuevo miembro.Advertencia
Establecer spec.memberConfig antes de aumentar el número de nodos
Por defecto, los nuevos nodos de Kubernetes se unen como nodos con derecho a voto. Los valores por defecto de CRD son
votes: 1ypriority: "1", que permiten que un nodo que aún se está sincronizando participe en una elección antes de que haya terminado su sincronización inicial.MongoDB recomienda que guarde una entrada
spec.memberConfigpor cada nodo nuevo de Kubernetes convotes: 0ypriority: "0"antes de aumentar el recuento de nodos, para que un nodo que se está sincronizando no pueda ganar una elección.voteses un número entero.priorityes un string.Campos que deben coincidir exactamente con la implementación de origen:
spec.version,spec.featureCompatibilityVersion,spec.additionalMongodConfig.net.port,spec.security.authentication.modesyspec.security.authentication.internalCluster.