배포서버 에 적용되는 template 또는 podTemplate 설정을 사용하여 Ops Manager 및 MongoDB database 리소스가 실행 파드의 컨테이너를 수정할 수 있습니다.
MongoDB database:
spec.podSpec.podTemplateOps Manager:
spec.statefulSet.spec.template
또는 에 추가할 수 template podTemplate 있는 필드를 검토하려면 Kubernetes 설명서를 참조하세요.
template 또는 podTemplate 을(를) 사용하여 container를 생성하는 경우 Kubernetes 연산자는 containers 배열의 각 container에 제공한 name 에 따라 container 생성을 다르게 처리합니다.
name필드 해당 리소스 이미지의 이름과 일치하는 경우, Kubernetes Operator는template또는podTemplate가 적용되는 파드의 Ops Manager 또는 MongoDB database 컨테이너 업데이트합니다.Ops Manager:
mongodb-kubernetes-ops-manager백업 디먼 서비스:
mongodb-backup-daemonMongoDB database:
mongodb-enterprise-database애플리케이션 데이터베이스:
mongodb-kubernetes-appdb
name필드 해당 리소스 이미지의 이름과 일치하지 않는 경우, Kubernetes Operator는template또는podTemplate가 적용되는 각 Pod에 새 컨테이너 생성합니다.
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 시간을 조정할 수 있습니다.
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에서 실행 컨테이너 에 대한 셸 세션을 열고 변경 사항을 확인합니다.
예시
이전 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 설명서를 참조하세요.