文档菜单
文档首页
/
MongoDB Enterprise Kubernetes Operator
/

在多Kubernetes集群中部署副本集

本页内容

  • 部署一个MongoDBMultiCluster 资源

使用此过程在成员中创建一个新的副本集Kubernetes集群在一个多Kubernetes集群MongoDB部署中.

此过程允许您为副本集资源设置不同的设置,例如对statefulSet配置的覆盖。作为使用此过程的替代方法,您可以使用多Kubernetes集群快速入门,该入门创建一个具有默认设置的多Kubernetes集群MongoDB部署中

开始之前

您可以在本TLS加密连接 标签页中使用以下过程

  • 部署一个 MongoDBMultiCluster 资源

  • MongoDBMultiCluster 资源续订TLS证书

这些过程在副本集中的MongoDB主机之间以及客户端应用程序和MongoDB部署之间建立了TLS加密连接。

开始之前,您必须拥有有效的TLS加密证书。

1

运行 kubectl 命令创建一个新的密钥,用于存储 MongoDBMultiCluster 资源的证书证书

kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \
--namespace=<metadata.namespace> \
create secret tls <prefix>-<metadata.name>-cert \
--cert=<resource-tls-cert> \
--key=<resource-tls-key>

注意

您必须使用 <prefix>-<metadata.name> 作为您密钥的前缀。

例如,如果您将部署命名为 my-deployment,并将前缀设置为 mdb,则客户端 TLS 通信的 TLS 密钥必须命名为 mdb-my-deployment-cert。此外,内部集群身份验证的 TLS 密钥(如果已启用)必须命名为 mdb-my-deployment-clusterfile

2

运行 kubectl 命令将您的 CA 与您的 MongoDBMultiCluster 资源关联。指定 CA 证书文件,您必须始终将 ca-pem 命名用于 MongoDBMultiCluster 资源:

kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \
--namespace=<metadata.namespace> \
create configmap custom-ca -from-file=ca-pem=<your-custom-ca-file>
3

如果您尚未这样做,请运行以下命令,在默认命名空间中在中央集群上运行所有 kubectl 命令。

kubectl config use-context $MDB_CENTRAL_CLUSTER_FULL_NAME
kubectl config set-context $(kubectl config current-context) \
--namespace=mongodb
4
  1. 复制示例副本集 YAML 文件,并将其粘贴到新的文本文件中。

  2. 更改文件的设置以匹配您所需的副本集配置。

1# This example provides statefulSet overrides per cluster.
2
3apiVersion: mongodb.com/v1
4kind: MongoDBMultiCluster
5metadata:
6 name: multi-replica-set
7spec:
8 version: 6.0.0-ent
9 type: ReplicaSet
10 duplicateServiceObjects: false
11 credentials: my-credentials
12 opsManager:
13 configMapRef:
14 name: my-project
15 clusterSpecList:
16 - clusterName: cluster1.example.com
17 members: 2
18 statefulSet:
19 spec:
20 template:
21 spec:
22 containers:
23 # Example of custom sidecar containers. Remove it before using the file in production.
24 - name: sidecar1
25 image: busybox
26 command: [ "sleep" ]
27 args: [ "infinity" ]
28 # Use the following settings to override the default storage size of the "data" Persistent Volume.
29 volumeClaimTemplates:
30 - metadata:
31 name: data
32 spec:
33 resources:
34 requests:
35 storage: 1Gi
36 - clusterName: cluster2.example.com
37 members: 1
38 statefulSet:
39 spec:
40 template:
41 spec:
42 containers:
43 # Example of custom sidecar containers. Remove it before using the file in production.
44 - name: sidecar2
45 image: busybox
46 command: [ "sleep" ]
47 args: [ "infinity" ]
48 volumeClaimTemplates:
49 - metadata:
50 name: data
51 spec:
52 resources:
53 requests:
54 storage: 1Gi
55 - clusterName: cluster3.example.com
56 members: 1
57 statefulSet:
58 spec:
59 template:
60 spec:
61 containers:
62 # Example of custom sidecar containers. Remove it before using the file in production.
63 - name: sidecar3
64 image: busybox
65 command: [ "sleep" ]
66 args: [ "infinity" ]
67 volumeClaimTemplates:
68 - metadata:
69 name: data
70 spec:
71 resources:
72 requests:
73 storage: 1Gi
74
75...
5
类型
描述
示例

字符串

MongoDBMultiCluster 资源标签.

资源名称必须少于或等于 44 个字符。

另见 metadata.namenames 中的Kubernetes文档。

