【读书笔记】06 | 白话容器基础(二):隔离与限制

发布时间:2020-06-20 12:31:36 作者:筑梦攻城狮
来源:网络 阅读:663

《深入剖析Kubernetes - 06 | 白话容器基础(二):隔离与限制》


1、隔离

虚拟机VM与 容器 docker的主要区别在于,虚拟机依赖 Hypervisor 层实现资源隔离和虚拟化,而容器的实现都是依赖OS 本身

虚拟机VM 在不做优化的情况下,本身就会占用100-200M 的内存,另外如果涉及到宿主机一些底层调用,都必须经过虚拟化软件的拦截和处理,这里会多一层性能损耗,主要体现在网络 和磁盘 I/O


容器的隔离机制也不是十全十美,最大的问题就是隔离不彻底,主要体现在:


(1) 例如在容器内执行free、top 等命令,看到的数据都是宿主机上面的信息,原因是 proc 并没有隔离;另外一个例子,很多应用程序运行在容器中都不能很好的识别内存、CPU的限制,典型的如 java


(2) 虽然每个容器可以通过mount namespace隔离的机制挂载不同的操作系统文件,但底层都是基于同一个操作系统(同一个操作系统内核),这就意味着在windows 上运行linux容器,或者低版本linux宿主机上运行高版本linux容器都是不可以的


2、限制 (cgroups)

通过cgroups 实现对一个进程组的资源使用上限进行限制,如内存、cpu、网络带宽、磁盘等

Cgroups 给用户暴露出来的操作接口是文件系统,即它以文件和目录的方式放在/sys/fs/cgroup 路径下

root@ubuntu:~# mount -t cgroup
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/hugetlb type cgroup (rw,nosuid,nodev,noexec,relatime,hugetlb)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/perf_event type cgroup (rw,nosuid,nodev,noexec,relatime,perf_event)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/blkio type cgroup (rw,nosuid,nodev,noexec,relatime,blkio)


推荐阅读:
  1. docker 命令报错
  2. Spring Boot与Docker部署实践

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

docker kubernetes 读书笔

上一篇:py_Django的管理界面常见组件

下一篇:Git忽略规则.gitignore梳理

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》