配置に適用される  template または podTemplate 設定を使用して、MongoDB Ops ManagerとMongoDBデータベースリソースが実行される ポッド のコンテナを変更します。
- MongoDB database: - spec.podSpec.podTemplate
- MongoDB Ops Manager : - spec.statefulSet.spec.template
template または podTemplate に追加できるフィールドを確認するには、Kubernetes のドキュメント を参照してください。
templateまたはpodTemplateを使用してコンテナを作成すると、Kubernetes Operator は、 containers配列内の各コンテナに対して指定したnameに基づいて、コンテナの作成を異なる方法で処理します。
- nameフィールドが該当するリソースイメージの名前と一致する場合、 Kubernetes Operator は、 または が適用されるポッド内のMongoDB Ops ManagerまたはMongoDBデータベースコンテナを更新します。- template- podTemplate- MongoDB Ops Manager : - mongodb-kubernetes-ops-manager
- バックアップデーモン サービス: - mongodb-backup-daemon
- MongoDB database: - mongodb-enterprise-database
- アプリケーションデータベース: - mongodb-kubernetes-appdb
 
- nameフィールドが適用されるリソースイメージの名前と一致しない場合、 Kubernetes Operator は- templateまたは- podTemplateが適用される各ポッドに新しいコンテナを作成します。
MongoDB Kubernetes リソースのボリューム マウントの定義
ポッド内のコンテナ内のディスク上のファイルは、コンテナのクラッシュや再起動に耐えられません。spec.podSpec.podTemplate設定を使用すると、Ped の有効期間中に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 のデフォルトのシステム構成を使用します。リソースコンテナ内の基礎となる RHELMongoDB システム構成を調整するには、次のいずれかの設定を使用して特権付き 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時間を調整できます。
Tip
TCP キープアライブ時間は MongoDB デプロイに影響しますか。 (MongoDB マニュアル)
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 は、 Kubernetes Operator が MongoDBリソース定義を使用して作成する各ポッドに特権を持つ InitContainer を追加します。
データベースリソースポッド内の実行中のコンテナに対してシェルセッションを開き、変更を確認します。
例
前のkeepaliveの例に従うには、次のコマンドを呼び出して現在のkeepalive値を取得します。
kubectl exec -n <metadata.namespace> -it <pod-name> -- cat /proc/sys/net/ipv4/tcp_keepalive_time 120 
Tip
「オペレーティング システム構成」を参照してMongoDB 。
Dockerfile テンプレートによるカスタム イメージの構築
MongoDB Dockerfile テンプレートを変更して、ユースケースに適したカスタム Kubernetes Operator イメージを作成できます。 カスタム イメージを作成するには、次のものが必要です。
- MongoDB テンプレートから変更されたカスタム Dockerfile。 
- MongoDB が提供するテンプレートのコンテキスト イメージ。 
MongoDB Dockerfile Templates
コンテナイメージのビルドに使用される Dockerfile は、 MongoDB Kubernetes Githubリポジトリ から一般に入手できます。
Dockerfile ディレクトリは、リソース名、バージョン、ディストリビューションによって整理されています。
├── <resource name> │   └── <image version> │       └── <base distribution> │           └── Dockerfile template 
使用するテンプレートを独自の Dockerfile にコピーし、必要に応じて変更します。
コンテキストイメージ
MongoDB Dockerfile テンプレートからイメージを構築するには、そのコンテキスト イメージを指定する必要があります。
各 Docker テンプレートには、元のイメージと同じ Quay レジストリから取得可能な 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-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 - 
注意
ビルドコンテキストとしてローカルディレクトリを提供する代わりに、 cat myDockerfileの出力を読み取るには、 docker buildの末尾にハイフン( - )を含めます。
Tip
docker build の詳細については、Docker のドキュメントを参照してください。