配置 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>
步骤
将kubectl
配置为默认命名空间。
如果您尚未执行,请运行以下命令,执行所创建命名空间的所有 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>
删除 StatefulSet 用于管理您的Ops Manager Pod。
在本教程中,您将更新用于管理 Kubernetes 集群中 Ops Manager Pod 的 StatefulSet。
您必须先删除 Ops Manager StatefulSet,这样 Kubernetes 才能应用本地模式所需的更新。
找到 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 删除 Ops Manager StatefulSet:
警告
删除 Ops Manager StatefulSet 时,确保包含
--cascade=false
标志。 如果不包含此标志,Kubernetes 还会删除 Ops Manager Pod。kubectl delete statefulset --cascade=false <ops-manager-statefulset>
复制此 Ops Manager 资源的字段。
将此示例的第 9-31 行复制到:
使用 中的 配置设置MongoDB Ops Manager
automation.versions.source: local
spec.configuration
来启用本地模式。定义 持久卷 用于MongoDB Ops Manager StatefulSet存储MongoDB 安装存档。在使用MongoDB Agent Operator 创建的MongoDB数据库资源容器中运行的 MongoDB Kubernetes从MongoDB Ops Manager而不是从 Internet下载安装存档。
1 apiVersion: mongodb.com/v1 2 kind: MongoDBOpsManager 3 metadata: 4 name: ops-manager-localmode 5 spec: 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
将复制的示例部分粘贴到现有的 Ops Manager 资源中。
打开您首选的文本编辑器并粘贴 对象 规范到资源文件中的相应位置。
将更改应用于 Ops Manager 部署。
对 Ops Manager 资源定义的文件名调用以下
kubectl
命令:kubectl apply -f <opsmgr-resource>.yaml 当您将更改应用于 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
以滚动方式删除旧的 Ops Manager Pod。
列出 Kubernetes 集群中的 Ops Manager Pods:
kubectl get pods 删除一个 Ops Manager Pod:
kubectl delete pod <om-pod-0> 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 重复步骤b和c ,直到删除所有 Ops Manager Pod 并确认所有新 Pod 均已准备就绪。
追踪你的 Ops Manager 实例的状态。
要检查 Ops Manager 资源的状态,请调用以下命令:
kubectl get om -o yaml -w
有关资源部署状态的信息,请参阅排除 Kubernetes 操作符故障。
Ops Manager 资源完成Pending
阶段后,该命令将返回类似于以下内容的输出:
1 status: 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 时使用此值 在此过程的稍后部分中。
将 MongoDB 安装存档下载到本地计算机。
下载的安装程序取决于部署 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
将 MongoDB 存档复制到 Ops Manager 持久卷。
将您打算部署的每个 MongoDB 版本的 MongoDB 存档复制到 Ops Manager 持久卷。
您使用的命令取决于部署 Kubernetes 操作符的环境:
注意
如果部署了多个 Ops Managerreplica
,请仅将 MongoDBtarball
安装包复制到Replica 1
及更高版本。
要将 MongoDB 安装存档复制到 Ops Manager PersistentVolume,请执行以下操作:
将 MongoDB Server 安装 tarball 复制到 Ops Manager PersistentVolume。例如,要复制6.0.1
版本:
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"
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
发布:
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
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
部署MongoDB database资源。
如果尚未完成,请完成以下先决条件:
在部署 Ops Manager 的同一命名空间中部署MongoDB 数据库资源。 确保您:
将资源的
spec.opsManager.configMapRef.name
与 ConfigMap 的metadata.name
进行匹配。将资源的
spec.credentials
与您创建的包含 Ops Manager 编程 API 密钥对的密钥名称进行匹配。
助手在您使用 OperatorMongoDB Agent MongoDB创建的 数据库资源容器中运行。Kubernetes从MongoDB Ops Manager下载安装存档,而不是从 Internet 下载。