首页 > 数据库 >K8s - 安装部署MongoDB数据库教程1(单实例)

K8s - 安装部署MongoDB数据库教程1(单实例)

时间:2023-09-11 19:24:58浏览次数:45  
标签:教程 name 创建 MongoDB nfs mongodb K8s mongo

来源: https://www.hangge.com/blog/cache/detail_3158.html

MongoDB 是一个基于分布式文件存储的数据库。我之前文件中介绍如何使用官方提供的安装包进行 MongoDB 数据库的安装(点击查看),以及如何通过 Docker 来快速搭建 MongoDB 数据库环境(点击查看)。本文接着演示如何在 Kubernetes 集群上部署 MongoDB 数据库服务。

 

一、单节点部署

1,创建 NFS 存储

    NFS 存储主要是为了给 MongoDB 提供稳定的后端存储,当 MongoDB 的 Pod 发生故障重启或迁移后,依然能获得原先的数据。 (1)这里我选择在 master 节点创建 NFS 存储,首先执行如下命令安装 NFS:
1 2 yum -y install nfs-utils yum -y install rpcbind

 

(2)接着要创建共享文件夹,我们执行如下命令创建 1 个文件夹:
1 mkdir -p /usr/local/k8s/mongodb/pv


(3)编辑 /etc/exports 文件:

1 vi /etc/exports


(4)在里面添加如下内容:

1 /usr/local/k8s/mongodb/pv *(rw,sync,no_root_squash)


(5)保存退出后执行如下命令重启服务:

如果执行 systemctl restart nfs 报“Failed to restart nfs.service: Unit nfs.service not found.”错误,可以尝试改用如下命令:
  • sudo service nfs-server start
1 2 3 systemctl restart rpcbind systemctl restart nfs.service systemctl enable nfs.service


(6)执行 exportfs -v 命令可以显示出所有的共享目录:

原文:K8s - 安装部署MongoDB数据库教程1(单实例) (7)而其他的 Node 节点上需要执行如下命令安装 nfs-utils 客户端:
1 yum -y install nfs-utils


(8)然后其他的 Node 节点上可执行如下命令(ip 为 Master 节点 IP)查看 Master 节点上共享的文件夹:

1 showmount -e 10.0.16.8
原文:K8s - 安装部署MongoDB数据库教程1(单实例)  

2、部署 MongoDB 应用服务

(1)首先创建一个名为 mongodb.yaml 的配置文件,文件里的内容如下:

# 创建PV
apiVersion: v1
kind: PersistentVolume
metadata:
name: mongodb-pv
namespace: default
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteMany
persistentVolumeReclaimPolicy: Retain
storageClassName: nfs-mongodb
nfs:
path: /usr/local/k8s/mongodb/pv
server: 10.0.16.8

---
# 创建pvc
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mongodb-pvc
namespace: default
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
storageClassName: nfs-mongodb

---
# 创建Service
apiVersion: v1
kind: Service
metadata:
name: mongodb-svc
namespace: default
spec:
type: NodePort
ports:
- name: mongo
port: 27017
targetPort: 27017
nodePort: 30017
protocol: TCP
selector:
app: mongodb

---
# 创建Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongo-deploy
namespace: default
spec:
replicas: 1
selector:
matchLabels:
app: mongodb
template:
metadata:
labels:
app: mongodb
spec:
containers:
- name: mongodb
image: mongo:4.4
imagePullPolicy: IfNotPresent
ports:
- containerPort: 27017
volumeMounts:
- name: mongo-pvc
mountPath: /data/db
volumes:
- name: mongo-pvc
persistentVolumeClaim:
claimName: mongodb-pvc


(2)接着执行如下命令对这个 YAML 文件进行部署:

1 kubectl apply -f mongodb.yaml


(3)稍等片刻,执行如下命令可以查看是否创建成功:

1 2 3 kubectl get pv kubectl get pods kubectl get service
原文:K8s - 安装部署MongoDB数据库教程1(单实例)

 

3,访问测试

(1)我们使用客户端工具连接上我们刚刚创建的 MongoDB,然后创建一个 hangge 数据库以及 test 集合,并给集合中插入一些数据,说明 MongoDB 部署成功。

原文:K8s - 安装部署MongoDB数据库教程1(单实例) (2)接着执行如下命令强制重启 pod,重启后再次查看数据库可以发现数据没有丢失,说明数据持久化也是成功的。
1 kubectl replace --force -f mongodb.yaml

 

附:开启用户权限认证

(1)通过上面步骤部署好的 MongoDB 数据库无需用户名、密码即可连接,如果想要开启权限验证,只需要在 YAML 文件中入环境变量 MONGO_INITDB_ROOT_USERNAME 和 MONGO_INITDB_ROOT_PASSWORD 即可。

注意:由于我这里将密码设置为纯数字(12345),因此需要加上引号。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 # 创建Deployment apiVersion: apps/v1 kind: Deployment metadata:   name: mongo-deploy   namespace: default spec:   replicas: 1   selector:     matchLabels:       app: mongodb   template:     metadata:       labels:         app: mongodb     spec:       containers:         - name: mongodb           image: mongo:4.4           imagePullPolicy: IfNotPresent           env:             - name: MONGO_INITDB_ROOT_USERNAME               value: root             - name: MONGO_INITDB_ROOT_PASSWORD               value: '12345'           ports:             - containerPort: 27017           volumeMounts:             - name: mongo-pvc               mountPath: /data/db       volumes:         - name: mongo-pvc           persistentVolumeClaim:             claimName: mongodb-pvc


