写在前面
今天菜白要开始学习K8S了,其实在很古早的时候菜白就微微看过一点点K8S的内容,但是一直没有深入研究(其实就是没有研究)。现在等于从零开始学习,如果你也想从零开始学习不要错过这篇文章(没有别的意思)。
什么是虚拟化技术,什么是容器,什么是Docker,什么是K8S?
如果不知道虚拟化,不知道容器,不知道Docker,直接学K8S,就好比没活过尿泥就像盖摩天大楼(我瞎比的)。因此我们第一步,先从虚拟化开始讲起。
虚拟化技术
1. 为什么要提出虚拟化技术
最初虚拟化技术的应用和发展源于大型机对分时系统的需求[1]。如何理解这句话呢,我觉得可以把这里的大型机理解成为一个客栈,客栈其实解决了我们对于住宿的时分需求,说客栈的出现让我们不至于因为进京赶考的需求而在全国甚至各地购置我们的房产。
2. 什么是虚拟化技术
从字面上理解虚拟化技术就是将某某虚拟化,那因为我们现在在讨论计算机,因此虚拟化技术就是将物理机虚拟化的一种技术。虚拟化技术即Virtualization,wiki上的解释是:In computing, virtualization refers to the act of creating a virtual (rather than actual) version of something, including virtual computer hardware platforms, storage devices, and computer network resources.我的理解,虚拟化是实现云计算的一种手段[2]。
容器技术
在刘鹏的《云计算》书中,把虚拟化分为了两类,一类是建立在宿主机上的,也就是宿主机是有操作系统的,另一类是宿主机没有操作系统的,我们把前者称为寄居虚拟化,后者称为裸机虚拟化。
寄居虚拟化
寄居虚拟化,最底层是物理硬件,物理硬件之上是主机的操作系统,操作系统之上是VMM(virtual machine monitor,虚拟机管理层),再往上就是客户的虚拟户了。在这种技术里面,虚拟机对各种物理设备(CPU、内存、硬盘等)的调用,都是通过VMM层和宿主机的操作系统一起协调才完成的。VMware和VirtualBox都是基于这种方式实现的。
裸机虚拟化
裸机虚拟化,直接将VMM安装在硬件设备与物理硬件之间。VMM在这种模式下又叫做Hypervisor,虚拟机有指令要执行时,Hypervisor会接管该指令,模拟相应的操作[3]。
容器虚拟化
刚刚说到的两种技术都属于一般虚拟化技术,而容器技术是一种特殊的虚拟化技术。容器的本质,一句话解释,就是一组受到资源限制,彼此间相互隔离的进程。可以看出,容器是没有自己的OS的,直接共享宿主机的内核,也没有hypervisor这一层进行资源隔离和限制,所有对于容器进程的限制都是基于操作系统本身的能力来进行的[4]。
所以容器其实是虚