Ops 관리자 또는 MongoDB Kubernetes 리소스 컨테이너 수정하기
이 페이지의 내용
배포서버 MongoDB Ops Manager 에 MongoDB 적용되는 template
또는 설정을 사용하여 MongoDB Ops Manager 및 MongoDB database 리소스 podTemplate
실행 되는 파드 의 컨테이너를 수정할 수 있습니다.
MongoDB database:
spec.podSpec.podTemplate
Ops Manager:
spec.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
생성합니다. 또는 이 적용됩니다.
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.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는 각 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
Dockerfile 템플릿으로 사용자 지정 이미지 빌드
MongoDB Dockerfile 템플릿을 수정하여 사용 사례에 적합한 사용자 지정 Kubernetes 연산자 이미지를 만들 수 있습니다. 사용자 지정 이미지를 빌드하려면 다음이 필요합니다.
MongoDB 템플릿에서 수정된 사용자 지정 Dockerfile입니다.
템플릿에 대해 MongoDB에서 제공하는 컨텍스트 이미지입니다.
MongoDB Dockerfile 템플릿
컨테이너 이미지를 빌드하는 데 사용되는 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
docker build
예시
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
의 출력을 읽습니다.