1.1. Kubernetes应用运维实践
1.1.1. 应用容器化
- 不建议使用Apline镜像
早期很多文章或者书籍推荐使用Apline镜像来制作应用镜像,优点是体积小,在实际生产环境中,我们发现使用Apline镜像由于缺少的依赖毕竟多,最终的镜像大小并不比其它基础镜像的小,反而不利于一些生产环境的调试工作。
- Dockerfile版本控制
Dockerfile建议提交在项目代码仓库的根目录,或者在代码仓库创建docker的目录。在该目录下放置Dockerfile,并且需要完整的README.md,写清楚镜像的构建。
1.1.2. 应用标准化
- 使用Helm进行包管理
生产环境极力推荐使用Helm进行包管理,将应用打包标准化,Helm支持以应用的维度进行升级和回滚。不管什么原因无法使用Helm,那么底线是所有的Kubernetes YAML文件必须使用Git进行版本空着,绝对不能允许随便放一个YAML文件在服务器上进行创建和维护。
- 使用命名空间进行资源隔离
生产环境建议给命名空间设置LimitRange,设置默认的容器request和limit配置。
1.1.3. 其它建议
- 不要使用第三方工具进行集群部署
不推荐使用第三方工具进行集群部署,可以使用第三分工具进行集群的管理。部署建议使用官方提供的kubeadm,方便后续升级和维护,除非你可以阅读第三方安装工具的源码,实现升级无忧。
- 给其它部门提供图形化操作界面
即便运维同学喜欢命令行,也必须要给其它部门的同事提供基于图形化界面的管理方式,例如开发进行日志查看和一些紧急调试,推荐Rancher。