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

SpringBoot源码下载:k8s-demo

二、搭建好机器上的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

Kubernetes官方java客户端之八:fluent style

ElasticSearch入门 第八篇:存储

第八篇 VGGNet——网络实战

第八篇 VGGNet——网络实战

第八篇测试