多副本集

字符串

运行此 MongoDBMultiCluster 资源的 MongoDB 版本。应运行。

格式应为社区版的 X.Y.Z 和企业版的 X.Y.Z-ent

重要:请确保您选择一个与 兼容的 MongoDB 服务器版本。兼容的版本取决于 MongoDB 数据库资源使用的底层数据库。

有关 MongoDB 版本信息的更多信息,请参阅 MongoDB 手册中的 MongoDB 版本

6.0.0-ent

spec
.opsManager
.configMapRef

字符串

与 Ops Manager 相关的 ConfigMap 的名称。Ops Manager连接配置。设置 spec.cloudManager.configMapRef.name 是此设置的别名,可以用其代替。

此值必须在您要创建的资源所在的 相同 命名空间中存在。

重要:Kubernetes操作器跟踪 ConfigMap 的任何更改并协调 MongoDB 资源的状态.

<my-project>

spec
.clusterSpecList
.clusterName

字符串

MongoDBMultiCluster 资源中的集群名称.

cluster1.example.com

spec
.clusterSpecList
.members

整数

此集群中的成员数量。

2

spec
.clusterSpecList
.statefulSet
.spec

collection

可选。

为每个集群的 StatefulSet 提供配置,在 StatefulSet 中进行覆盖。多Kubernetes集群MongoDB部署中。如果指定在 clusterSpecList 下的单个集群级别,则覆盖整个集群的 StatefulSet 的全局配置。多Kubernetes集群MongoDB部署中请参阅多Kubernetes集群资源规范StatefulSet v1 apps Kubernetes文档。

请参阅示例。

spec
.clusterSpecList
.statefulSet
.spec
volumeClaimTemplates
.spec

collection

可选。 如果指定,则提供对默认存储大小的集群覆盖,该存储大小用于存储数据的持久卷volumeClaimtemplates

请参阅示例。

字符串

您创建的密钥的名称,作为创建 Ops Manager API 认证凭证用于与Kubernetes操作器通信Ops Manager.

Ops ManagerKubernetes 密钥 对象必须存在于您想要创建的资源相同的命名空间上。

重要:Kubernetes操作器跟踪密钥的任何更改并协调MongoDB资源的状态.

<mycredentials>

字符串

要创建的MongoDB资源的类型。此字段的唯一支持值为ReplicaSet。请参阅限制。

ReplicaSet

6

还可以将任何可选设置添加到对象规范中。请参阅多Kubernetes集群资源规范。

7
8

在任何目录下,运行以下Kubernetes命令来创建您的 副本集:

kubectl apply -f <replica-set-conf>.yaml
9

要检查您的 MongoDBMultiCluster 资源的状态,请在中央集群上使用以下命令

kubectl get mdbmc <resource-name> -o yaml -w

使用 -w(watch)标志时,当配置更改时,输出会立即刷新,直到状态阶段达到 Running 状态。有关资源部署状态的更多信息,请参阅 Kubernetes Operator 故障排除。

定期使用以下程序更新您的 TLS 证书。

1

运行此 kubectl 命令以更新存储 MongoDBMultiCluster 资源证书的现有 secret:

kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \
--namespace=<metadata.namespace> \
create secret tls <prefix>-<metadata.name>-cert \
--cert=<resource-tls-cert> \
--key=<resource-tls-key> \
--dry-run=client \
-o yaml |
kubectl apply -f -

此过程不会加密副本集内MongoDB主机之间的连接,以及客户端应用程序与MongoDB部署之间的连接。

1

如果您尚未这样做,请运行以下命令,在默认命名空间中在中央集群上运行所有 kubectl 命令。

kubectl config use-context $MDB_CENTRAL_CLUSTER_FULL_NAME
kubectl config set-context $(kubectl config current-context) \
--namespace=mongodb
2
  1. 复制示例副本集 YAML 文件,并将其粘贴到新的文本文件中。

  2. 更改文件的设置以匹配您所需的副本集配置。

