镜像
初始镜像
- 设定一个业务常用的基础镜像,主要包含一些基础的命令和依赖,例如SSH. JDK/Tomcat/Vim/curl/wget/yum等等
- 核实业务需要的命令
- 例如有些业务需要调用脚本解压文件(zip/unrar)等等
- 有些业务需要使用到node,gm等等
- 版本标志文件(根据标志文件走不同的启动脚本)
- Tomcat镜像走tomcat的启动脚本
- Springboot镜像启动脚本
- Node启动脚本
- 后期升级镜像YAML文件基本可以保持不变,仅仅变更TAG即可
- 不同的JDK尽量保持JDK版本和tomcat变动,其他维持一致,方便管理.
这些都可以安装到一个镜像当中,大一点么有关系,后期的管理和维护会比较方便. 尽量避免在容器启动时安装命令.
代码
- 代码直接打到镜像中.
- 优点,伸缩/重启快,容器启动即可运行代码
- 缺点,每次都需要重新构建镜像,慢,和初始镜像的工作存在重合且拉去镜像慢,需要消耗磁盘空间
- 代码通过启动脚本从OSS中下载.
- 优点,项目启动快,伸缩也不受影响,不必要拉取新的镜像
- 缺点,上传OSS如果有问题全面影响,启动脚本需要下载OSS文件(内网下载时间不计)
- Node镜像,Node依赖Node_Module, 需要下载的数据较多,最好使用NFS/NAS挂载
- 代码直接打到镜像中.
- 内置工具
- Java#arthas
- 有用的脚本
尽量不引入较多的NFS/NAS. 一旦出现诡异的问题,可能搞不定.
其他
检测
- 不论使用那种检测方式,最好是能将检测失败的结果记录下来,方便对容器重启进行分析.
- 业务
- 成立保障小组,出现问题时能够处理问题
- 容器重启问题
- 项目启动问题(发布失败,发布频繁重启等等)
- 成立保障小组,出现问题时能够处理问题