虚拟化特点:
1.虚拟化需要单独安装操作系统
2.运行在R3中,与硬件交互通过vmm(Hypervisor)进行转换。
3.目前主流的三种:
- 全虚拟化(通过二进制翻译 R3指令交互到R0中的vmm由vmm将指令与硬件设备交互)对操作系统没有任何更改
- 操作系统辅助的半虚拟化(直接将虚拟化主机系统运行于R0中与虚拟化层进行交互,可以提高效率改善性能)需要修改操作系统内核。
- 硬件辅助虚拟化(cpu支持虚拟化,cpu支持多个系统工作Ring0,vmm工作在根模式下根模式是为了执行特定的cpu指令增加的模式)需要硬件支持
4.使用两种镜像
容器特点:
1.容器不需要创建额外开销的系统(容器基础镜像相对于传统系统来说要小很多,因为在操作系统中分为bootfs,rootfs。大多数发行版的区别在于rootfs的不同包括etc bin root proc等目录,所以容器会共用宿主机bootfs文件。将镜像分成pull的时候一一加载进基础镜像的文件目录中,无依赖关系的称之为基础镜像。在其之上构建的分层镜像属于父子关系)
2.容器的网络,pid,cgroup,mount namespace等都是通过linux内核中自带的namespace来实现(通过pid创建namespace将其他资源挂载到该pid中,pid之下的namespace中生成的子进程可以与其他pid之下的子进程号一样。所以k8s中监测的很重要一环就是pod中进程为0的程序,mount exec等操作都是/proc/父进程id/目录/ ,网络创建虚拟网卡并link到docker0中,docker0与etcd共享网络空间,通过nat实现对外通信。)