文章目录
- 前置
- 部署
- 创建 Headless
- 开始部署
- 测试
前置
背景:在 K8S 集群用 bitnami 部署 MongoDB 有一定的学习成本,有兴趣可以参考 k8s 部署 mongodb 三种模式,且部署后发现 MongoDB 会随着时间推移占用越来越多的内存,暂没找到原有,现介绍一种简单易用的部署方式
必要条件:部署 Rancher,可以参考 docker 部署 rancher
为什么选择 Rancher 呢,因为 Rancher 是一套容器管理平台,它可以帮助组织在生产环境中轻松快捷的部署和管理容器。 Rancher 可以轻松地管理各种环境的 Kubernetes,满足 IT 需求并为 DevOps 团队提供支持。
讨论:该选择部署 deployment 还是 SatefulSet,这里简单做个归纳
deployment 的主要功能
- 管理无状态应用
- 管理Pod和ReplicaSet
- 具有上线部署、副本设定、滚动升级、回滚等功能
- 提供声明式更新,例如只更新一个新的Image
- 应用场景:web服务
SatefulSet 的主要功能
- 管理有状态应用
- 解决Pod独立生命周期,保持 Pod 启动顺序和唯一性
- 稳定,唯一的网络标识符,持久存储(例如:etcd配置文件,节点地址发生变化,将无法使用)
- 有序,优雅的部署和扩展、删除和终止(例如:mysql主从关系,先启动主,再启动从),有序,滚动更新
- 应用场景:数据库
由于 MongoDB 是数据库,持久存储是重中之重,所以选择 SatefulSet
部署
创建 Headless
为什么要先创建 Headless,因为没有 Headless,创建 SatefulSet 时,Service Name 将无法选择,而 Service Name 是必填项
- 选择 Headless
- 自定义命名
- 配置端口
- 配置关键字
开始部署
-
选择 SatefulSet,点击 create
-
自定义命名
-
配置镜像名,这里使用最新 MongoDB 的 4.2 版本
-
配置端口,Cluster IP:集群内部访问端口, Node Port:外部访问端口
-
配置环境变量,分别是登录账号和登录密码
-
创建 pvc
-
自定义 pvc 名称,选择集群的 StorageClass,自定义 point 位置
-
完成
测试
使用 navicat 连接部署成功的 MongoDB
- 连接名:自定义
- 连接:选择 Standalone
- 主机:集群 IP
- 端口:Node Port 定义的端口
- 验证:选择 Password
- 用户名:由 MONGO_INITDB_ROOT_USERNAME 配置
- 密码:由 MONGO_INITDB_ROOT_PASSWORD 配置