一、引言
docker&kubernetes的容器虚拟化是容器云典型落地实践之一,本系列文章试图浅析其背后的实现。
管中窥豹,或失偏颇,欢迎指正。
二、docker&kubernetes的容器虚拟化是什么
将docker&kubernetes的容器虚拟化代入到云计算产品体系中,横看成岭侧成峰:
相较于kvm&openstack,docker&kubernetes的容器虚拟化是轻量级的IaaS。
相较于传统平台服务产品,docker&kubernetes的容器虚拟化是狭义的PaaS。
三、轻量级的IaaS
1)轻装上阵的计算虚拟化
容器是一组被隔离的业务相关进程,受限使用公共资源。容器可具象化地表述如下:
换句话说,一组业务相关进程以namespace进行隔离,以cgroup进行资源配额,最后通过chroot或类似方式切入到专属rootfs中,这组进程就破茧化蝶成了容器。
2)百家争鸣的网络虚拟化
社区容器网络虚拟化实践百家争鸣,大体可划分为下述三大类:
网络方案 | 备注 |
overlay方案 | 容器独立于主机的 IP 段,容器 IP 段跨主机网络通信时是通过在主机之间创建隧道的方式,将整个容器网段的包全都封装成底层的物理网络中主机之间的包,不依赖于底层网络。 |
underlay方案 | 容器和宿主机位于同一层网络,两者拥有相同的地位。容器之间网络的打通主要依靠于底层网络。 |
路由方案 | 主机和容器分属不同的网段,与 Overlay 模式区别是它的跨主机通信是通过路由打通,无需在不同主机之间做隧道封包。 |
受基础设施制约和业务性能需求等因素影响,容器网络虚拟化方案没有绝对最优答案,需根据业务环境取舍权衡。
3)海纳百川的存储虚拟化
docker&kubernetes的容器存储虚拟化提供了in-tree plugins、flexvolume以及csi系列集成方案。
通过pvc/pv实现种类繁多的分布式存储对接,解决容器数据持久化存储的需求。
四、狭义的PaaS
基于docker&kubernetes容器虚拟化提供了以应用为中心的狭义生命周期管理,包括:
1)应用负载
docker&kubernetes的容器虚拟化提供了以POD为逻辑单位的容器进程组,实现对应用初始化进程,辅助进程以及主进程的封装。
2)编排&调度
docker&kubernetes的容器虚拟化基于pod、service以及deployment等各原生与自定义资源设计组织应用。
同时提供了资源调度引擎将应用负载调度至工作节点,如果将pod比作萝卜,调度目标就是为每个萝卜找到一个最适合它的坑。
3)7x24小时应用监护服务
docker&kubernetes的容器虚拟化提供了传统面向结果的7x24小时应用监护服务。
换句话说,用户基于kubernetes资源与规则定义业务,kubernetes也将试图持续维护好这个业务。
五、docker&kubernetes的容器虚拟化价值
价值 | 诠释 | 备注 |
降本 |
薄的虚拟化层,更高的部署密度 |
和虚拟机比,无guestos开销,更低的资源开销 和物理机比,有粗粒度隔离,更高的部署密度。 |
提效 | 标准化的应用,更敏捷生命周期 |
标准化应用,高度环境一致性,一次性打包,到处运行 开箱即用的敏捷应用生命周期管理 |
赋能 | 弹性容量供应,业务高可用保障 |
快速扩缩容,弹性容量供应 主动故障探测与自愈能力 |
最后抛出1个讨论题,欢迎交流。
讨论:结合ansible/saltstat如何看kubernetes异曲同工之机巧? |