Docs Menu
Docs Home
/
MongoDB Enterprise Kubernetes 연산자

Ops 관리자 또는 MongoDB Kubernetes 리소스 컨테이너 수정하기

이 페이지의 내용

  • MongoDB Kubernetes 리소스에 대한 볼륨 마운트 정의
  • InitContainer로 MongoDB Kubernetes 리소스 Docker 이미지 조정
  • Dockerfile 템플릿으로 사용자 지정 이미지 빌드

Pods 의 컨테이너를 수정할 수 있습니다.배포서버에 MongoDB database 적용되는 template 또는 설정을 사용하여 podTemplate 실행되는 MongoDB Ops Manager 및 리소스입니다.

  • MongoDB database: spec.podSpec.podTemplate

  • Ops Manager: spec.statefulSet.spec.template

  • 백업 데몬 서비스: spec.backup.statefulSet.spec.template

또는 에 추가할 수 template podTemplate 있는 필드를 검토하려면 Kubernetes 설명서를 참조하세요.

template 또는 podTemplate 을(를) 사용하여 container를 생성하는 경우 Kubernetes 연산자는 containers 배열의 각 container에 제공한 name 에 따라 container 생성을 다르게 처리합니다.

  • 필드가 해당 리소스 name 이미지의 이름 과 일치 하면 Operator는 Kubernetes MongoDB database Pod 에서 MongoDB Ops Manager 또는 컨테이너를 업데이트합니다.template 또는 이 podTemplate 적용됩니다.

    • Ops Manager: mongodb-enterprise-ops-manager

    • 백업 데몬 서비스: mongodb-backup-daemon

    • MongoDB database: mongodb-enterprise-database

    • 애플리케이션 데이터베이스: mongodb-enterprise-appdb

  • name 필드가 해당 리소스 이미지의 이름 과 일치하지 않으면 Kubernetes Operator는 각 Pod 에 새 컨테이너를 template podTemplate 생성합니다. 또는 이 적용됩니다.

Pods 의 컨테이너에 있는 온디스크 파일 컨테이너 충돌이나 재시작에서 살아남지 spec.podSpec.podTemplate 마세요. 설정을 사용하여 볼륨 마운트 를 추가할 수 있습니다. 파드의 수명 동안 MongoDB 데이터베이스 리소스에 데이터를 유지합니다. .

MongoDB database 리소스에 대한 볼륨 마운트를 만들려면 다음을 수행합니다.

  1. 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: {}
  2. 업데이트된 리소스 정의를 적용합니다.

    kubectl apply -f <database-resource-conf>.yaml -n <metadata.namespace>

MongoDB 리소스 Docker 이미지는 RHEL에서 실행되며 RHEL의 기본 시스템 구성을 사용합니다. 리소스 MongoDB 컨테이너에서 기본 RHEL 시스템 구성을 조정하려면 권한이 있는 InitContainer 초기화 컨테이너 를 추가합니다. 다음 설정 중 하나를 사용하여

예제

MongoDB database 리소스 Docker 이미지는 7200 의 RHEL 기본 keepalive 시간을 사용합니다. MongoDB는 데이터베이스 배포를 위해 120keepalive 시간을 더 짧게 권장합니다.

클라이언트와 데이터베이스 리소스 간의 통신에서 네트워크 시간 초과 또는 소켓 오류가 발생하는 경우 데이터베이스 리소스 Docker 이미지에서 keepalive 시간을 조정할 수 있습니다.

다음도 참조하세요.

MongoDB database 리소스 container의 Docker 이미지를 조정하려면 다음을 수행합니다.

  1. 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"]
  2. 업데이트된 리소스 정의를 적용합니다.

    kubectl apply -f <database-resource-conf>.yaml -n <metadata.namespace>

Kubernetes는 각 Pod 에 권한이 있는 InitContainer를 MongoDB 추가합니다. Kubernetes Operator가 리소스 정의를 사용하여 생성하는

데이터베이스 리소스 Pod shell 에서 실행 중인 컨테이너에 대한 세션을 엽니다. 변경 사항을 확인합니다.

예제

이전 keepalive 예제를 수행하려면 다음 명령을 호출하여 현재 keepalive 값을 가져옵니다.

> kubectl exec -n <metadata.namespace> -it <pod-name> -- cat /proc/sys/net/ipv4/tcp_keepalive_time
> 120

다음도 참조하세요.

MongoDB 매뉴얼의 운영 체제 구성 .

MongoDB Dockerfile 템플릿을 수정하여 사용 사례에 적합한 사용자 지정 Kubernetes 연산자 이미지를 만들 수 있습니다. 사용자 지정 이미지를 빌드하려면 다음이 필요합니다.

  • MongoDB 템플릿에서 수정된 사용자 지정 Dockerfile입니다.

  • 템플릿에 대해 MongoDB에서 제공하는 컨텍스트 이미지입니다.

컨테이너 이미지를 빌드하는 데 사용되는 Dockerfile은 MongoDB Enterprise 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-enterprise-database:2.0.0-context

mongodb-enterprise-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-enterprise-operator:1.9.1-context \
--tag mongodb-enterprise-operator:1.9.1-ubuntu-1804 -

참고

로컬 디렉토리를 빌드 컨텍스트로 제공하는 대신 docker build 끝에 하이픈(-)을 포함하여 cat myDockerfile 의 출력을 읽습니다.

다음도 참조하세요.

에 대해 자세히 docker build 알아보려면 Docker 설명서를 참조하세요.

돌아가기

배포 문제 해결