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 玩起来!!
版权声明: 本文为 InfoQ 作者【Java全栈封神】的原创文章。
原文链接:【http://xie.infoq.cn/article/4519e77bfc43bb83091b29f95】。文章转载请联系作者。
评论