游乐游手机版
首页/数据库/文章详情

Kubernetes中部署MongoDB副本集的完整步骤指南

时间:2026-08-24 09:17
目前,MongoDB Controllers for Kubernetes Operator 是当前唯一受支持的生产级部署方案,MongoDB Enterprise Kubernetes Operator 已于 2026 年正式停用。现在必须使用新 Helm 仓库 https: mongodb g

目前,MongoDB Controllers for Kubernetes Operator 是当前唯一受支持的生产级部署方案,MongoDB Enterprise Kubernetes Operator 已于 2026 年正式停用。现在必须使用新 Helm 仓库 https://mongodb.github.io/helm-charts 中的 mongodb/mongodb-kubernetes chart,并正确配置 Cloud Manager/Ops Manager API Key、强制启用 TLS、显式设置 externalAccess 以及 publishNotReadyAddress: true。

如何在Kubernetes中部署MongoDB副本集?

直接说结论:在 Kubernetes 中部署 MongoDB 副本集时,使用 MongoDB Controllers for Kubernetes Operator 是目前唯一官方支持的生产环境方式,而 MongoDB Enterprise Kubernetes Operator 已在 2026 年完成弃用,最后版本生命周期也已结束。

确认 Operator 版本与 Helm 仓库

这一步不要省略,很多 MongoDB on Kubernetes 部署失败、连接异常或 CRD 不生效的问题,根源都在于使用了旧仓库或已废弃的 chart。

  • 必须使用新的 Helm 仓库:https://mongodb.github.io/helm-charts,旧的 stable/mongodb-enterprise 等仓库已经不可用
  • 应安装的是 mongodb/mongodb-kubernetes chart,而不是 mongodb/enterprise-operator,后者对应的是已弃用的旧版 Operator
  • 检查本地 Helm 仓库是否已更新:helm repo update;如果之前添加过旧源,建议先执行 helm repo remove mongodb,再重新添加新仓库

部署 Operator 前必须配置 Cloud Manager / Ops Manager API Key

Operator 启动后会立即尝试连接 Cloud Manager 或 Ops Manager(6.0.x+)。如果相关配置不完整,部署通常会卡在 Pending 状态,日志中还会反复出现 Unauthorized 或 connection refused 等报错。

  • 登录 Cloud Manager 控制台,进入 Kubernetes Settings,然后选择 Generate Key and YAML
  • 生成后的 config-map.yaml 必须提前执行 apply,并确保其中的 baseUrl 能被 Operator Pod 正常访问,例如不能填写 localhost 或集群无法访问的内网地址
  • API Key 权限必须包含 Automation Administrator 角色,仅分配 Viewer 权限会导致资源创建请求被拒绝

定义 MongoDBReplicaSet CR 时 TLS 是必须显式配置的关键项

如果没有明确声明 spec.security.tls.enabled,Operator 默认会关闭 TLS;但 Cloud Manager 6.0.10+ 实际要求所有新建 MongoDB 副本集启用 TLS,否则部署过程通常会停留在 WaitingForAgent 状态。

  • 如果使用自签名证书,必须同时提供:spec.security.certsSecretPrefix(指向包含 ca.pem、server.pem 等文件的 Secret)以及 spec.security.tls.ca(CA 公钥内容)
  • 如果使用 Let’s Encrypt 或云服务厂商提供的证书,需要确保 Secret 中的 key 名称为 tls.crt 和 tls.key,这样 Operator 才能正确自动挂载
  • 常见错误示例:只设置 spec.security.tls.enabled: true,却没有配置 certsSecretPrefix,会导致 Pod 启动失败,并报出 failed to load TLS certificate

外部访问必须显式开启 externalAccess

MongoDB 副本集成员默认只能通过 Kubernetes 集群内部 DNS 解析,例如 mongo-0.mongo-svc.mongodb.svc.cluster.local。如果要让外部应用连接 MongoDB,仅仅暴露 Service NodePort 并不足够,因为 Operator 不会自动对外发布成员访问地址。

  • 必须在 CR 中明确设置:externalAccess: {},否则 Operator 不会创建 LoadBalancer 类型的外部访问服务
  • 每个 Pod 都会生成一个独立的 -svc-external Service,名称固定不可修改,默认端口为 27017
  • publishNotReadyAddress: true 是必须项,如果设置为 false,会导致 DNS 记录生成延迟,进而引发客户端首次连接超时
真正容易被忽视的一点是:Cloud Manager 对 Kubernetes 集群的准入校验会在 CR 创建后的 30 秒内触发。如果此时 Operator Pod 还没有完成初始化,例如 configmap 尚未加载完成,或 API Key 权限还未同步,CR 可能会被静默拒绝,而且事件列表中不一定显示错误信息——这时需要进入 Operator Pod 日志,搜索 Failed to create automation config,才能定位真实原因。
来源:https://www.php.cn/faq/3024293.html
上一篇Redis缓存命中率低如何通过监控数据定位根本原因 下一篇Navicat如何逆向生成Oracle数据库ER图
本站内容用于信息整理与展示,如有侵权或内容问题请及时联系处理。

相关推荐

补充同频道和同主题内容,方便继续浏览更多相关内容。

同类最新

继续查看同栏目最近更新的文章。

更多
Redis是什么:核心特性、架构与应用场景解析
数据库 · 2026-09-01

Redis是什么:核心特性、架构与应用场景解析

Redis是一款基于内存的键值型NoSQL数据库,以超高读写速度和丰富的数据结构著称。本文系统梳理Redis的核心特性、架构组成、性能优势及典型应用场景,并通过与Memcached、MySQL、MongoDB的对比,帮助开发者快速判断Redis是否适合当前业务需求。

Windows 安装 MongoDB 完整图文教程
数据库 · 2026-09-01

Windows 安装 MongoDB 完整图文教程

本文详细介绍在 Windows 系统上安装 MongoDB 的完整流程。从官网下载 MSI 安装包开始,逐步演示自定义安装路径、配置 Windows 服务、跳过 MongoDB Compass 等关键选项,并提供通过系统服务列表验证安装是否成功的方法,帮助开发者快速搭建本地 MongoDB 环境。

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动
数据库 · 2026-09-01

Linux 安装 MongoDB 完整指南:依赖配置、环境变量与服务启动

本文详解在 Linux 系统下安装 MongoDB 的完整流程,涵盖依赖包安装、二进制包下载解压、环境变量配置、数据与日志目录创建及服务启动验证。通过标准化命令与路径说明,帮助开发者快速完成部署并确认服务状态。

MacOS安装MongoDB完整教程
数据库 · 2026-09-01

MacOS安装MongoDB完整教程

本文介绍在MacOS系统下安装MongoDB的完整流程,涵盖下载、解压、目录配置、环境变量设置及服务启动。通过明确的命令与参数说明,帮助开发者快速完成环境搭建并验证安装结果。

Ubuntu系统安装与配置Redis完整指南
数据库 · 2026-09-01

Ubuntu系统安装与配置Redis完整指南

本文详解在Ubuntu系统中安装Redis的两种主流方式:apt在线安装与源码编译安装。涵盖版本选择逻辑、服务启停与状态检查、连接验证方法,以及在线练习工具与桌面GUI客户端的对比与使用建议,帮助开发者快速搭建并验证Redis运行环境。