Esta página ajuda a diagnosticar problemas que podem ocorrer enquanto você migra um conjunto de réplicas autogerenciado ou cluster fragmentado de máquinas virtuais para o Kubernetes no Kubernetes Operator, incluindo falhas de importação de plugin , problemas de execução seca e conectividade, incompatibilidades de autenticação e erros de validação. Para obter informações básicas sobre o fluxo de trabalho de migração, consulte Migrar uma implantação autogerenciada para Kubernetes.
Em que ponto estou na migração?
Leia o campo reason da condição status.conditions[type=Migrating] primeiro.
Razão | Status | Significado |
|---|---|---|
|
| A anotação para executar o teste está definida. |
|
| A contagem de membros do Kubernetes desejado excede a última contagem reconciliada. |
|
| A contagem de |
|
| Nós externos existem, mas nada está mudando. Esta é também a razão na primeira reconciliação. |
|
| Todos os membros externos foram removidos. |
A precedência é Validating > Extending > Pruning > InProgress. Uma operação de limpeza que também afeta o lado do Kubernetes relata Extending, o que é outro motivo para fazer uma alteração por vez.
Poda e extensão não são permitidos ao mesmo tempo.
Para fazer o script contra a conclusão da migração, use kubectl wait --for=condition=Migrating=False em vez de pesquisar status.phase.
Se o motivo permanecer
Extending, os membros do Kubernetes que o Kubernetes Operator está adicionando ainda estarão provisionando. Espere que eles atinjam o estado da meta.Se o motivo permanecer
InProgresse a contagem de membros externos não for alterada, sua última edição no recurso foi um no-op: o Kubernetes Operator não detectou uma alteração que exija uma ação.
Falhas na importação de plugins
O plugin kubectl mongodb migrate-to-mck valida a configuração de automação de origem antes de gerar qualquer recurso. Ele sai com um erro, em vez de gerar um recurso incompleto ou incorreto, em cada um dos seguintes casos:
O projeto do Ops Manager ou do Cloud Manager tem mais de um sistema.
O projeto tem mais de um cluster fragmentado.
O projeto tem conjuntos de réplicas que não fazem parte do cluster fragmentado.
O projeto não tem conjuntos de réplicas ou clusters fragmentados. O plugin-in pode migrar apenas conjuntos de réplicas e implantações de cluster fragmentado .
A configuração de automação não tem processos.
Um shard no cluster tem suporte do mesmo conjunto de réplicas que o servidor de configuração. Esta topologia de servidor de configuração incorporado não é suportada para migração.
O plugin não consegue encontrar um membro votante elegível por prioridade em um conjunto de réplicas, portanto, não pode determinar o processo de origem desse conjunto de réplicas.
Um processo tem um
processTypediferente demongodoumongos.
Caminho não configurável e incompatibilidades de configuração
O plugin sinaliza as seguintes configurações de automação quando não correspondem ao que o operador do Kubernetes espera:
auth.keyFiledifere do caminho que o operador do Kubernetes deriva despec.downloadBase.auth.keyFileWindowsestá definido.monitoringAgentConfig.logPathoubackupAgentConfig.logPathestá definido como um caminho não padrão.Um processo tem um
authSchemaVersionque difere do padrão do operador Kubernetes.
Erros de autenticação
auth.autoUserestá vazio enquanto a autenticação está habilitada.auth.autoUsernão tem entrada correspondente emauth.usersWantedpara seu banco de dados. Sem uma entrada correspondente, a autenticação do agente falha após a migração.MONGODB-X509a autenticação do agente requer quetls.autoPEMKeyFilePathseja definido na configuração de automação. Consultespec.security.authentication.agents.autoPEMKeyFilePath.Um LDAP
bindMethoddiferente desimplenão é suportado para migração.
heterogeneidade dos membros
O Kubernetes Operator obtém spec.additionalMongodConfig e spec.agent.mongod.systemLog de um único processo de origem. Se os membros do seu conjunto de réplicas tiverem configurações diferentes, revise todos os membros e reconciliar as diferenças antes de migrar — o recurso gerado aplica uma configuração a todos os membros do Kubernetes.
Alertas que merecem ação
As seguintes configurações de automação por processo não são transportadas para novos membros do Kubernetes. Planeje-se para eles antes de migrar:
secondaryDelaySecsmembro oculto
buildIndexes: false
Se sua implantação de origem tiver nós de análise ou nós atrasados, planeje como deseja representá-los no Kubernetes antes de começar.
Itens adicionais para revisar:
O plugin ignora um processo desabilitado; ele não aparece como um membro externo.
Se um processo não tiver TLS configurado, defina
net.tls.modecomodisabledno Ops Manager ou no Cloud Manager, no sistema de máquina virtual existente, antes de migrar. Não defina isso no recursoMongoDBgerado. Caso contrário, a configuração de TLS do membro do Kubernetes não corresponde ao processo de origem, e a migração causa uma alteração não planejada no sistema.Se a configuração
logRotateouauditLogRotatede um processo for diferente da configuração no nível do projeto, o Kubernetes Operator usará o valor no nível do projeto.
Incompatibilidade de versão
A anotação mongodb.com/migrate-tool-version registra a versão do plugin kubectl mongodb migrate-to-mck que gerou o recurso. O Kubernetes Operator valida esta anotação contra sua própria versão em cada reconciliação, incluindo durante a execução a seco. Se as versões forem incompatíveis, regenere o recurso com uma versão de plugin compatível.
Problemas na execução de teste
A execução de teste parece travada
Exclua o trabalho <resourceName>-connectivity-check. A próxima reconciliação a recria.
Se a tarefa nunca for criada, verifique se suas permissões RBAC do Kubernetes incluem batch/jobs. Permissões batch/jobs ausentes impedem o operador do Kubernetes de criar a tarefa de validação de conectividade.
Falhas de conectividade
Código de saída da tarefa do validador | Status da Condição | Razão | Significado |
|---|---|---|---|
A tarefa ainda está em execução |
|
| O |
|
|
| Todos os nós externos são acessíveis e autenticados. |
|
|
| Credenciais, o mecanismo de autenticação ou uma função |
|
|
| DNS, TLS, tempos limite ou membros inacessíveis. Verifique os registros do pod de trabalho. |
|
|
| Falha não classificada. Verifique o log do Pod de tarefa. |
Falhas que ocorrem antes do início da tarefa usam os motivos OperatorImageUnknown, BuildStatefulSetOptions, AgentCertSecretFailed e AgentCertSubject.
O Kubernetes operador remove a condição NetworkConnectivityVerified de status.conditions inteiramente assim que não restarem mais nós externos.
Falhas pré-tarefa
O operador Kubernetes pode falhar antes que a tarefa de validação de conectividade seja iniciada, por um destes motivos:
OperatorImageUnknownBuildStatefulSetOptionsAgentCertSecretFailedAgentCertSubject
Descompasso TLS CA
Os certificados dos membros do Kubernetes devem ser emitidos pela mesma autoridade de certificação que assinou os certificados dos membros da máquina virtual. Caso contrário, a validação e a replicação da conectividade entre a máquina virtual e os membros do Kubernetes falharão.
memberConfig problemas
spec.memberConfigtem menos entradas do quespec.members. Adicione uma entrada por nó.O Kubernetes Operator ignora o campo
spec.memberConfigde nível superior para clusters fragmentados.
Aviso
Definir spec.memberConfig antes de aumentar a contagem de membros
Por padrão, novos nós do Kubernetes entram como nós votantes. O padrão do CRD é votes: 1 e priority: "1", que permite que um nó ainda em sincronização participe de uma eleição antes de concluir sua sincronização inicial.
O MongoDB recomenda que você grave uma entrada spec.memberConfig por novo nó do Kubernetes com votes: 0 e priority: "0" antes de aumentar a contagem de nós, para que um nó ainda em sincronização não possa vencer uma eleição. votes é um número inteiro. priority é uma string.
Problemas de nomeação
O nome do recurso ou do nome do conjunto de réplicas é muito longo ou não é um nome RFC 1123 válido. Use spec.replicaSetNameOverride ou --resource-name-override para fornecer um nome válido do Kubernetes.
Surpresas de validação
As validações podem ser disparadas enquanto a anotação de execução seca (
mongodb.com/migration-dry-run) está definida, não apenas depois de iniciar a migração real.A validação do limite de nó votante pode aparecer na reconciliação, em vez de no momento da admissão, se uma alteração que excederia o limite for aplicada indiretamente.
Agrupar muitas alterações em lote em uma única edição pode fazer com que a implantação perca o quórum. Faça apenas um tipo de alteração por vez: adicione nós do Kubernetes, remova nós externos ou altere votos e prioridade.
Diagnósticos a serem coletados
Se o problema persistir depois de você ter percorrido as seções acima, colete o seguinte antes de entrar em contato com o suporte:
O recurso
MongoDBYAML, incluindostatus.conditions:kubectl get mdb <resource-name> -n <namespace> -o yaml Os recursos do
MongoDBUserpara a implementação.Registros do Operador Kubernetes.
log do pod da tarefa do validador de conectividade.
A configuração de automação JSON do Ops Manager ou Cloud Manager.
Em seguida, entre em contato com o Suporte técnico.