云原生4 走进容器编排平台 - K8s核心概念

94 阅读3分钟
K8s的五个核心概念

1.Pod
Pod 是 Kubernetes 的一个最小调度以及资源单元, 一个 Pod 简单来说是
对一组容器的抽象
,它里面会包含一个或多个容器。

用户可以通过 Kubernetes 的 Pod API 生产一个 Pod,让 Kubernetes 对这个 Pod 进行调度,也就是把它放在某一个 Kubernetes 管理的节点上运行起来。

在 Pod 里面,我们也可以去定义容器所需要运行的方式。比如说运行容器的 Command,以及运行容器的环境变量等等。

Pod 给内部容器提供了一个共享的运行环境容器们会共享同一个网络环境,这些容器可以用 localhost 来进行直接的连接。但是Pod 与 Pod 之间,是互相有 isolation 隔离的

Image.png

2.Volume
Volume 就是卷的概念,它是用来管理 Kubernetes 存储的,是用来声明在 Pod 中的容器可以访问的文件目录一个卷可以被挂载在 Pod 中一个或者多个容器的指定路径下面.

Volume的多样化存储
Volume 可以去支持多种的后端的存储。比如说 Kubernetes 的 Volume 就支持了很多存储插件,它可以支持本地的存储,可以支持分布式的存储,比如说像 ceph,GlusterFS ;它也可以支持云存储,比如说阿里云上的云盘、AWS 上的云盘、Google 上的云盘等等。

Image.png

3.Deployment
Deployment 可以定义一组 Pod 的副本数目、以及这个 Pod 的版本。一般我们会用 Deployment 这个抽象来做应用的真正的管理,而 Pod 是组成 Deployment 最小的单元

Kubernetes 是通过 Controller去维护Deployment 中Pod 的数目,它也会去帮助 Deployment 自动恢复失败的 Pod。 比如一个Deployment 里面需要两个 Pod,当一个 Pod 失败的时候,控制器就会监测到,它重新把 Deployment 中的 Pod 数目从一个恢复到两个,通过再去新生成一个 Pod。通过控制器,我们也会帮助完成发布的策略。比如说进行滚动升级,进行重新生成的升级,或者进行版本的回滚.

4.Service
Service 提供了一个或者多个 Pod 实例的稳定访问地址
Service作为一个抽象,把所有 Pod 的访问能力抽象成一个第三方的一个 IP 地址。

实现 Service 有多种方式,Kubernetes 支持 Cluster IP,上面我们讲过的 kuber-proxy 的组网,它也支持 nodePort、 LoadBalancer 等其他的一些访问的能力。

Image.png

5.NameSpace
Namespace 是用来做一个集群内部的逻辑隔离的,它包括鉴权、资源管理等。Kubernetes 的每个资源,比如刚才讲的 Pod、Deployment、Service 都属于一个 Namespace,同一个 Namespace 中的资源需要命名的唯一性,不同的 Namespace 中的资源可以重名。

Image.png

K8s核心概念在Openshift Ecs中的体现:
拿openshift ecs举例,通常我们会有多个ecs cluster,每个cluster中会有多个project,project 相当于namespace,每个namespace拥有自己的资源; project中我们可以有多个deployment,也就是我们真正运行的项目集群,一个deployment会由一组pod组成,而service可以为deployment提供LB Route URL进行访问。