在多 Kubernetes 集群中部署副本集
使用此过程可在多 Kubernetes 集群 MongoDB 部署中的成员 Kubernetes 集群中创建新副本集。
此过程允许您为副本集设立资源不同的设置,例如覆盖 statefulSet 配置。 作为使用此过程的替代方法,您可以使用多 Kubernetes 集群快速入门,它使用默认设置创建多 Kubernetes集群MongoDB 部署。
开始之前:
在多 Kubernetes集群MongoDB 部署中安装Kubernetes Operator。 请参阅多 Kubernetes 集群快速入门。
完成先决条件。
部署MongoDBMultiCluster
资源
您可以在此 TLS-Encrypted Connections标签页中使用以下步骤:
部署
MongoDBMultiCluster
资源为
MongoDBMultiCluster
资源续订 TLS 证书
这些过程在副本集的MongoDB主机之间以及客户端应用程序与MongoDB部署之间建立 TLS加密连接。
在开始之前,您必须拥有有效的TLS加密证书。
部署MongoDBMultiCluster
资源
为 资源的 TLSMongoDBMultiCluster
证书创建密钥。
运行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 通信 命名 TLSmdb-my-deployment-cert
密钥。此外,您必须将用于内部集群身份验证(如果已启用)的TLS密钥命名为mdb-my-deployment-clusterfile
。
复制并粘贴示例资源。
复制示例副本集YAML文件并将其粘贴到新的文本文件中。
更改文件的设置以匹配所需的副本集配置。
1 # This example provides statefulSet overrides per cluster. 2 3 apiVersion: mongodb.com/v1 4 kind: MongoDBMultiCluster 5 metadata: 6 name: multi-replica-set 7 spec: 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 ...
根据您的偏好更改设置的值。
键 | 类型 | 说明 | 例子 |
---|---|---|---|
字符串 | multi-replica-set | ||
字符串 | 此 Community 版的格式应为 重要提示:确保选择兼容的MongoDB Server版本。 兼容版本因MongoDB 数据库资源使用的基础映像而异。 要了解有关 MongoDB 版本控制的更多信息,请参阅 MongoDB 手册中的 MongoDB 版本控制。 | 6.0.0-ent | |
字符串 | ConfigMap 的名称MongoDB Ops Manager 连接配置。 此值必须与待创建的资源位于同一命名空间。 重要提示:Kubernetes Operator 会跟踪该 ConfigMap 的任何更改并协调 | <my-project> | |
spec .clusterSpecList .clusterName | 字符串 | MongoDBMultiCluster 资源中集群的名称。 | cluster1.example.com |
spec .clusterSpecList .members | 整型 | 此集群中的成员数。 | 2 |
spec .clusterSpecList .statefulSet .spec | 集合 | 可选。 为 StatefulSet 提供配置 覆盖多 Kubernetes集群MongoDB 部署中集群的每个 StatefulSet。如果在 | 请参阅示例。 |
spec .clusterSpecList .statefulSet .spec .volumeClaimTemplates .spec | 集合 | 可选。 如果已指定,则为每个集群覆盖 卷 声明模板 的默认存储大小 ,用于存储数据的持久卷。 | 请参阅示例。 |
字符串 | 您创建的 Secret 名称,其将作为 Ops Manager API 身份验证凭证,以便 Kubernetes Operator 与 Ops Manager 进行通信。 持有凭证的 Ops Manager Kubernetes Secret 对象必须与您要创建的资源位于同一个命名空间中。 重要提示:Kubernetes Operator 会跟踪该 Secret 的任何更改并协调 | <mycredentials> | |
字符串 | ReplicaSet |
为MongoDBMultiCluster
资源部署添加任何其他已接受的设置。
您还可以为 对象 添加任何可选设置 规范。请参阅多 Kubernetes 集群资源规范。
启动副本集部署。
在任意目录中,调用以下 Kubernetes 命令来创建副本集:
kubectl apply -f <replica-set-conf>.yaml
跟踪多 Kubernetes 集群 MongoDB 部署的状态。
要检查MongoDBMultiCluster
资源的状态,请在中央集群上使用以下命令:
kubectl get mdbmc <resource-name> -o yaml -w
设置 -w
(观看) 标志后,当配置更改时,输出将立即刷新,直到状态阶段达到 Running
状态。要了解有关资源部署状态的详情,请参阅 Kubernetes Operator 故障排除。
为 资源续订 TLS 证书MongoDBMultiCluster
使用以下过程定期续订TLS证书。
更新 MongoDBMultiCluster
资源的密钥。
运行此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> \ --dry-run=client \ -o yaml | kubectl apply -f -
此过程不会加密副本集MongoDB主机之间的连接,以及客户端应用程序与MongoDB部署之间的连接。
部署MongoDBMultiCluster
资源
复制并粘贴示例资源。
复制示例副本集YAML文件并将其粘贴到新的文本文件中。
更改文件的设置以匹配所需的副本集配置。
1 # This example provides statefulSet overrides per cluster. 2 3 apiVersion: mongodb.com/v1 4 kind: MongoDBMultiCluster 5 metadata: 6 name: multi-replica-set 7 spec: 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 ...
根据您的偏好更改设置的值。
键 | 类型 | 说明 | 例子 |
---|---|---|---|
字符串 | multi-replica-set | ||
字符串 | 此 Community 版的格式应为 重要提示:确保选择兼容的MongoDB Server版本。 兼容版本因MongoDB 数据库资源使用的基础映像而异。 要了解有关 MongoDB 版本控制的更多信息,请参阅 MongoDB 手册中的 MongoDB 版本控制。 | 6.0.0-ent | |
字符串 | ConfigMap 的名称MongoDB Ops Manager 连接配置。 此值必须与待创建的资源位于同一命名空间。 重要提示:Kubernetes Operator 会跟踪该 ConfigMap 的任何更改并协调 | <my-project> | |
spec .clusterSpecList .clusterName | 字符串 | MongoDBMultiCluster 资源中集群的名称。 | cluster1.example.com |
spec .clusterSpecList .members | 整型 | 此集群中的成员数。 | 2 |
spec .clusterSpecList .statefulSet .spec | 集合 | 可选。 为 StatefulSet 提供配置 覆盖多 Kubernetes集群MongoDB 部署中集群的每个 StatefulSet。如果在 | 请参阅示例。 |
spec .clusterSpecList .statefulSet .spec .volumeClaimTemplates .spec | 集合 | 可选。 如果已指定,则为每个集群覆盖 卷 声明模板 的默认存储大小 ,用于存储数据的持久卷。 | 请参阅示例。 |
字符串 | 您创建的 Secret 名称,其将作为 Ops Manager API 身份验证凭证,以便 Kubernetes Operator 与 Ops Manager 进行通信。 持有凭证的 Ops Manager Kubernetes Secret 对象必须与您要创建的资源位于同一个命名空间中。 重要提示:Kubernetes Operator 会跟踪该 Secret 的任何更改并协调 | <mycredentials> | |
字符串 | ReplicaSet |
为MongoDBMultiCluster
资源部署添加任何其他已接受的设置。
您还可以为 对象 添加任何可选设置 规范。请参阅多 Kubernetes 集群资源规范。
启动副本集部署。
在任意目录中,调用以下 Kubernetes 命令来创建副本集:
kubectl apply -f <replica-set-conf>.yaml
跟踪多 Kubernetes 集群 MongoDB 部署的状态。
要检查MongoDBMultiCluster
资源的状态,请在中央集群上使用以下命令:
kubectl get mdbmc <resource-name> -o yaml -w
设置 -w
(观看) 标志后,当配置更改时,输出将立即刷新,直到状态阶段达到 Running
状态。要了解有关资源部署状态的详情,请参阅 Kubernetes Operator 故障排除。