Docs 菜单
Docs 主页
/
MongoDB Enterprise Kubernetes Operator
/

配置 Ops Manager 资源以使用本地模式

在此页面上

重要

不建议将MongoDB Ops Manager配置为在Kubernetes中使用本地模式。 考虑将 配置为MongoDB Ops Manager以使用远程模式

在默认配置中, MongoDB Agent MongoDB , MongoDB

如果 集群中的节点无法访问互联网,您可以将MongoDB Ops Manager 配置为使用 Operator 在 本地模式下KubernetesKubernetes 运行。备份守护程序和托管MongoDB 资源仅从 持久卷 下载安装存档 为MongoDB Ops Manager StatefulSet 创建。

此过程涵盖将安装存档上传到 Ops Manager。

如果MongoDB Ops Manager无法访问权限互联网,请参阅配置部署以限制互联网访问。

有关兼容性,请参阅MongoDB Enterprise Kubernetes Operator 兼容性。 要查看每个映像的所有可用版本,请参阅容器映像。

  • 部署MongoDB Ops Manager资源。 以下过程向您展示如何更新MongoDB Ops ManagerKubernetes 对象 以启用本地模式。

  • 为了避免在启用本地模式时出现停机,请确保在 Ops Manager 资源定义中将 spec.replicas设置为大于1的值。

    如果您更新了 Ops Manager 资源定义以使 Ops Manager 高度可用,请在开始本教程之前应用更改:

    kubectl apply -f <opsmgr-resource>.yaml -n <metadata.namespace>
1

如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 kubectl 命令。

注意

MongoDB Ops Manager如果要在多 Kubernetes 集群 部署中部署MongoDB 资源:

  • context 设置为中心集群的名称,例如:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME"

  • --namespace设置为您用于多 Kubernetes 集群 MongoDB 部署的相同范围,例如: kubectl config --namespace "mongodb"

kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
2

在本教程中,您将更新用于管理 Kubernetes 集群中 Ops Manager Pod 的 StatefulSet。

您必须先删除 Ops Manager StatefulSet,这样 Kubernetes 才能应用本地模式所需的更新。

  1. 找到 Ops Manager StatefulSet 的名称:

    kubectl get statefulsets

    响应中与metadata.name匹配的条目

    您的 Ops Manager StatefulSet 是响应中与您的 Ops Manager 资源定义中的metadata.name匹配的条目。

    kubectl get statefulsets -n mongodb
    NAME READY AGE
    ops-manager-localmode 2/2 2m31s
    ops-manager-localmode-db 3/3 4m46s
  2. 删除 Ops Manager StatefulSet:

    警告

    删除 Ops Manager StatefulSet 时,确保包含--cascade=false标志。 如果不包含此标志,Kubernetes 还会删除 Ops Manager Pod。

    kubectl delete statefulset --cascade=false <ops-manager-statefulset>
3

将此示例的第 9-31 行复制到:

  • 使用 中的 配置设置MongoDB Ops Managerautomation.versions.source: local spec.configuration来启用本地模式。

  • 定义 持久卷 用于MongoDB Ops Manager StatefulSet存储MongoDB 安装存档。在使用MongoDB Agent Operator 创建的MongoDB数据库资源容器中运行的 MongoDB Kubernetes从MongoDB Ops Manager而不是从 Internet下载安装存档。

1apiVersion: mongodb.com/v1
2kind: MongoDBOpsManager
3metadata:
4 name: ops-manager-localmode
5spec:
6 replicas: 2
7 version: "6.0.0"
8 adminCredentials: ops-manager-admin-secret
9 configuration:
10 # this enables local mode in Ops Manager
11 automation.versions.source: local
12 statefulSet:
13 spec:
14 # the Persistent Volume Claim will be created for each Ops Manager Pod
15 volumeClaimTemplates:
16 - metadata:
17 name: mongodb-versions
18 spec:
19 accessModes: [ "ReadWriteOnce" ]
20 resources:
21 requests:
22 storage: "20Gi"
23 template:
24 spec:
25 containers:
26 - name: mongodb-ops-manager
27 volumeMounts:
28 - name: mongodb-versions
29 # this is the directory in each Pod where all MongoDB
30 # archives must be put
31 mountPath: /mongodb-ops-manager/mongodb-releases
32 backup:
33 enabled: false
34 applicationDatabase:
35 members: 3
4

打开您首选的文本编辑器并粘贴 对象 规范到资源文件中的相应位置。

5
6
  1. 对 Ops Manager 资源定义的文件名调用以下kubectl命令:

    kubectl apply -f <opsmgr-resource>.yaml
  2. 当您将更改应用于 Ops Manager 资源定义时,Kubernetes 会创建一个新的 Ops Manager StatefulSet。在继续下一步之前,请运行以下命令以确保 Ops Manager StatefulSet 存在:

    kubectl get statefulsets

    新的 Ops Manager StatefulSet 应显示 0 个节点已就绪:

    kubectl get statefulsets -n mongodb
    NAME READY AGE ops-manager-localmode 0/2 2m31s
    ops-manager-localmode-db 3/3 4m46s
