28 天带你玩转 Kubernetes-- 第二天(K8s介绍)
一、什么是K8s?
先看下官网上的定义:Kubernetes 是一个可移植的、可扩展的开源平台,用于管理容器化的工作负载和服务,可促进声明式配置和自动化。

大家看完之后应该是这个表情,这个定义每个词都能看懂,但是连在一起不知道它在说啥??下面我们用人类能听的懂的语言来慢慢解释一下:
在解释K8s之前,我们必须先了解容器的概念。应用部署形式在历史上经历过三个时代:物理机、虚拟机、容器。
物理机时代:所有的应用部署在同一台物理机上,应用之间没有隔离,所以应用部署多了就会有端口、资源的冲突,资源利用率就不高。
虚拟机时代:在一台物理上可以搭建多台虚拟机,每个虚拟机资源都是隔离的,每个 VM 是一台完整的计算机,在虚拟化硬件之上运行所有组件,包括其自己的操作系统。
容器时代:由于每个虚拟机都有自己的操作系统,导致一般一台物理机最多只能起几十个虚拟机,这是容器出现了,它通过共享操作系统,可以先认为它是一个轻量级的虚拟机,具有自己的文件系统、CPU、内存、进程空间等。最重要的是一台物理机上可以轻轻松松起上千个容器,并且启动的速度也比虚拟机要快很多。
明白了容器的概念之后,其实容器有很多的具体实现,但是目前最为流行的就是Docker(本课程的第三部分就会详细的介绍Docker的使用)。目前K8s主要容器还是使用Dokcer,但是后面有向containerd转换的趋势(containerd也是一种容器的实现,而且性能高于docker)。
下图是三者的一个架构图:

说明白了容器和Docker的概念,Docker虽然很好用,但是Docker有一个非常重大的问题,就是Docker是单机版的,就是只能在一台机器上创建很多Docker容器,多台机器创建的Docker容器不能相互关联起来。这很明显是不能满足企业的要求的。所以一种容器编排的需求就孕育而生。
K8s就是目前最流行的容器编排调度引擎。当然它除了容器编排还为跨主机的容器化应用提供资源调度、服务发现、高可用管理、弹性伸缩功能。这些功能我们后面都会一一说明并实战。
目前只需要知道K8s是一个将容器技术推广到集群中
二、K8s的发展历史
其实在K8s之前就有很多容器编排的技术,其中当时比较流行的有Apache Mesos、Docker Swarm。
Apache Mesos:是Apache开源的容器编排技术,当年在业界非常流行,其中使用的最多的是Twitter。但是在2019.05Twitter宣布全面转向K8s。自此Mesos走向没落。
Docker Swarm:是Docker官方推出的容器编排技术,但是2019.07 阿里云宣布不提供Docker Swarm服务,国内使用的也不多了。
现如今K8s在云原生几乎一统天下,为什么呢?
首先K8s是google爸爸开源出来的,基于google内部的borg系统,用Go语言重新编写的。由于google的云计算已经有十几年的沉淀了,所以慢慢的大家都不约而同的转向K8s。
并且K8s有很多优秀的特性!
三、K8s的特点及优势
K8s有很多自己的特点,下面我整理出它相比其他同类产品最大的优势:
1、开源、轻量:这两个应该是K8s能够推广开的非常必要的条件。
2、面向终态:就是你只需要告诉K8s你想要的最终结果,K8s就会尽最大的努力去达成这个结果,而中间的过程你不必了解。
3、封装屏蔽底层资源:将计算资源、网络资源、存储资源等等封装为标准的API,让开发人员不需要关系具体的资源,而是面向统一的API编程。
4、强大的生态:K8s有着及其丰富的生态,可以看看课程介绍中的CNCF的那张图片。这也是K8s能如此迅速发展的重要原因!
了解了K8s的作用和历史之后,在学习K8s之前,我们需要先搭建一个K8s。下节课我们会用一种最简单的方式搭建一个K8s玩起来!!