중요
이 페이지의 설정은 Kubernetes 연산자 아래서 자체 관리형 배포서버를 Kubernetes로 마이그레이션하는 것을 지원하기 위해 존재합니다. 마이그레이션이 함께 제공되지 않는 Kubernetes에 직접 배포하는 MongoDB 리소스에 설정하지 마십시오.
이 페이지에서는 자체 관리형 가상 머신 배포서버에서 Kubernetes로 마이그레이션하는 동안에만 적용되는 MongoDB 리소스 필드, 상태 조건 및 주석을 문서화합니다. 전체 MongoDB 리소스 설정은 MongoDB 데이터베이스 리소스 사양을 참조하세요.
외부 노드
이러한 필드는 마이그레이션이 Kubernetes로 확장되는 소스 가상 머신 또는 베어메탈 프로세스를 식별합니다. 이러한 필드는 MongoDB 리소스인 apiVersion: mongodb.com/v1에 적용됩니다.
중요
이 필드들은 마이그레이션 전용입니다. 신규 Kubernetes 배포서버의 경우, MongoDB 리소스에 설정하지 마십시오.
spec.externalMembers유형:
ExternalMember객체 배열마이그레이션의 일부인 가상 마신 또는 베어 메탈 소스 프로세스. 이 필드는 마이그레이션만 위해 존재합니다.
이 목록에서 항목을 제거할 수 있습니다. 하지만 마이그레이션이 시작되면 항목을 추가하지 마십시오. 빈
spec.externalMembers목록은 마이그레이션이 완료되었음을 의미합니다.
spec.externalMembers[].processName유형: 문자열
필수 사항
이 필드는 마이그레이션 전용입니다. 자동화 구성의
processes배열에서 그대로 표시되는 것과 같은 프로세스 이름.
spec.externalMembers[].hostname유형: 문자열
필수 사항
이 필드는 마이그레이션 전용입니다. 자동화 구성에 표시된 그대로의 프로세스에 대한
host:port값입니다.
이름 재정의
이 필드는 마이그레이션 전용이며 Kubernetes Operator가 사용하거나 생성할 리소스 또는 자동화 구성 이름을 재정의합니다.
spec.replicaSetNameOverride유형: 문자열
이 필드는 마이그레이션 전용입니다. Kubernetes 리소스 이름과 다르거나 자동화 구성 복제본 세트 이름이 유효한 Kubernetes 이름이 아닌 경우의 자동화 구성 복제본 세트 이름입니다.
kubectl mongodb migrate-to-mck플러그인은--resource-name-override플래그를 통해 이 필드를 설정합니다.
spec.shardNameOverrides유형:
ShardNameOverride객체 배열이 필드는 마이그레이션 전용입니다. 샤드별 자동화 구성 복제본 세트 이름 및 샤드
_id.참고
spec.shardNameOverrides와spec.shardOverrides를 혼동하지 마십시오.spec.shardOverrides는 샤드별 리소스 설정을 구성하며, 마이그레이션 이름 지정과는 관련이 없습니다.Kubernetes
StatefulSet이름은 이러한 재정의에 영향을 받지 않습니다.
구성 가능한 자동화 구성 경로
Kubernetes 연산자는 이전에 이러한 자동화 구성 설정을 하드 코딩했습니다. 마이그레이션하려면 Kubernetes 배포서버가 소스 가상 머신에서 이미 사용 중인 경로와 일치시킬 수 있도록 구성 가능해야 합니다.
spec.downloadBase유형: 문자열
기본값:
/var/lib/mongodb-mms-automationMongoDB Agent가 에이전트 바이너리를 다운로드하는 디렉토리입니다. Kubernetes 연산자는 이 설정에서
<downloadBase>/keyfile인 키 파일 경로를 추출합니다.
spec.security.tls.caFilePath유형: 문자열
기본값:
/mongodb-automation/tls/ca/ca-pemKubernetes Operator가 포드 내부에 CA 인증서를 투영하는 절대 경로입니다. 이 경로에는 최소 두 개의 경로 세그먼트가 포함되어야 합니다. 애플리케이션 데이터베이스에서는 지원되지 않습니다.
참고
Pod 템플릿이 이 경로 이상에서 볼륨을 마운트하는 경우, 마운트가 프로젝션된 CA 파일을 섀도잉할 수 있습니다. 사용자 지정 값을 설정하기 전에
podTemplate볼륨 마운트를 검토하세요.
spec.security.authentication.agents.autoPEMKeyFilePath유형: 문자열
데이터베이스 포드 내 MongoDB Agent의 결합된 PEM 파일의 절대 경로입니다. 이 필드를 설정하면 MongoDB Ops Manager 또는 Cloud Manager
tls.autoPEMKeyFilePath값이 설정되고spec.security.authentication.agents.clientCertificateSecretRef에서 참조하는 보안 비밀이 해당 경로에 마운트됩니다.spec.security.authentication.agents.clientCertificateSecretRef이(가) 필요합니다.마이그레이션되지 않은 배포서버에 대해 Kubernetes Operator가 사용하는 해시 파생 에이전트 인증서 마운트 경로를 기본값으로 설정합니다.
상태 조건
status.conditions유형: Kubernetes Conditions의 배열
type을 키로 사용하는 표준 Kubernetes 조건. 이 필드는MongoDB리소스에 새로 추가된 필드이며, 마이그레이션을 지원합니다.
status.conditions[type=Migrating]유형: Kubernetes 조건
마이그레이션이 활성 상태인지 여부를 나타내는 최상위 지표입니다.
spec.externalMembers이(가) 비어 있지 않은 동안status은(는)True이며, 마지막 외부 노드를 제거하면MigrationComplete이유로False(으)로 전환됩니다.이유상태의미ValidatingTruedry-run 어노테이션이 설정되었습니다.
ExtendingTrue원하는 Kubernetes 노드 수가 마지막으로 조정된 수보다 많습니다.
PruningTrueexternalMembers개수가status.migrationObservedExternalMembersCount미만으로 제거되었습니다.InProgressTrue외부 노드가 있지만 아무것도 변경되지 않습니다. 이것이 첫 번째 일치 시의 그러한 이유이기도 됩니다.
MigrationCompleteFalse모든 외부 노드가 제거되었습니다.
우선순위는
Validating>Extending>Pruning>InProgress입니다. Kubernetes 측을 확장하는 프루는Extending을 보고합니다. 이는 단일 변경을 수행해야 하는 또 다른 이유가 됩니다.가지치기와 확장은 동시에 수행할 수 없습니다.
마이그레이션 완료를 스크립트로 작성하려면
status.phase을 폴링하는 대신kubectl wait --for=condition=Migrating=False을 사용하세요.
status.conditions[type=NetworkConnectivityVerified]유형: Kubernetes 조건
시험 실행 연결 확인 결과. Kubernetes 연산자는 외부 노드가 남지 않을 경우
status.conditions에서 이 조건을 완전히 제거합니다.검증기 작업 종료 코드조건 상태이유의미작업이 여전히 실행 중입니다.
UnknownRunningstatus.phase은ConnectivityCheckRunning입니다.0TrueNetworkValidationPassed모든 외부 노드는 접근할 수 있고 인증됩니다.
2FalseAuthenticationFailed자격 증명, 인증 메커니즘 또는 누락된
__system@local역할입니다.3FalseNetworkFailedDNS, TLS, 시간 초과 또는 연결할 수 없는 노드. 작업 Pod 로그를 확인하세요.
1또는 기타FalseUnknownError미분류 실패. 작업 Pod 로그를 확인하세요.
작업 시작 전에 발생하는 오류는
OperatorImageUnknown,BuildStatefulSetOptions,AgentCertSecretFailed,AgentCertSubject이유로 인해 발생합니다.Kubernetes 연산자는 외부 노드가 남지 않으면
status.conditions에서NetworkConnectivityVerified조건을 완전히 제거합니다.
status.migrationObservedExternalMembersCount유형: integer
마지막 조정에서 Kubernetes Operator가 관찰한
spec.externalMembers항목 수입니다. Kubernetes Operator는 다음 조정에서 이 값을 현재spec.externalMembers개수와 비교하여 외부 노드를 가지치기했는지 감지합니다. 이 필드는 외부 노드가 남아 있지 않을 때 설정 해제됩니다.참고
이 필드는
MongoDBOpsManager사용자 지정 리소스 스키마에서도 Go 구조체 임베딩의 부작용으로 나타납니다.MongoDBOpsManager리소에서 필드는 항상 null 입니다. 그곳에서 무시하십시오.
주석
마이그레이션 특유 주의가 필요한 관련 필드
다음의 기존 MongoDB 리소스 필드는 마이그레이션에만 사용되는 것이 아니라 마이그레이션 동안 특정 값 또는 검토가 필요합니다.
spec.members,spec.mongodsPerShardCount,spec.configServerCount및spec.mongosCount은 모두kubectl mongodb migrate-to-mck플러그인이 생성하는 리소스의0에서 시작합니다.spec.memberConfig[].votes(정수, 기본값1) 및spec.memberConfig[].priority(플로트를 포함하는 문자열, 기본값"1"). 최소한spec.members만큼 많은spec.memberConfig항목을 제공해야 합니다. Kubernetes Operator는spec.topology이MultiCluster인 경우에만 샤딩된 클러스터에 대한 최상위spec.memberConfig를 무시합니다. 단일 클러스터 샤딩된 클러스터의 경우, 최상위spec.memberConfig은(는) 일치하는spec.shardOverrides항목 없이 config 서버 멤버와 모든 샤드 의 멤버를 구성합니다.kubectl mongodb migrate-to-mck플러그인은spec.memberConfig를 생성하지 않고, Kubernetes Operator는 새 멤버를 투표권이 없는 것으로 기본값 하지 않으므로, 새 멤버가 동기화되는 동안에는 CRD 기본값1및"1"가 올바르지 않습니다.경고
spec.memberConfig 설정 노드 수를 늘리기 전에
기본값으로 새 Kubernetes 노드는 투표 노드로 참여합니다. CRD 기본값은
votes: 1및priority: "1"입니다. 이 기본값을 사용하면 아직 동기화 중인 노드가 초기 동기화를 완료하기 전에 투표에 참여할 수 있습니다.MongoDB에서는 노드 수를 증가시키기 전에
votes: 0및priority: "0"를 사용하여 새 Kubernetes 노드 하나당 하나의spec.memberConfig엔트리 쓰기 (write)를 하도록 권장합니다. 이렇게 하면 아직 동기화 중인 노드가 투표에서 이길 수 없습니다.votes은 정수입니다.priority은 string입니다.소스 배포서버와 정확히 일치해야 하는 필드:
spec.version,spec.featureCompatibilityVersion,spec.additionalMongodConfig.net.port,spec.security.authentication.modes및spec.security.authentication.internalCluster.