Kubernetes学习系列文章:Kubernetes-博客专栏
今天在学习极客时间专栏:《深入剖析Kubernetes》
第五讲05 | 白话容器基础(一):从进程说开去和第六讲06 | 白话容器基础(二):隔离与限制中提到了Namespace,Cgroups。
对于 Docker 等大多数 Linux 容器来说,Cgroups 技术是用来制造约束的主要手段,而 Namespace 技术则是用来修改进程视图的主要方法。
所以,Docker 容器这个听起来玄而又玄的概念,实际上是在创建容器进程时,指定了这个进程所需要启用的一组 Namespace 参数。这样,容器就只能“看”到当前 Namespace 所限定的资源、文件、设备、状态,或者配置。而对于宿主机以及其他不相关的程序,它就完全看不到了。
Docker就是一种特殊的进程
在理解了 Namespace 的工作方式之后,你就会明白,跟真实存在的虚拟机不同,在使用 Docker 的时候,并没有一个真正的“Docker 容器”运行在宿主机里面。Docker 项目帮助用户启动的,还是原来的应用进程,只不过在创建这些进程时,Docker 为它们加上了各种各样的 Namespace 参数。
Linux Cgroups 的全称是 Linux Control Group。它最主要的作用,就是限制一个进程组能够使用的资源上限,包括 CPU、内存、磁盘、网络带宽等等。
-> % mount -t cgroup
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,

本文是Kubernetes学习笔记的第二部分,探讨了Namespace和Cgroups在容器隔离中的作用。Namespace提供进程视图的隔离,而Cgroups限制了进程组的资源使用。Docker利用这两项技术启动受限的进程,实现容器化应用,但Cgroups在资源限制方面存在局限,如/proc文件系统无法反映容器内资源状况。
最低0.47元/天 解锁文章
802

被折叠的 条评论
为什么被折叠?



