• 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
    
    • 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
    • 35

    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  (查看状态,验证重启成功)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    2.2 NFS服务器所在节点打好标签label

    # 打标签
    kubectl label nodes w1 nfs=server
    # 测试
    kubectl describe node w1 | grep nfs
    
    • 1
    • 2
    • 3
    • 4

    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 !

  • 相关阅读:
    YOLO系列改进论文阅读
    在命令行下使用Apache Ant
    CRM帮助企业解决客户关系管理难题
    【四:Unittest框架】
    avi怎么转换成视频?
    分布式概念与协议
    缓存把我坑惨了..
    删除的文件夹不在回收站中如何恢复呢?
    Python前景如何?有哪些就业方向?
    ssm+java+vue面向企事业单位的项目申报小程序#毕业设计
  • 原文地址:https://blog.csdn.net/qq_36963950/article/details/125949716