(2)注意如果之前已经使用没有鉴权的方式部署过 MongoDB,并且做了持久化,那么再改动 YMAL 文件重新部署是不会起作用的。这种情况我们可以进入执行如下命令进入容器:

1 kubectl exec -it mongo-deploy-8558c64994-pxcg5 /bin/bash


(3)进入 mongodb 客户端:

1 mongo admin


(4)执行如下命令创建用户即可:

1 2 3 4 5 6 7 8 use admin db.createUser(   {     user: "root",     pwd: "12345",     roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase" ]   } )


原文出自:www.hangge.com  转载请保留原文链接:https://www.hangge.com/blog/cache/detail_3158.html

 

标签:教程,name,创建,MongoDB,nfs,mongodb,K8s,mongo
From: https://www.cnblogs.com/gaoyanbing/p/17694272.html

相关文章

  • 操作系统高级教程
    关于访问控制,是CPU基于段实现的一种机制。而所谓的高低特权指令和数据,则是指高低特权的指令和数据。高特权指令可以访问高特权和低特权数据,低特权指令仅可以访问低特权数据注意以上仅仅是指令访问数据的规则,对于指令调用指令与之不同,无论是高特权还是低特权指令,均不能调用不同权......
  • 无涯教程-JavaScript - NPV函数
    描述NPV函数通过使用折现率以及一系列未来付款(负值)和收入(正值)来计算投资的净现值。语法NPV(rate,value1,[value2],...)争论Argument描述Required/OptionalRateTherateofdiscountoverthelengthofoneperiod.RequiredValue11to254argumentsrepresen......
  • XMind2021免安装绿色便携版教程来了!
    安装直接解压从文末获取到的压缩包打开解压的文件夹,找到XMind.exe,右键选择发送到->桌面快捷方式回到桌面双击快捷方式,启动XMind2021至此,你的XMind就安装解锁成了获取顶尖架构师栈关键字公号资源XMindXMind全系列激活工具教程C01超10G后端学习面试资源......
  • XMind2021免安装绿色便携版教程来了!
    安装直接解压从文末获取到的压缩包打开解压的文件夹,找到XMind.exe,右键选择发送到->桌面快捷方式回到桌面双击快捷方式,启动XMind2021至此,你的XMind就安装解锁成了获取顶尖架构师栈关键字公号资源XMindXMind全系列激活工具教程C01超10G后端学习面试资......
  • 树莓派 4B 开机红屏修复教程 All In One
    树莓派4B开机红屏修复教程AllInOne树莓派4B掉地上摔了一下,开机后发现绿灯不亮了问题分析摔坏了主办,或SD卡❓开机中途,突然断掉了电源,导致系统引导启动程序出错了❓使用启动引导修复程序❓树莓派4b开机绿灯不亮恢复EEPROM的镜像如果成功,绿色LED指示......
  • 无涯教程-JavaScript - NPER函数
    描述NPER函数基于定期,固定付款和固定利率返回投资的期数。语法NPER(rate,pmt,pv,[fv],[type])争论Argument描述Required/OptionalRateTheinterestrateperperiod.RequiredPmt在每个期间付款。在年金的使用期限内,它不能改变。通常,pmt包含本金和利息,但不......
  • Burp Unexpected_information插件二次开发教程
    Unexpected_information是什么?Unexpected_information是一款开源的Burp插件,该插件的主要场景是用来辅助渗透测试工作,它可以自动的标记出请求包中的一些敏感信息、JS接口和一些特殊字段,防止我们在测试中疏忽了一些数据包,能发现平时渗透测试中忽略掉的一细节信息。Unexpected_i......
  • SpringBoot集成微信支付JSAPIV3保姆教程
    前言最近为一个公众号h5商城接入了微信支付功能,查找资料过程中踩了很多坑,以此文章记录一下和大家分享前期准备公众号认证微信支付功能需要开通企业号并进行资质认证,费用一年300,且需企业营业执照等信息,对公账户打款验证登录微信公众平台https://mp.weixin.qq.com/,创建服务号如......
  • SpringBoot集成微信支付JSAPIV3保姆教程
    前言最近为一个公众号h5商城接入了微信支付功能,查找资料过程中踩了很多坑,以此文章记录一下和大家分享前期准备公众号认证微信支付功能需要开通企业号并进行资质认证,费用一年300,且需企业营业执照等信息,对公账户打款验证登录微信公众平台https://mp.weixin.qq.com/,创建服务号......
  • 无涯教程-JavaScript - MIRR函数
    描述MIRR函数针对一系列定期现金Stream返回修改后的内部收益率。MIRR会同时考虑投资成本和现金再投资收到的利息。语法MIRR(values,finance_rate,reinvest_rate)争论Argument描述Required/OptionalValues包含数字的单元格的数组或引用。这些数字表示定期发生的一......