今天给大家示例一个从头到尾自己研究出来的项目,需要一定的基础,抛砖引玉,大家学会了可以自己去发挥。
K8S最大作用是面向集群业务型的和面向研发CI/CD,我这个例子偏向CI/CD。
步入正题:
环境:
1,首先,你得至少已经搭建了单节点的K8S平台;2,会熟悉的部署Dockerfile;
3, 会K8S基本的命令操作;
4,对K8S基本运作有比较清晰的认识,不然排错是一个很大的障碍;项目说明:
在上K8S之前各种计划任务,比如,定时备份,定时重启,定时检索日志发送邮件等等都是通过一台CentOS虚拟机的crontab来执行各种shell,python脚本来完成。
但是虚拟机也有因为停电,硬件故障导致系统崩溃的风险,所以,将这台虚拟机容器化并迁移至K8S内就健壮多了。
只要镜像在,并且K8S编排脚本在,那么一切都在,并且健康的运行,非常可靠。
最重要的,我需要将所有的管理脚本外置于外部NAS存储,并且挂载到K8S容器内,来达到数据持久化和代码集中化管理,并且,我不需要登入容器,只需要在外部修改好crontab文件,删除掉当前pod,K8S会很乖的重新起一个容器,顺便加载了最新的crontab配置,巧妙利用K8S的特性来简化管理。
不废话,上干货,首先,需要把一切需要的东西封装到centos镜像中:
1,我需要在容器内执行python脚本,而且需要3以上的版本;2,我需要shell执行远程ssh,那么需要安装sshpass;(当然你也可以选择其他方式)3,我需要expect工具免交互脚本,那么需要安装expect;4, 因为容器默认是没有安装crontab的,要做任务计划怎么能少了这个;5,最重要的是安装supervisor进程守护管理工具,以免K8S的容器循环重启;(原理不作解释)