对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

配置 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无法访问权限互联网,请参阅配置部署以限制互联网访问。

关于兼容性,请参阅MongoDB控制器与Kubernetes Operator 的兼容性。要查看每个映像的所有可用版本,请参阅规划Kubernetes Operator 容器映像。

  • 部署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 mongodbNAME READY AGEops-manager-localmode 2/2 2m31sops-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下载安装存档。

apiVersion: mongodb.com/v1kind: MongoDBOpsManagermetadata: name: ops-manager-localmodespec: replicas: 2 version: "8.0.0" adminCredentials: ops-manager-admin-secret configuration: # this enables local mode in Ops Manager automation.versions.source: local statefulSet: spec: # the Persistent Volume Claim will be created for each Ops Manager Pod volumeClaimTemplates: - metadata: name: mongodb-versions spec: accessModes: [ "ReadWriteOnce" ] resources: requests: storage: "20Gi" template: spec: containers: - name: mongodb-ops-manager volumeMounts: - name: mongodb-versions # this is the directory in each Pod where all MongoDB # archives must be put mountPath: /mongodb-ops-manager/mongodb-releases backup: enabled: false applicationDatabase: 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 mongodbNAME READY AGE ops-manager-localmode 0/2 2m31sops-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 AGEmongodb-kubernetes-operator-5648d4c86-k5brh 1/1 Running 0 5m24sops-manager-localmode-0 0/1 Running 0 0m55sops-manager-localmode-1 1/1 Running 0 5m45sops-manager-localmode-db-0 1/1 Running 0 5m19sops-manager-localmode-db-1 1/1 Running 0 4m54sops-manager-localmode-db-2 1/1 Running 0 4m12s

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

    NAME READY STATUS RESTARTS AGEmongodb-kubernetes-operator-5648d4c86-k5brh 1/1 Running 0 5m24sops-manager-localmode-0 1/1 Running 0 3m55sops-manager-localmode-1 1/1 Running 0 5m45sops-manager-localmode-db-0 1/1 Running 0 5m19sops-manager-localmode-db-1 1/1 Running 0 4m54sops-manager-localmode-db-2 1/1 Running 0 4m12s
  4. 重复步骤b和c ,直到删除所有 Ops Manager Pod 并确认所有新 Pod 均已准备就绪。

8

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

kubectl get om -o yaml -w

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

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

status: applicationDatabase: lastTransition: "2020-05-15T16:20:22Z" members: 3 phase: Running type: ReplicaSet version: "8.0.0-ubi8" backup: phase: "" opsManager: lastTransition: "2020-05-15T16:20:26Z" phase: Running replicas: 1 url: http://ops-manager-localmode-svc.mongodb.svc.cluster.local:8080 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版本:

副本 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"

副本 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"
11
  1. 在部署 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 下载。