容器技术
ubuntu使用APT安装docker并指定版本
Helm部署与使用
Helm常用命令
从Helm仓库创建应用流程示例
Helm部署与使用
K8S中部署mysql-ha高可用集群
helm启动mysql-ha
helm几个常用仓库
Kubernetes使用helm部署Mysql-Ha
k8s入门:Helm 构建 MySQL
docker批量修改tag(批量push)
k8s之yaml文件详解
将 MySQL 通过 bitpoke/mysql-operator 部署到 k8s 内部
k8s pvc扩容:pvc创建后扩容
K8S性能分析
部署Metrics Server
Kubernetes集群搭建
kubespray 部署常见问题和优化汇总
kubernetes-sigs/kubespray at release-2.15
K8S-pod配置文件详解
KubeSphere知识库
在 Kubernetes 上最小化安装 KubeSphere
卸载 KubeSphere 和 Kubernetes
KubeSphere 应用商店
修改pod中容器的时区
k8s之Pod安全策略
Harbor 登陆失败,用户名或者密码不正确。405 Not Allowed
Docker-leanote_n1
kubesphere/kubekey
Kubernetes Static Pod (静态Pod)
kubernets kube-proxy的代理 iptables和ipvs - 30岁再次出发 - 博客园
k8s生产实践之获取客户端真实IP - SSgeek - 博客园
kube-proxy ip-tables故障解决
k8s入门:Helm 构建 MySQL
docker批量修改tag(批量push)
prometheus operator 监控redis-exporter
Helm3 安装 ElasticSearch & Kibana 7.x 版本
kubernete强力删除namespace_redis删除namespace命令
EFK (Elasticsearch + Fluentd + Kibana) 日志分析系统
k8s日志收集实战(无坑)
fluentd收集k8s集群pod日志
Elasticsearch+Fluentd+Kibana 日志收集系统的搭建
TKE/EKS之configmap,secret只读挂载
K8s基于Reloader的ConfigMap/Secret热更新
使用 Reloader 实现热部署_k8s reloader
k8s使用Reloader实现更新configmap后自动重启pod
在 Kubernetes 上对 gRPC 服务器进行健康检查 | Kubernetes
Kubernetes ( k8s ) gRPC服务 健康检查 ( livenessProbe ) 与 就绪检查 ( readinessProbe )
排查kubernetes中高磁盘占用pod
helm 安装 MongoDB 集群
helm 安装 Redis 1 主 2 从 3哨兵
【k8s】使用 Reloader 实现热部署
k8s证书过期,更新后kubelet启动失败
kubeadm证书/etcd证书过期处理
三种监控 Kubernetes 集群证书过期方案
K8s 集群(kubeadm) CA 证书过期解决方案
k8s调度、污点、容忍、不可调度、排水、数据卷挂载
5分钟搞懂K8S的污点和容忍度(理论+实战)
Kubernetes进阶-8基于Istio实现微服务治理
macvlan案例配置
快速解决Dockerhub镜像站无法访问问题
info_scan开源漏洞扫描主系统部署
本文档使用 MrDoc 发布
-
+
首页
helm 安装 MongoDB 集群
## 资源清单 > 本文安装 `MongoDB` 依赖 `K8S集群` 和 `helm` ,本文不提供 `K8S集群` 和 `helm` 安装方式 > 使用此文档部署,需要自行解决 storageClass 问题 ( NFS, ceph, openebs等 ) | 软件 | 版本 | | --- | --- | | chart | 12.1.11 | | mongodb | 5.0.8 | | kubernetes | v1.19.3 | | helm | v3.8.1 | ## `helm` 安装 `MongoDB 3副本集` ### 1\. 添加 `bitnami` 的仓库 ```shell $ helm repo add bitnami https://charts.bitnami.com/bitnami ``` ### 2\. 查询 `MongoDB` 资源 ```shell $ helm repo update $ helm search repo mongodb NAME CHART VERSION APP VERSION DESCRIPTION bitnami/mongodb 12.1.11 5.0.8 MongoDB(R) is a relational open source NoSQL da... bitnami/mongodb-sharded 5.0.5 5.0.8 MongoDB(R) is an open source NoSQL database tha... bitnami/mean 6.1.2 4.6.2 DEPRECATED MEAN is a free and open-source JavaS... ``` ### 3\. 拉取 `MongoDB chart` 到本地 ```shell $ mkdir /root/mongodb && cd /root/mongodb # 拉取 chart 到本地 /root/mongodb 目录 $ helm pull bitnami/mongodb --version 12.1.11 $ tar -xvf mongodb-12.1.11.tgz $ cp mongodb/values.yaml ./values-test.yaml # 查看当前目录层级 $ tree -L 2 . ├── mongodb │ ├── Chart.lock │ ├── charts │ ├── Chart.yaml │ ├── README.md │ ├── templates │ ├── values.schema.json │ └── values.yaml ├── mongodb-12.1.11.tgz └── values-test.yaml ``` ### 4\. 对本地 `values-test.yaml` 修改 ```shell $ kubectl get storageclasses.storage.k8s.io NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE openebs-device openebs.io/local Delete WaitForFirstConsumer false 34d openebs-hostpath openebs.io/local Delete WaitForFirstConsumer false 34d openebs-jiva-default jiva.csi.openebs.io Delete Immediate true 33d ``` ```shell $ cat values-test.yaml ## 配置文件中定义 storageClass: "",会使用集群配置的 openebs 提供的 storageClass, ## 使用此文档部署,需要自行解决 storageClass 问题 (ceph, nfs, 公有云提供的 nfs) global: # 定义 storageClass 使用的类型 storageClass: "openebs-jiva-default" # 定义 mongodb 集群为副本集模式 architecture: replicaset # 启动集群认证功能,设置超级管理员账户密码 auth: enabled: true rootUser: root rootPassword: "root" # 设置集群数量,3个 replicaCount: 3 # 定义 pod 的 nodeSelector nodeSelector: { "node": "middleware" } # 启用持久化存储,使用 global.storageClass 自动创建 pvc persistence: enabled: true size: 20Gi ``` ### 5\. 安装 `MongoDB 集群` ```shell # 创建 test-middleware 名称空间 $ kubectl create ns test-middleware # 安装 MongoDB 集群 $ helm -n test-middleware install mongodb-cluster mongodb -f value-test.yaml ## helm -n NAMESAPCE install SERVER_NAME FILE_NAME -f CONFIG_FILE -n 指定 kubernetes 集群名称空间 -f 指定使用的配置文件,文件中定义的配置可以覆盖 mongodb/values.yaml 文件中配置 NAME: mongodb-cluster LAST DEPLOYED: Thu May 26 10:46:14 2022 NAMESPACE: test-middleware STATUS: deployed REVISION: 1 TEST SUITE: None NOTES: CHART NAME: mongodb CHART VERSION: 12.1.11 APP VERSION: 5.0.8 ** Please be patient while the chart is being deployed ** MongoDB® can be accessed on the following DNS name(s) and ports from within your cluster: mongodb-cluster-0.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017 mongodb-cluster-1.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017 mongodb-cluster-2.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017 To get the root password run: export MONGODB_ROOT_PASSWORD=$(kubectl get secret --namespace test-middleware mongodb-cluster -o jsonpath="{.data.mongodb-root-password}" | base64 --decode) To connect to your database, create a MongoDB® client container: kubectl run --namespace test-middleware mongodb-cluster-client --rm --tty -i --restart='Never' --env="MONGODB_ROOT_PASSWORD=$MONGODB_ROOT_PASSWORD" --image docker.io/bitnami/mongodb:5.0.8-debian-10-r24 --command -- bash Then, run the following command: mongosh admin --host "mongodb-cluster-0.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017,mongodb-cluster-1.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017,mongodb-cluster-2.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017" --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD ``` ### 6\. 查看部署的 `MongoDB` 集群 ```shell $ helm -n test-middleware list NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION mongodb-cluster test-middleware 1 2022-05-26 10:46:14.388002385 +0800 CST deployed mongodb-12.1.11 5.0.8 $ kubectl -n test-middleware get pods -l app.kubernetes.io/name=mongodb NAME READY STATUS RESTARTS AGE mongodb-cluster-0 1/1 Running 0 77m mongodb-cluster-1 1/1 Running 0 77m mongodb-cluster-2 1/1 Running 0 76m mongodb-cluster-arbiter-0 1/1 Running 0 77m ``` ```shell # 查看 pvc $ kubectl -n test-middleware get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE datadir-mongodb-cluster-0 Bound pvc-d6a4c7d8-ede5-4545-8b8c-fd471025aea6 20Gi RWO nfs-dynamic-class 78m datadir-mongodb-cluster-1 Bound pvc-0b9a6c9b-7a32-4aac-9684-21c633345537 20Gi RWO nfs-dynamic-class 77m datadir-mongodb-cluster-2 Bound pvc-62614e7b-b20e-4ea7-973a-72213d868a6b 20Gi RWO nfs-dynamic-class 77m # 查看 pv $ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pvc-0b9a6c9b-7a32-4aac-9684-21c633345537 20Gi RWO Delete Bound test-middleware/datadir-mongodb-cluster-1 nfs-dynamic-class 78m pvc-62614e7b-b20e-4ea7-973a-72213d868a6b 20Gi RWO Delete Bound test-middleware/datadir-mongodb-cluster-2 nfs-dynamic-class 78m pvc-d6a4c7d8-ede5-4545-8b8c-fd471025aea6 20Gi RWO Delete Bound test-middleware/datadir-mongodb-cluster-0 nfs-dynamic-class 78m ``` ### 7\. 连接 `MongoDB 集群` 验证服务 ``` mongosh admin --host "mongodb-cluster-0.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017,mongodb-cluster-1.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017,mongodb-cluster-2.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017" --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD # 获取 Mongodb 集群的密码 $ kubectl get secret --namespace test-middleware mongodb-cluster -o jsonpath="{.data.mongodb-root-password}" | base64 --decode root # 启动一个临时容器 $ export MONGODB_ROOT_PASSWORD=$(kubectl get secret --namespace test-middleware mongodb-cluster -o jsonpath="{.data.mongodb-root-password}" | base64 --decode) $ kubectl run --namespace test-middleware mongodb-cluster-client --rm --tty -i --restart='Never' --env="MONGODB_ROOT_PASSWORD=$MONGODB_ROOT_PASSWORD" --image docker.io/bitnami/mongodb:5.0.8-debian-10-r24 --command -- bash ## 登陆 Mongodb Cluster $ mongosh admin --host "mongodb-cluster-0.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017,mongodb-cluster-1.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017,mongodb-cluster-2.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017" --authenticationDatabase admin -u root -p $MONGODB_ROOT_PASSWORD rs0 [primary] admin> rs.conf() { _id: 'rs0', version: 8, term: 2, members: [ { _id: 0, host: 'mongodb-cluster-0.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017', arbiterOnly: false, buildIndexes: true, hidden: false, priority: 5, tags: {}, secondaryDelaySecs: Long("0"), votes: 1 }, { _id: 1, host: 'mongodb-cluster-arbiter-0.mongodb-cluster-arbiter-headless.test-middleware.svc.cluster.local:27017', arbiterOnly: true, buildIndexes: true, hidden: false, priority: 0, tags: {}, secondaryDelaySecs: Long("0"), votes: 1 }, { _id: 2, host: 'mongodb-cluster-1.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017', arbiterOnly: false, buildIndexes: true, hidden: false, priority: 1, tags: {}, secondaryDelaySecs: Long("0"), votes: 1 }, { _id: 3, host: 'mongodb-cluster-2.mongodb-cluster-headless.test-middleware.svc.cluster.local:27017', arbiterOnly: false, buildIndexes: true, hidden: false, priority: 1, tags: {}, secondaryDelaySecs: Long("0"), votes: 1 } ], protocolVersion: Long("1"), writeConcernMajorityJournalDefault: true, settings: { chainingAllowed: true, heartbeatIntervalMillis: 2000, heartbeatTimeoutSecs: 10, electionTimeoutMillis: 10000, catchUpTimeoutMillis: -1, catchUpTakeoverDelayMillis: 30000, getLastErrorModes: {}, getLastErrorDefaults: { w: 1, wtimeout: 0 }, replicaSetId: ObjectId("628eea0fdd0ee8dc91a88441") } } ``` ## 参考文档 ``` https://artifacthub.io/packages/helm/bitnami/mongodb/12.1.11 ```
adouk
2024年1月22日 14:09
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码