美丽有状态静态Pod经典示例

  

研究k8有一阵子了,这个东西很好用,但是也有很多坑,个人觉得很多地方还有待改进,美丽的静态舱是一个利器,但也必须对它有全面的了解才能运作。
今天给大家示例一个从头到尾自己研究出来的项目,需要一定的基础,抛砖引玉,大家学会了可以自己去发挥。
k8最大作用是面向集群业务型的和面向研发CI/CD,我这个例子偏向CI/CD。
步入正题:
环境:
1,首先,你得至少已经搭建了单节点的k8平台;
2,会熟悉的部署Dockerfile;
3,会k8基本的命令操作,
4,对k8基本运作有比较清晰的认识,不然排错是一个很大的障碍。

项目说明:
在上美丽之前各种计划任务,比如,定时备份,定时重启,定时检索日志发送邮件等等都是通过一台CentOS虚拟机的crontab来执行各种壳,python脚本来完成。

但是虚拟机也有因为停电,硬件故障导致系统崩溃的风险,所以,将这台虚拟机容器化并迁移至k8内就健壮多了。
只要镜像在,并且k8编排脚本在,那么一切都在,并且健康的运行,非常可靠。

最重要的,我需要将所有的管理脚本外置于外部NAS存储,并且挂载到k8容器内,来达到数据持久化和代码集中化管理,

并且,我不需要登入容器,只需要在外部修改好crontab文件,删除掉当前仓,美丽会很乖的重新起一个容器,顺便加载了最新的crontab配置,巧妙利用美丽的特性来简化管理。

不废话,上干货,首先,需要把一切需要的东西封装到CentOS镜像中:
1,我需要在容器内执行python脚本,而且需要3以上的版本;
2,我需要外壳执行远程ssh,那么需要安装sshpass;(当然你也可以选择其他方式)
3,我需要期望工具免交互脚本,那么需要安装期望;

4,因为容器默认是没有安装crontab的,要做任务计划怎么能少了这个;

5,最重要的是安装主管进程守护管理工具,以免美丽的容器循环重启;(原理不作解释)


可能有一些不必要的插件,自己去优化吧,这里达到实验目的即可,没有做镜像大小优化,
贴上Dockerfile源码:

从CentOS: centos7.6.1810   维护者gavin.guo<379783667 @qq.com>   ENV TZ“亚洲/上海”   ENV术语xterm   ENV朗en_US.utf8   添加aliyun-mirror。回购/etc/yum.repos.d/CentOS-Base.repo   添加aliyun-epel。回购/etc/yum.repos.d/epel.repo   运行yum安装- y zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap   猛击xz-devel,,\   yum安装- y curl wget焦油bzip2压缩vim-enhanced passwd yum-utils主机名net-tools rsync的男人,,\   yum安装- y gcc gcc-c + + git使automake cmake补丁logrotate python-devel libpng-devel libjpeg-devel,,\   百胜清洗所有的   添加Python-3.6.2。tgz/根   运行cd/root/Python-3.6.2/,,\   mkdir/usr/local/python3;./configure——prefix=/usr/地方/python3,,\   使,,制作安装,,\   ln - s/usr/local/python3/bin/python3/usr/bin/python3;ln - s/usr/local/python3/bin/pip3/usr/bin/pip3,,\   cd/根;rm射频Python-3.6.2,,\   百胜是安装net-snmp-utils crontab中sshpass期望;sed - i ' s/pam_loginuid要求。因此/充分pam_loginuid。所以//etc/pam.d/crond,,\   pip3安装主管,,\   mkdir - p/etc/supervisor.conf。d,,\   mkdir - p/var/log/supervisor   supervisord副本。参看/etc/supervisord.conf   supervisor_crontab副本。参看/etc/supervisor.conf.d/crontab.conf   暴露22   开始拷贝。sh/root/start.sh   运行chmod + x/root/start.sh   入口点(“/根/开始。sh”

Dockefile同目录下,需要放置python3.6的二进制源码安装包,防止版本漂移和加快构建速度,和启动脚本开始。sh

(计划:crond)
  目录=/命令=/usr/sbin/crond - n
  用户=根
  自动启动=true
  autorestart=true
  stdout_logfile=/var/log/主管/% (program_name) s.log
  stderr_logfile=/var/log/主管/% (program_name)。日志

使用命令开始封装镜像:

码头工人建造- t加文/mycron: v1。

美丽有状态静态Pod经典示例