배포서버 에 적용되는 template 또는 podTemplate 설정을 사용하여 MongoDB Ops Manager 및 MongoDB database 리소스가 실행 파드 의 컨테이너를 수정할 수 있습니다.
- MongoDB database: - spec.podSpec.podTemplate
- Ops Manager: - spec.statefulSet.spec.template
template 또는 podTemplate에 추가할 수 있는 필드를 검토 하려면 Kubernetes 설명서를 참조하세요.
template 또는 podTemplate 을(를) 사용하여 container를 생성하는 경우 Kubernetes 연산자는 containers 배열의 각 container에 제공한 name 에 따라 container 생성을 다르게 처리합니다.
- name필드 해당 리소스 이미지의 이름과 일치하는 경우, Kubernetes Operator는 또는 이 적용되는 파드에서 MongoDB Ops Manager 또는 MongoDB database 컨테이너 업데이트합니다.- template- podTemplate- Ops Manager: - mongodb-kubernetes-ops-manager
- 백업 데몬 서비스: - mongodb-backup-daemon
- MongoDB database: - mongodb-enterprise-database
- 애플리케이션 데이터베이스: - mongodb-kubernetes-appdb
 
- name필드가 해당 리소스 이미지의 이름과 일치하지 않는 경우, Kubernetes Operator는- template또는- podTemplate이 적용되는 각 파드 에 새 컨테이너를 생성합니다.
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의 기본값 시스템 구성을 사용합니다. 리소스 컨테이너에서 기본 RHEL 시스템 구성을 MongoDB 조정하려면 다음 설정 중 하나를 사용하여 권한이 있는 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.podTemplate- keepalive값을 권장 값인- 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 에서 실행 컨테이너에 대한 셸 세션을 열고 변경 사항을 확인합니다.
예시
이전 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 템플릿에서 이미지를 빌드하려면 해당 컨텍스트 이미지를 제공해야 합니다.
각 Dockerfile 템플릿에는 원본 이미지와 동일한 Quay 레지스트리에서 검색할 수 있는 하나의 관련 컨텍스트 이미지가 있습니다. 컨텍스트 이미지에는 항상 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 설명서를 참조하세요.