容器化环境选择
系统选泽、运行时选择、编排规划、网络选泽
系统选择(CentOS VS Ubuntu)
注:操作系统均为服务器版本,包含但不限于CentOS和Ubuntu
共同点:
- 开源和免费的社区支持的操作系统
- 基于Linux内核
不同点:
- CentOS在国内有良好的群众基础,Ubuntu则稍微不足
- Ubuntu对软件支持版本较高,CentOS一般保持低稳定版
- Ubuntu默认内核版本为较高稳定版,CentOS保持低版本,比如:Ubuntu18.x对应4.x,Centos7.x对应3.x
- Ubutnu支持更多更多的软件源,CentOS需要自主扩展
- Ubuntu更新更为频繁
如何选择
- 高版本的Linux内核对容器做了更好的优化,并且支持很多新特性
- Ubutnu18.x对容器的支持更好
- CentOS7.x需要升级内核到最新稳定版以更好支持容器
- 新发布的CentOS8对容器也有了较好支持
推荐:Ubuntu18.x、Ubuntu19.x、CentOS7.x+Linux内核最新稳定版、CentOS8
容器运行时代表
runc:docker-ce
- 版本18.06+
- 存储driver:overlay2(性能好)或者direct-lvm(控制容量)
- 共享宿主机内核
runv:katacontainer
- 让容器自带内核
- 提高容器安全
- 特殊的应用可以通过nodeselector调度到特定runv节点
推荐:kubernetes节点分区,通用docker-ce,部分katacontainer,通过nodeselector调度到特定runv节点
编排规划
单机
- docker-compose
- docker
集群:kubernetes
- 版本选择:release后三个版本
- 使用自动化部署工具: kubeadm、rancher等
- 生产必须高可用
- 计算节点:低配多节点、高配少节点
- 节点存储:500GB~1TB(镜像和容器零时文件),10GB×110
- 节点网络:至少1Gbps,推荐10Gbps
网络
单机
- bridge
- host(共享宿主机网络)
推荐:应用依赖容忍度高的选择docker-compose,应用强依赖,比如:前置应用未启动就会挂掉的情况,选择脚本+docker的方式
集群
- overlay: flannel(简单,典型网络:vxlan)
- bgp: calico(性能好,功能全,典型网络:三层路由)
推荐:物理网络flannel或者calico,虚拟网络calico
个人看好kube-ovn的发展