Kubernetes 是一个非常复杂的平台,网上的资料文档很多,但是很杂。Kubernetes.io 上面有官方的文档,但是很多学员看了官方文档会犯晕,因为文档内容多,而且密度很大,很难一下子抓住关键概念,但是只有理解了这个 Kubernetes 的核心的概念,并且在大脑里头呢建立起这个 Kubernetes 平台的这个概念模型,才能运用好这个 Kubernetes。
为此,我把这个 Kubernetes 最基本的核心概念给梳理出来,下面依次给大家来讲解。
Kubernetes 集群(Cluster)
Kubernetes 第一个核心概念叫集群。这个集群呢有很多的节点组成,而且可以按需添加更多的节点,这个节点可以是物理机,也可以是虚拟机,每个节点都有一定数量的这个 CPU 和内存容量。
整个这个 Kubernetes 集群可以抽象看作是一个超大计算机,它的 CPU 和内存容量是所有节点的这个 CPU 和内存容量的总和。而且可以按需给这台超大计算机添加更多的 CPU 和内存。
容器 Container
Kubernetes 是一个容器调度平台,所以容器是 Kubernetes 平台的一个基本概念。理解容器并不难,关键是两点,一个是打包机制,背后是有容器镜像,Image机制来实现的。另外一个呢是隔离,背后是有 Linux Namespace,还有 CGroups这些机制来实现的。
容器经常被翻译比喻成这个集装箱,这个比喻很形象,集装箱是用来打包和运输货物的,而且可以相互隔离。
在我的大脑里头,我经常把这个容器和家里的这个货物贵联系起来,货物柜里头可以装各种东西,而且一个个货物贵隔离摆放。软件容器是用来打包和运行应用的,里头可以跑各种语言栈的应用,容器之间通过轻量级的机制,也就是 Linux 的 Namespace ,然后 CGroups 进行隔离。
从这个宿主机操作系统的视角来看,容器其实是一个一个的进程。那么从容器内部视角来看,他感觉自己就是一个完整的操作系统,有自己的这个文件系统、网络,还有CPU、Memory 这些资源,容器是镜像的运行时的实例。
镜像它是 OS文件系统,加上应用文件,加上依赖的一个打包。镜像可以认为是容器的模板,这是第二个概念容器。
POD
我们再来看第三个概念 POD, Kubernetes 并没有直接调度容器,而是在外面在封装了一个概念叫 POD。POD 是 Kubernetes 的基本调度单位,POD 在英文当中是豌豆