Kubernetes第八篇:使用kubernetes部署NFS系统完成数据库持久化(Kubernetes工作实践类)
Posted 毛奇志
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kubernetes第八篇:使用kubernetes部署NFS系统完成数据库持久化(Kubernetes工作实践类)相关的知识,希望对你有一定的参考价值。
文章目录
一、前言
本文属于Kubernetes工作实践类,工作中,需要完成kubernetes持久化。
kubernetes持久化包括四步骤:
(1) 自动新建目录:pod生效,则表示新建两个目录 (添加两个属性,selector 和 (1) tolerance )
(2) NFS持久化:mysql和redis被持久化,则nfs生效
(3) 命名空间消失则自动删除该命名空间指定目录:crontab定时任务和清理脚本生效
(4) df -h /nfs 查看目录磁盘大小,如不够,则使用软链接当 /nfs 目录软链接到磁盘大的目录下,作为其下面的一个子目录
NFS服务器文件存储的一种方式,还有其他方式的,比如cephs,好的博客参考如下:
k8s pv的accessMode方式和persistentVolumeReclainPolicy方式的介绍
https://www.jianshu.com/p/0fab432831b3
k8s管理存储资源
http://t.zoukankan.com/zzzynx-p-11065612.html
K8S系列第九篇(持久化存储,emptyDir、hostPath、PV/PVC)
https://blog.csdn.net/qq_33261700/article/details/119549172
二、搭建好机器上的NFS服务器
1、搭建好NFS上的服务器
2、NFS服务器所在节点打好标签label,让自动创建目录那个Pod分配到有NFS服务器的这个节点上,到这个节点上新建目录
3、机器上写好清理脚本clean.sh和定时任务crontab
4、df -h /nfs 查看目录磁盘大小,如不够,则使用软链接当 /nfs 目录软链接到磁盘大的目录下,作为其下面的一个子目录
2.1 搭建好NFS上的服务器
01 选择master节点作为nfs的server,所以在master节点上,执行以下命令
# 第一步,启动nfs和rpcbind
# 启动nfs
systemctl status nfs (如果存在就开启 systmctl start nfs ,不过不存在就安装 yum -y install nfs-utils 并 systemctl start nfs)
systemctl status nfs (启动后再次查看状态,状态成功就是表示启动成功了)
systemctl enable nfs (设置为为开机自启动)
# 启动rpcbind
systemctl restart rpcbind (重启)
systemctl enable rpcbind (设置为开机自启动)
systemctl status rpcbind (查看状态,验证重启成功)
# 第二步,创建nfs目录并授予权限 /nfs/data/ 这个目录就是nfs ip那个目录
# 创建nfs目录
mkdir -p /nfs/data/
# 授予权限
chmod -R 777 /nfs/data
# 第三步,编辑export文件并保存
# 编辑export文件 对于/nfs/data目录,授予可读可写权限、根目录权限、同步数据权限
vi /etc/exports
/nfs/data *(rw,no_root_squash,sync)
/nfs/data *(rw,no_root_squash,sync,no_subtree_check) # 新版nfs
# 使得配置生效
exportfs -r
# 查看生效
exportfs
# 第四步,验证rpcbind、nfs
# 查看rpc服务的注册情况
rpcinfo -p localhost
# showmount测试
# showmount命令用于查询NFS服务器的相关信息 -e或--exports 显示NFS服务器的输出清单。
showmount -e master-ip
showmount -e 192.168.100.151
02 所有node上安装客户端 ps -ef|grep nfs
# 启动nfs
systemctl status nfs (如果存在就开启 systmctl start nfs ,不过不存在就安装 yum -y install nfs-utils 并 systemctl start nfs)
systemctl status nfs (启动后再次查看状态,状态成功就是表示启动成功了)
systemctl enable nfs (设置为为开机自启动)
# 启动rpcbind
systemctl restart rpcbind (重启)
systemctl enable rpcbind (设置为开机自启动)
systemctl status rpcbind (查看状态,验证重启成功)
2.2 NFS服务器所在节点打好标签label
# 打标签
kubectl label nodes w1 nfs=server
# 测试
kubectl describe node w1 | grep nfs
NFS服务器所在节点打好标签label,然后在自动新建目录的Pod.yaml文件中写好 nodeSelector,就可以将自动新建目录的Pod调度(scheduler)到NFS服务器所在节点,完成新建目录,
2.3 清理脚本和定时任务
清理脚本:shell语言写一个 clean.sh 脚本,逻辑为“对于变量 /nfs/data 下面的目录,如果不存在这个命名空间,就删掉这个目录”。
定时任务
systemctl status crond (有就启动,没有就安装)
vi /etc/crontab
systemctl start crond
systemctl enable crond
2.4 软链接操作
找一个有磁盘的 df -h 查看各个磁盘剩余容量
创建软连接 ln -s 实际目录 快捷方式
查看软连接 df -h /nfs
df -h /nfs 查看目录剩余容量
du -h /nfs 查看磁盘使用容量
这里不需要挂盘,还剩下8.4G,展示一个挂盘的
三、 springboot连接k8s集群并写好
官网:http://fabric8.io/
github: https://github.com/fabric8io/kubernetes-client
fabric8:使用文档 https://github.com/fabric8io/kubernetes-client 下面的readme.txt
注意,一般使用的都是fabric8下面的kubernetes-client
好了,一个springboot项目搭建好了。
如果将fabric8集成到springboot中,可以先参考一下别人的,如下:
中文参考资料,http://t.zoukankan.com/larrydpk-p-14928606.html
中文参考资料(通过本地或网络的yaml文件来创建资源到k8s集群上):https://www.jianshu.com/p/48e0896b1608
中文参考资料(将token放到文件或数据表中):https://blog.csdn.net/weixin_43962314/article/details/110094808
好了,开始自己写了。
运行成功,如下:
四、尾声
finish!!
Learn technology well, Day Day Up !
以上是关于Kubernetes第八篇:使用kubernetes部署NFS系统完成数据库持久化(Kubernetes工作实践类)的主要内容,如果未能解决你的问题,请参考以下文章
Kubernetes第八篇:k8s启动系统组件APIServer与Scheduler