写点什么

《Kubernetes in action 读书笔记》:容器技术的发展

发布于: 5 小时前
《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 容器设计的容器编排系统。


未完,待续..

发布于: 5 小时前阅读数: 12
用户头像

喜欢技术分享,一起进步~ 2018.03.28 加入

🏆2021年InfoQ写作平台-首批签约作者&最佳内容创作者 🏆 首届引航计划参与者 我们一起对技术保持饥渴,一起进步! 微信公众号:后台技术汇

评论

发布
暂无评论
《Kubernetes in action 读书笔记》:容器技术的发展