概念介绍
这里简单粗浅的介绍一些概念,以便于大家对后续流程的理解
默认大家已经理解操作系统、进程、存储的概念
虚拟机就是模拟出来的一台完整的计算机系统。一台电脑利用虚拟机可以模拟出很多机器。但是这里我们并不使用虚拟机,介绍虚拟机是为了引出另一个概念——容器化。
容器化和虚拟机类似,它也可以在一台机器上模拟出很多计算系统。但是容器化技术更轻量一些,后面我们介绍的多用户环境其实都是容器化技术模拟出来的。感兴趣的可以搜一下容器化和虚拟机的区别。这里我们只需要知道,我们将使用容器化技术为每个用户创建出独立且相互隔离的计算环境。
如何使用虚拟机想必大家都知道,例如 Vmware、virtualBox 等等。那么如何创建容器呢,那就不得不提大名鼎鼎的 Docker,感兴趣的可以了解一下。不过很遗憾的是,我们没有使用 docker 作为容器化部署的工具,而是使用更轻量更符合云原生标准的 containerd。感兴趣的可以了解一下这两个区别。
好了,前面介绍的只需要知道,我们将使用容器化技术来实现多用户独立的计算环境。接下来我们将介绍一些 k8s 的概念。
首先,Pod是 k8s 的最小执行单元。这句话怎么理解呢?如果将 k8s 看作是一个操作系统的话,那么 pod 就是这个操作系统的进程。大家知道进程是操作系统进行资源分配和调度的基本单位。同理,pod 也是 k8s 中资源分配和调度的基本单位。还是优点绕?说白了,pod就是我们前面提到的容器,只不过在 k8s 中叫 pod。一个 pod 就是一个独立的计算环境,可以理解成一台虚拟机。
为了更好的理解我们所说的应用,我们还需要介绍一个概念——镜像。镜像这个概念大家并不陌生,大家用过各种版本的操作系统,例如 Windows7、Windows10 以及 Ubuntu20.04 等。我们常说的装机其实都要先准备一个系统镜像。同理,容器也有容器镜像(由于 docker 太流行了,所以很多情况下我们也叫 docker 镜像,大家只需要知道这是一个概念就行)。容器镜像中也预装好了各种软件,通常情况下,我们可以直接使用被人封装好的镜像,如果有特殊需求,我们也可以自己制作定制化的镜像,这个我们会在后面介绍,这里只需要知道镜像的概念即可。
我们知道,创建虚拟机需要在虚拟机软件上配置好各种资源,例如 cpu、内存、存储、网络等, 然后在虚拟机软件上创建一个虚拟机。那么在 k8s 上如何创建一个 pod 呢? 这里需要补充一点,k8s 的所有服务都是声明式的,什么是声明式?就是把所有需要的资源(镜像、计算资源、存储资源、网络)全写到一个配置文件,然后把这个配置文件提交到集群,即可创建出你想要的 pod。
有人会想,既然把 k8s 类比成操作系统,pod 类比成进程(软件)。那么,有没有 pod 的包管理器呢?例如 ubuntu 下我可以使用apt install vim来安装一个软件。那么 k8s 是否也可以这样安装应用,针对特定的应用我只需要调整启动参数即可。k8s 确实有应用市场,也有类似的包管理器,叫 helm ,在接下来的介绍中,我们将介绍如何使用 helm 一件部署 juputerhub 到 k8s 集群。