7
  1. 列出 Kubernetes 集群中的 Ops Manager Pods:

    kubectl get pods
  2. 删除一个 Ops Manager Pod:

    kubectl delete pod <om-pod-0>
  3. Kubernetes 重新创建您删除的 Ops Manager Pod。继续获取新 Pod 的状态,直到其准备就绪:

    kubectl get pods

    当新 Pod 初始化时,输出类似于以下示例:

    NAME READY STATUS RESTARTS AGE
    mongodb-enterprise-operator-5648d4c86-k5brh 1/1 Running 0 5m24s
    ops-manager-localmode-0 0/1 Running 0 0m55s
    ops-manager-localmode-1 1/1 Running 0 5m45s
    ops-manager-localmode-db-0 1/1 Running 0 5m19s
    ops-manager-localmode-db-1 1/1 Running 0 4m54s
    ops-manager-localmode-db-2 1/1 Running 0 4m12s

    当新 Pod 准备就绪时,输出类似于以下示例:

    NAME READY STATUS RESTARTS AGE
    mongodb-enterprise-operator-5648d4c86-k5brh 1/1 Running 0 5m24s
    ops-manager-localmode-0 1/1 Running 0 3m55s
    ops-manager-localmode-1 1/1 Running 0 5m45s
    ops-manager-localmode-db-0 1/1 Running 0 5m19s
    ops-manager-localmode-db-1 1/1 Running 0 4m54s
    ops-manager-localmode-db-2 1/1 Running 0 4m12s
  4. 重复步骤bc ,直到删除所有 Ops Manager Pod 并确认所有新 Pod 均已准备就绪。

8

要检查 Ops Manager 资源的状态,请调用以下命令:

kubectl get om -o yaml -w

有关资源部署状态的信息,请参阅排除 Kubernetes 操作符故障

Ops Manager 资源完成Pending阶段后,该命令将返回类似于以下内容的输出:

1status:
2 applicationDatabase:
3 lastTransition: "2020-05-15T16:20:22Z"
4 members: 3
5 phase: Running
6 type: ReplicaSet
7 version: "4.4.5-ubi8"
8 backup:
9 phase: ""
10 opsManager:
11 lastTransition: "2020-05-15T16:20:26Z"
12 phase: Running
13 replicas: 1
14 url: http://ops-manager-localmode-svc.mongodb.svc.cluster.local:8080
15 version: "6.0.0"

复制status.opsManager.url字段的值,该字段说明资源的连接 URL 。 您可以在创建 ConfigMap 时使用此值 在此过程的稍后部分中。

9

下载的安装程序取决于部署 Operator 的环境:

注意

以下示例包含一个链接,允许您下载指定版本的 MongoDB Community Edition。 要下载任何其他版本的 MongoDB Community Edition,请访问MongoDB Community Edition下载中心。 要下载MongoDB Enterprise ,请访问MongoDB Enterprise下载中心。

下载您希望 Kubernetes Operator 部署的 MongoDB Server 版本的 RHEL 安装 tarball。 例如,要下载6.0.1版本:

curl -OL https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel80-6.0.1.tgz
10

将您打算部署的每个 MongoDB 版本的 MongoDB 存档复制到 Ops Manager 持久卷。

您使用的命令取决于部署 Kubernetes 操作符的环境:

注意

如果部署了多个 Ops Managerreplica ,请仅将 MongoDBtarball 安装包复制到Replica 1 及更高版本。

要将 MongoDB 安装存档复制到 Ops Manager PersistentVolume,请执行以下操作:

将 MongoDB Server 安装 tarball 复制到 Ops Manager PersistentVolume。例如,要复制6.0.1版本:

Replica 0:
kubectl cp mongodb-linux-x86_64-rhel80-6.0.1.tgz \
"ops-manager-localmode-0:/mongodb-ops-manager/mongodb-releases/mongodb-linux-x86_64-rhel80-6.0.1.tgz"
Replica 1:
kubectl cp mongodb-linux-x86_64-rhel80-6.0.1.tgz \
"ops-manager-localmode-1:/mongodb-ops-manager/mongodb-releases/mongodb-linux-x86_64-rhel80-6.0.1.tgz"

要将MongoDB安装存档复制到MongoDB Ops Manager PersistentVolume,请将MongoDB Server安装 tarball 复制到MongoDB Ops Manager PersistentVolume。 示例,要复制6.0.1发布:

Replica 0:
oc rsync "ops-manager-localmode-0:/mongodb-ops-manager/mongodb-releases/mongodb-linux-x86_64-rhel80-6.0.1.tgz" \
mongodb-linux-x86_64-rhel80-6.0.1.tgz
Replica 1:
oc rsync "ops-manager-localmode-1:/mongodb-ops-manager/mongodb-releases/mongodb-linux-x86_64-rhel80-6.0.1.tgz" \
mongodb-linux-x86_64-rhel80-6.0.1.tgz
11
  1. 如果尚未完成,请完成以下先决条件:

  2. 在部署 Ops Manager 的同一命名空间中部署MongoDB 数据库资源。 确保您:

    1. 将资源的spec.opsManager.configMapRef.name与 ConfigMap 的metadata.name进行匹配。

    2. 将资源的spec.credentials与您创建的包含 Ops Manager 编程 API 密钥对的密钥名称进行匹配。

助手在您使用 OperatorMongoDB Agent MongoDB创建的 数据库资源容器中运行。Kubernetes从MongoDB Ops Manager下载安装存档,而不是从 Internet 下载。