读书笔记之《深入剖析 Kubernetes》

“编排”(Orchestration)在云计算行业里不算是新词汇,它主要是指用户如何通过某些工具或者配置来完成一组虚拟机以及关联资源的定义、配置、创建、删除等工作,然后由云计算平台按照这些指定的逻辑来完成的过程。

Kubernetes 项目的基础特性,并不是几个工程师突然“拍脑袋”想出来的东西,而是 Google 公司在容器化基础设施领域多年来实践经验的沉淀与升华。 Kubernetes 社区,正是以一种更加温和的方式,承接了 Docker 项目的未尽事业,即:以开发者为核心,构建一个相对民主和开放的容器生态

容器技术的兴起源于 PaaS 技术的普及;Docker 公司发布的 Docker 项目具有里程碑式的意义;Docker 项目通过“容器镜像”,解决了应用打包这个根本性难题。

容器本身没有价值,有价值的是“容器编排”。

容器技术

容器运行时:容器是一种特殊的进程。它使用NameSpace进行进程隔离,使用CGroups进行资源限制。Namespace 的作用是“隔离”,它让应用进程只能看到该 Namespace 内的“世界”;而 Cgroups 的作用是“限制”,它给这个“世界”围上了一圈看不见的墙。

容器镜像:通过Mount Namespace 和 rootfs,结合chroot 和 pivot_root 命令切换进程根目录,容器就能为进程构建出一个完善的文件系统隔离环境(但依然共享宿主内核)。通过”镜像分层”的设计,容器实现了镜像的一致性复用、轻量级下载等功能。通过Volume数据卷机制,可以将宿主机上指定的目录或者文件,挂载到容器里面进行读取和修改操作,依赖了Linux的绑定挂载(bind mount)机制。

容器编排:K8S是容器编排工具。Kubernetes 项目从一开始就比较幸运地站上了一个他人难以企及的高度:在它的成长阶段,这个项目每一个核心特性的提出,几乎都脱胎于 Borg/Omega 系统的设计与经验。更重要的是,这些特性在开源社区落地的过程中,又在整个社区的合力之下得到了极大的改进,修复了很多当年遗留在 Borg 体系中的缺陷和问题。Kubernetes 项目最主要的设计思想是,从更宏观的角度,以统一的方式来定义任务之间的各种关系,并且为将来支持更多种类的关系留有余地。

在“功能单位”的划分上,容器有着独一无二的“细粒度”优势:毕竟容器的本质,只是一个进程而已。



Prev     Next