MongoDB Ops ManagerまたはMongoDB Kubernetesリソース コンテナの変更
項目一覧
ポッド でコンテナを変更できます 以下では、配置に適用される または 設定を使用して、Ops Manager とMongoDBデータベースリソースが実行されます。template
podTemplate
MongoDB database:
spec.podSpec.podTemplate
MongoDB Ops Manager :
spec.statefulSet.spec.template
template
またはpodTemplate
に追加できるフィールドを確認するには、 Kubernetes のドキュメント を参照してください。
template
またはpodTemplate
を使用してコンテナを作成すると、Kubernetes Operator は、 containers
配列内の各コンテナに対して指定したname
に基づいて、コンテナの作成を異なる方法で処理します。
name
フィールドが該当するリソース イメージの名前と 一致 する場合、 Operator は MongoDBKubernetes Ops Manager または データベース コンテナをMongoDB Ops Manager MongoDBポッド 内の または MongoDB データベース コンテナを更新します。template
またはpodTemplate
が適用される:MongoDB Ops Manager :
mongodb-enterprise-ops-manager
バックアップデーモン サービス:
mongodb-backup-daemon
MongoDB database:
mongodb-enterprise-database
アプリケーションデータベース:
mongodb-enterprise-appdb
フィールドが該当するリソース
name
イメージの名前と 一致しない 場合、Kubernetes 演算子は各 ポッド に新しいコンテナを作成しますtemplate
またはpodTemplate
が適用される。
MongoDB Kubernetes リソースのボリューム マウントの定義
ポッド のコンテナ内のディスク上のファイル コンテナのクラッシュや再起動に耐えられません。設定を使用すると、 ボリュームマウントspec.podSpec.podTemplate
を追加できます ポッド の有効期間中に MongoDB データベース リソースにデータを保持する 。
MongoDB データベース リソースのボリューム マウントを作成するには、次の手順に従います。
MongoDB データベースのリソース定義を更新して、Kubernetes Operator が作成するデータベースポッドにコンテナのボリュームマウントを含めます。
例
ボリュームマウントを定義するには、
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
: 特権 InitContainer を MongoDB database リソース コンテナに追加します。spec.statefulSet.spec.template
: 特権 InitContainer をMongoDB Ops Managerリソース コンテナに追加します。
例
MongoDB database リソース Docker イメージは、 7200
の RHEL デフォルトのkeepalive
時間を使用します。 MongoDB では、データベース配置に120
のkeepalive
時間を短縮することを推奨しています。
クライアントとデータベース リソース間の通信でネットワーク タイムアウトやソケット エラーが発生した場合は、データベース リソース Docker イメージでkeepalive
時間を調整できます。
MongoDB データベース リソース コンテナの Docker イメージを調整するには、次の手順に従います。
MongoDB データベース リソースの定義を更新して、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 が特権を持つ InitContainer を各 ポッド に追加するMongoDB
これは Kubernetes Operator が リソース定義を使用して作成するものです。
データベース リソース ポッド で実行中のコンテナに shell セッションを開きます 変更内容を確認します。
例
前のkeepalive
の例に従うには、次のコマンドを呼び出して現在のkeepalive
値を取得します。
kubectl exec -n <metadata.namespace> -it <pod-name> -- cat /proc/sys/net/ipv4/tcp_keepalive_time 120
Dockerfile テンプレートによるカスタム イメージの構築
MongoDB Dockerfile テンプレートを変更して、ユースケースに適したカスタム Kubernetes Operator イメージを作成できます。 カスタム イメージを作成するには、次のものが必要です。
MongoDB テンプレートから変更されたカスタム Dockerfile。
MongoDB が提供するテンプレートのコンテキスト イメージ。
MongoDB Dockerfile Templates
コンテナ イメージのビルドに使用される Dockerfiles は、MongoDB EnterpriseKubernetesGithub リポジトリ から一般に入手できます。
Dockerfile ディレクトリは、リソース名、バージョン、ディストリビューションによって整理されています。
├── <resource name> │ └── <image version> │ └── <base distribution> │ └── Dockerfile template
使用するテンプレートを独自の Dockerfile にコピーし、必要に応じて変更します。
コンテキストイメージ
MongoDB Dockerfile テンプレートからイメージを構築するには、そのコンテキスト イメージを指定する必要があります。
各 Docker テンプレートには、同じクエリから取得可能な 1 つの関連付けられたコンテキスト イメージがあります。 レジストリを元のイメージとして登録します。コンテキスト イメージには常にquay.io/mongodb/<resource-name>:<image-version>-context
形式でタグが付けられます。
コンテキスト イメージをdocker build
に提供するには、 --build-arg
オプションを使用して、 imagebase
変数を Query.io タグに設定します。ここでは、 <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 -
注意
ビルドコンテキストとしてローカルディレクトリを提供する代わりに、 cat myDockerfile
の出力を読み取るには、 docker build
の末尾にハイフン( -
)を含めます。