1# This example provides statefulSet overrides per cluster.
2
3apiVersion: mongodb.com/v1
4kind: MongoDBMultiCluster
5metadata:
6 name: multi-replica-set
7spec:
8 version: 6.0.0-ent
9 type: ReplicaSet
10 duplicateServiceObjects: false
11 credentials: my-credentials
12 opsManager:
13 configMapRef:
14 name: my-project
15 clusterSpecList:
16 - clusterName: cluster1.example.com
17 members: 2
18 statefulSet:
19 spec:
20 template:
21 spec:
22 containers:
23 # Example of custom sidecar containers. Remove it before using the file in production.
24 - name: sidecar1
25 image: busybox
26 command: [ "sleep" ]
27 args: [ "infinity" ]
28 # Use the following settings to override the default storage size of the "data" Persistent Volume.
29 volumeClaimTemplates:
30 - metadata:
31 name: data
32 spec:
33 resources:
34 requests:
35 storage: 1Gi
36 - clusterName: cluster2.example.com
37 members: 1
38 statefulSet:
39 spec:
40 template:
41 spec:
42 containers:
43 # Example of custom sidecar containers. Remove it before using the file in production.
44 - name: sidecar2
45 image: busybox
46 command: [ "sleep" ]
47 args: [ "infinity" ]
48 volumeClaimTemplates:
49 - metadata:
50 name: data
51 spec:
52 resources:
53 requests:
54 storage: 1Gi
55 - clusterName: cluster3.example.com
56 members: 1
57 statefulSet:
58 spec:
59 template:
60 spec:
61 containers:
62 # Example of custom sidecar containers. Remove it before using the file in production.
63 - name: sidecar3
64 image: busybox
65 command: [ "sleep" ]
66 args: [ "infinity" ]
67 volumeClaimTemplates:
68 - metadata:
69 name: data
70 spec:
71 resources:
72 requests:
73 storage: 1Gi
74
75...
3
类型
描述
示例

字符串

MongoDBMultiCluster 资源标签.

资源名称必须少于或等于 44 个字符。

另请参阅 metadata.namenames 中的Kubernetes文档。

多副本集

字符串

运行此 MongoDBMultiCluster 资源的 MongoDB 版本。应运行。

格式应为社区版的 X.Y.Z 和企业版的 X.Y.Z-ent

重要:请确保您选择一个与 兼容的 MongoDB 服务器版本。兼容的版本取决于 MongoDB 数据库资源使用的底层数据库。

有关 MongoDB 版本信息的更多信息,请参阅 MongoDB 手册中的 MongoDB 版本

6.0.0-ent

spec
.opsManager
.configMapRef

字符串

与 Ops Manager 相关的 ConfigMap 的名称。Ops Manager连接配置。设置 spec.cloudManager.configMapRef.name 是此设置的别名,可以用其代替。

此值必须在您要创建的资源所在的 相同 命名空间中存在。

重要:Kubernetes操作器跟踪 ConfigMap 的任何更改并协调 MongoDB 资源的状态.

<my-project>

spec
.clusterSpecList
.clusterName

字符串

MongoDBMultiCluster 资源中的集群名称.

cluster1.example.com

spec
.clusterSpecList
.members

整数

此集群中的成员数量。

2

spec
.clusterSpecList
.statefulSet
.spec

collection

可选。

为每个集群的 StatefulSet 提供配置,在 StatefulSet 中进行覆盖。多Kubernetes集群MongoDB部署中。如果指定在 clusterSpecList 下的单个集群级别,则覆盖整个集群的 StatefulSet 的全局配置。多Kubernetes集群MongoDB部署中请参阅多Kubernetes集群资源规范StatefulSet v1 apps Kubernetes文档。

请参阅示例。

spec
.clusterSpecList
.statefulSet
.spec
volumeClaimTemplates
.spec

collection

可选。 如果指定,则提供对默认存储大小的集群覆盖,该存储大小用于存储数据的持久卷volumeClaimtemplates

请参阅示例。

字符串

您创建的密钥的名称,作为创建 Ops Manager API 认证凭证用于与Kubernetes操作器通信Ops Manager.

Ops ManagerKubernetes 密钥 对象必须存在于您想要创建的资源相同的命名空间上。

重要:Kubernetes操作器跟踪密钥的任何更改并协调MongoDB资源的状态.

<mycredentials>

字符串

要创建的MongoDB资源的类型。此字段的唯一支持值为ReplicaSet。请参阅限制。

ReplicaSet

4

还可以将任何可选设置添加到对象规范中。请参阅多Kubernetes集群资源规范。

5
6

在任何目录下,运行以下Kubernetes命令来创建您的 副本集:

kubectl apply -f <replica-set-conf>.yaml
7

要检查您的 MongoDBMultiCluster 资源的状态,请在中央集群上使用以下命令

kubectl get mdbmc <resource-name> -o yaml -w

使用 -w(watch)标志时,当配置更改时,输出会立即刷新,直到状态阶段达到 Running 状态。有关资源部署状态的更多信息,请参阅 Kubernetes Operator 故障排除。

返回

快速入门