Docs 菜单
Docs 主页
/ /
/ / /

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

重要

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

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

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

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

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

For compatibility, see MongoDB Enterprise Kubernetes Operator Compatibility. To view all available versions for each image, see Container Images.

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

  • 为了避免在启用本地模式时出现停机,请确保在 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安装存档。在使用Kubernetes Operator 创建的MongoDB 数据库资源容器中运行的MongoDB助手会从MongoDB Ops Manager而不是从 Internet下载安装存档。

1apiVersion: mongodb.com/v1
2kind: MongoDBOpsManager
3metadata:
4 name: ops-manager-localmode
5spec:
6 replicas: 2
7 version: "8.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: "8.0.0-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: "8.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。 例如,要下载8.0.0版本:

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

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

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

注意

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

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

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

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

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

Replica 0:
oc rsync "ops-manager-localmode-0:/mongodb-ops-manager/mongodb-releases/mongodb-linux-x86_64-rhel80-8.0.0.tgz" \
mongodb-linux-x86_64-rhel80-8.0.0.tgz
Replica 1:
oc rsync "ops-manager-localmode-1:/mongodb-ops-manager/mongodb-releases/mongodb-linux-x86_64-rhel80-8.0.0.tgz" \
mongodb-linux-x86_64-rhel80-8.0.0.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 下载。