배포서버 에 적용되는 template 또는 설정을 사용하여 Ops Manager 및 MongoDB database 리소스가 podTemplate 실행 파드의 컨테이너를 수정할 수 있습니다.
MongoDB database:
spec.podSpec.podTemplateOps Manager:
spec.statefulSet.spec.template
또는 에 추가할 수 template podTemplate 있는 필드를 검토하려면 Kubernetes 설명서를 참조하세요.
template 또는 podTemplate 을(를) 사용하여 container를 생성하는 경우 Kubernetes 연산자는 containers 배열의 각 container에 제공한 name 에 따라 container 생성을 다르게 처리합니다.
name필드 해당 리소스 이미지의 이름과 일치하는 경우, Kubernetes Operator는 또는 가 적용되는 파드의 Ops Manager 또는 MongoDB database 컨테이너 업데이트합니다.templatepodTemplateOps Manager:
mongodb-kubernetes-ops-manager백업 디먼 서비스:
mongodb-backup-daemonMongoDB database:
mongodb-enterprise-database애플리케이션 데이터베이스:
mongodb-kubernetes-appdb
If the
namefield does not match the name of the applicable resource image, the Kubernetes Operator creates a new container in each Pod to which thetemplateorpodTemplateapplies.
MongoDB Kubernetes 리소스에 대한 볼륨 마운트 정의
Pods의 컨테이너에 있는 온디스크 파일은 컨테이너 충돌 또는 재시작 시 유지되지 spec.podSpec.podTemplate 않습니다. 설정을 사용하면 볼륨 마운트를 추가하여 파드의 수명 동안 MongoDB database 리소스 에 데이터를 유지할 수 있습니다.
MongoDB database 리소스에 대한 볼륨 마운트를 만들려면 다음을 수행합니다.
Kubernetes 연산자가 생성하는 데이터베이스 포드에 대한 container 볼륨 마운트를 포함하도록 MongoDB database 리소스 정의를 업데이트합니다.
예시
spec.podSpec.podTemplate를 사용하여 볼륨 마운트를 정의합니다:podSpec: podTemplate: spec: containers: - name: mongodb-enterprise-database volumeMounts: - mountPath: </new/mount/path> name: survives-restart volumes: - name: survives-restart emptyDir: {} 업데이트된 리소스 정의를 적용합니다.
kubectl apply -f <database-resource-conf>.yaml -n <metadata.namespace>
InitContainer로 MongoDB Kubernetes 리소스 Docker 이미지 조정
MongoDB 리소스 Docker 이미지는 RHEL에서 실행되며 RHEL의 기본 시스템 구성을 사용합니다. 리소스 MongoDB 컨테이너에서 기본 RHEL 시스템 구성을 조정하려면 권한이 있는 InitContainer 초기화 컨테이너 를 추가합니다. 다음 설정 중 하나를 사용하여
spec.podSpec.podTemplate: MongoDB database resource container에 권한이 있는 InitContainer를 추가합니다.spec.statefulSet.spec.template: Ops Manager resource container에 권한이 있는 InitContainer를 추가합니다.
예시
MongoDB database 리소스 Docker 이미지는 7200 의 RHEL 기본 keepalive 시간을 사용합니다. MongoDB는 데이터베이스 배포를 위해 120 의 keepalive 시간을 더 짧게 권장합니다.
클라이언트와 데이터베이스 리소스 간의 통신에서 네트워크 시간 초과 또는 소켓 오류가 발생하는 경우 데이터베이스 리소스 Docker 이미지에서 keepalive 시간을 조정할 수 있습니다.
팁
TCP 킵얼라이브 시간이 MongoDB 배포에 영향을 미치나요? MongoDB 매뉴얼
MongoDB database 리소스 container의 Docker 이미지를 조정하려면 다음을 수행합니다.
MongoDB database 리소스 정의를 업데이트하여 Kubernetes Operator가 생성하는 데이터베이스 포드에 권한 있는 InitContainer를 추가합니다.
예시
spec.podSpec.podTemplatekeepalive값을 권장 값인120로 변경합니다.spec: podSpec: podTemplate: spec: initContainers: - name: "adjust-tcp-keepalive" image: "busybox:latest" securityContext: privileged: true command: ["sysctl", "-w", "net.ipv4.tcp_keepalive_time=120"] 업데이트된 리소스 정의를 적용합니다.
kubectl apply -f <database-resource-conf>.yaml -n <metadata.namespace>
Kubernetes Kubernetes Operator가 리소스 MongoDB 정의를 사용하여 생성하는 각 Pod에 권한이 있는 InitContainer를 추가합니다.
데이터베이스 리소스 Pod shell 에서 실행 중인 컨테이너에 대한 세션을 엽니다. 변경 사항을 확인합니다.
예시
이전 keepalive 예제를 수행하려면 다음 명령을 호출하여 현재 keepalive 값을 가져옵니다.
kubectl exec -n <metadata.namespace> -it <pod-name> -- cat /proc/sys/net/ipv4/tcp_keepalive_time 120
팁
MongoDB 매뉴얼의 운영 체제 구성 .
Dockerfile 템플릿으로 사용자 지정 이미지 빌드
MongoDB Dockerfile 템플릿을 수정하여 사용 사례에 적합한 사용자 지정 Kubernetes 연산자 이미지를 만들 수 있습니다. 사용자 지정 이미지를 빌드하려면 다음이 필요합니다.
MongoDB 템플릿에서 수정된 사용자 지정 Dockerfile입니다.
템플릿에 대해 MongoDB에서 제공하는 컨텍스트 이미지입니다.
MongoDB Dockerfile 템플릿
컨테이너 이미지를 빌드 데 사용되는 Dockerfile은 MongoDB Kubernetes Github 리포지토리에서 공개적으로 사용할 수 있습니다.
Dockerfile 디렉토리는 리소스 이름, 버전, 배포판별로 구성되어 있습니다.
├── <resource name> │ └── <image version> │ └── <base distribution> │ └── Dockerfile template
사용하려는 템플릿을 자체 Dockerfile에 복사하고 원하는 대로 수정합니다.
컨텍스트 이미지
MongoDB Dockerfile 템플릿에서 이미지를 빌드하려면 해당 컨텍스트 이미지를 제공해야 합니다.
Each Dockerfile template has one associated context image, retrievable from the same Quay registry as the original images. Context image are always tagged in the format quay.io/mongodb/<resource-name>:<image-version>-context.
docker build 에 컨텍스트 이미지를 제공하려면 imagebase 변수를 Quay.io 태그로 설정한 상태에서 --build-arg 옵션을 포함합니다. 여기서 <resource-name> 및 <image-version> 는 Dockerfile 템플릿과 일치합니다.
예시
모든 배포에 대해 mongodb-enterprise-database 버전 2.0.0 이미지를 빌드하려면 다음을 포함합니다.
--build-arg imagebase=quay.io/mongodb/mongodb-kubernetes-database:2.0.0-context
docker build 예시
mongodb-kubernetes-operator 버전 1.9.1의 Ubuntu 배포는 기본적으로 ubuntu:1604 를 기반으로 합니다. 이 예제에서는 기본 Dockerfile 템플릿을 ubuntu:1804 을(를) 사용하도록 수정하고 myDockerfile 으로 저장합니다.
다음 명령은 사용자 지정 이미지를 빌드하고 1.9.1-ubuntu-1804 태그를 지정합니다.
cat myDockerfile | docker build --build-arg imagebase=quay.io/mongodb/mongodb-kubernetes-operator:1.9.1-context \ --tag mongodb-kubernetes-operator:1.9.1-ubuntu-1804 -
참고
로컬 디렉토리를 빌드 컨텍스트로 제공하는 대신 docker build 끝에 하이픈(-)을 포함하여 cat myDockerfile 의 출력을 읽습니다.
팁
에 docker build 대해 자세히 학습 Docker 설명서를 참조하세요.