《Kubernetes in action 读书笔记》:容器技术的发展
1、环境隔离的思考
大前提是同一个机器的不同组件,依赖不同的库版本或是不同环境需求
不常见情况,一个应用仅有少量大组件,可以分别分配专用的虚拟机,然后每个虚拟机有不同的 OS 来隔离环境
普遍情况,一个应用有大量小组件,继续采用虚拟机技术来隔离环境(资源严重浪费 &人力浪费 &运维负担)
2、Linux 容器技术
2.1 容器是什么?
容器:允许用户在同一个机器运行多个服务,提供不同环境给每个服务,并且它们客观上互相隔离;容器类似虚拟机,但它轻量级且开销小很多。因此,容器能支持相同硬件上运行更多数量的小组件,从而解决上面提到的普遍情况。
2.2 容器本质是什么?
容器进程实际还是在宿主机的操作系统上属于共享一个操作系统,而虚拟机是单独拥有一个操作系统。
2.3 虚拟机的最大弊端是什么?
虚拟机是有额外开销的,那就是:虚拟机要运行一组系统进程,那就产生了除了数量众多小组件之外的计算资源消耗。
2.4 容器跟虚拟机的消耗对比?
容器仅仅是运行在宿主机的一个进程,仅消耗应用容器消耗的资源,没有其他进程开销。
两相比较,容器的优势就体现出来了,在“一个物理机上面跑更多小组件的目标,容器更适合”。
3、容器隔离技术
3.1 命名空间-Namespace
命名空间:它让每个进程只看到它自己的系统视图(文件、进程、网络接口、主机名),因为一个进程只能看到同一个命名空间下的资源。
3.2 进程分组-CGroup
cgroup:它限制进程能适应的资源量(CPU/内存/网络带宽),因为一个进程的资源适应量不能超过被分配的量。
4、Docker 容器横空出世
Docker:本质是一个平台;一个打包、分发和跑应用程序的平台;一个让容器在不同机器之间移植的系统。
实现:将整个操作系统的文件系统被打包成一个简单的可移植的包,而这个包可以用来在其他任何运行 Docker 的机器上使用。
简单一句:Docker 把应用程序和应用程序依赖的整个环境打包在一起了。
5、Docker 所不能及
详情参考我的另一篇文章:《你需要的 Docker 知识点都在这里了》
5.1 三个主要概念:
5.1.1 镜像
应用程序和应用程序依赖的整个环境
5.1.2 镜像仓库
存放镜像的地方
5.1.3 容器
一个运行中的容器是一个运行在宿主机的进程
5.1.4 构建、分发、运行镜像
5.2 容器比虚拟器所不能及
虽然容器比虚拟机更加轻量级,但还是有一个警告:一个关于运行在一台机器的所有容器共享主机 Linux 内核的警告。如果一个特点的容器化应用需要一个特定的内核版本,那它可能不可以在每台机器都正常工作。
所以,如果一个需要在特定硬件架构之上运行的容器化应用,那么只能在有相同硬件架构的机器才能运行。
6、rkt 虎视眈眈
rkt 是除了 Docker 之外的另一个 Linux 容器引擎,k8s 也同样支持 rkt。所以,我们不能认为 Kubernetes 是一个专门为 Docker 容器设计的容器编排系统。
未完,待续..
版权声明: 本文为 InfoQ 作者【后台技术汇】的原创文章。
原文链接:【http://xie.infoq.cn/article/ff1dc14b1ad1062c90194eac9】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论