Docker 与 K8S学习笔记(十五)—— 核心概念梳理

2022年01月16日 阅读数:4
这篇文章主要向大家介绍Docker 与 K8S学习笔记(十五)—— 核心概念梳理,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

Kubernetes中涉及不少概念,好比Pod、RC、Label啊等等,初次接触容易蒙圈,因此今天咱们将一股脑将这些概念梳理清楚,为后续的学习扫除障碍,你们后面在学习过程当中也能够不断翻查本篇内容,强化记忆与理解。前端

 

1、Pod后端

Pod是Kubernetes中建立和管理的、最小的可部署的计算单元。它实际上是由一组容器组成(最少一个),这一组容器共享存储、网络、以及怎样运行这些容器的声明。一个Pod的组成示意图以下:网络

咱们能够看出一个Pod有一个咱们称之为“根容器”的Pause容器和多个用户业务容器组成,为何要这么设计呢?app

  • 当将一组容器做为一个基本单元时,可利用Pause容器这种业务无关的容器描述当前整个单元的状态;负载均衡

  • Pod里多个业务容器共享Pause容器的IP和Volume,简化了业务容器间通讯问题与文件共享问题。工具

 

2、ReplicaSet(增强版的RC)学习

ReplicaSet 的目的是维护一组在任什么时候候都处于运行状态的 Pod 副本的稳定集合,简单的说就是保障用户应用集群的高可用性,当集群Pod数小于设定值则补充,大于设定值则剔除多余的Pod。其实ReplicaSet就是增强版的RC,它与RC用法基本相同,不一样的是ReplicaSet支持集合式的Label Selector。ui

这里须要注意:咱们在实际使用时应该避免直接使用ReplicaSet,而是应该经过Deployment来建立ReplicaSet和Pod。spa

 

3、Deploment设计

Deploment是Kubernetes 1.2开始引入的新概念,其目的是为了更好解决Pod编排问题,为此Deploment在内部使用ReplicaSet来实现目的,Deployment经过管理ReplicaSet间接管理Pod,即Deployment管理ReplicaSet,ReplicaSet管理Pod。Deployment有以下几种使用场景

  • 建立一个Deployment对象来生成对应的ReplicaSet并完成Pod副本的建立过程;

  • 经过检查Deployment的状态来判断部署是否完成;

  • 更新Deployment以建立新的Pod;

  • 若是当前Deployment不稳定则会滚到先前的一个版本;

  • 挂起或恢复一个Deployment。

 

4、Service(服务)

Service定义了外界访问一组Pod的方式,Service有本身的IP和端口,Service为这些Pod提供负载均衡。好比有一个文件上传应用,其后端应用有三个Pod副本,这三个副本因为会常常性被销毁重启,因此前端必然不能时刻维护这三个副本的地址,这时候Service的做用就体现出来了,它能解耦前端应用与后端应用的这种关联。

 

5、Label(标签)

一个Label是一组键值对,key、value都由用户定义,Lable能够附加在各类资源上,如Pod、ReplicaSet、Service等。一个资源对象能够定义任意数量的Label,同一个Label也能附加到任意数量的资源上,咱们经过Lable能够实现多维度的资源分组管理能力,也可结合Label Selector实现相似SQL的对象查询机制。

 

6、Volume(存储卷)
Kubernetes中的Volume是Pod中可以被多个容器访问的共享目录,其概念、用途和目的与Docker中的Volume相似,但并不等价,首先Kubernetes的Volume定义在Pod上,而后被Pod内多个容器挂载;其次Kubernetes的Volume生命周期与Pod相同,但与容器的生命周期无关,当容器被终止或重启时,Volume中的数据也不会丢失;最后Kubernetes的Volume支持多种类型的实现如GlusterFS、Ceph等。

 

7、Namespace(命名空间)

试想,若是有多个用户或项目组使用同一个Kubernetes集群,那他们的应用该如何区分呢,答案就是Namespace。其经过将集群内的资源对象分配到不一样Namespace中,造成逻辑上的不一样分组,从而达到多组件件资源隔离的效果。

 

8、Annotation(注解)

Annotation与Label相似,也使用键值对形式进行定义,相比于Label,Annotation属于用户自定义的附加信息,主要方便外部工具进行获取或查找。