暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

K8S--关键组件介绍

梧桐的风雪 2021-08-23
668

一、架构

说到K8S关键组件或对象,先上一张官网图:

简单一点的

核心对象和概念有:Master、Node、Pod、Label、Replication Controller、Deployment、Horizontal Pod Autoscaler、StatefulSet、Services、Job、Volume、Persistent Volume、NameSpace、Annotation、ConfigMap


二、核心组件简介

(一)、Master

         K8S的控制节点,集群的大脑,因为比较重要,生产环境一般建议高可用部署(3台及以上)。上面运行的关键进程有:

1、  API Server:提供HTTP Rest接口的关键服务进程,是集群控制的入口进程,也是K8S里所有资源的增、删、改、查等操作的唯一入口。

2、  Controller Manager:所有资源对象的自动化控制中心。

3、  Scheduler:负责调度Pod资源的进程。

4、  etcd:分布式键值对存储数据库,负责集群所有资源对象的数据存储。此组件可以单独部署,也可以放在Master节点上。

 

(二)、Node

         K8S集群中除了Master以外的机器,是工作负载节点。运行关键组件有:

1、  kubelet:负责Pod的创建、启停等操作。

2、  kube-proxy:实现Service的通信和负载均衡功能。

3、  dockerdocker引擎,负责本机的容器创建和管理工作。

 

(三)、Pod

         K8S中最小资源调度单位,也是最基本概念。其直译为豆荚,可以把容器想象为里面的豆子。分为两大类:普通Pod和静态Pod(只运行在Node节点上,不存放于etcd数据库中,存放在Node节点上的具体文件中)。

每个Pod都由一个特殊的rootcontainer(根容器)的Pause容器和若干个业务容器组成,如下图:



       其结构有两大好处:Pause容器状态代表所有容器组的状态;所有业务容器共享Pause容器的IP和存储卷。

 

(四)、Label

         是一个(key,value)键值对,运用于各种资源对象上。类似于SQL中的对象查询机制。通过更多个标签组合方式实现复杂筛选,多个表达式用“,”连接,几个条件之间是“AND”关系(即:必须同时满足)。主要运算符有:InNotInExistsDoesNotExist

 

(五)、Replication Controller(简称RC)、Replica Set

RC:声明了某种Pod的副本数量在任意时刻都符合某个预期值。老版本的API V1支持,只支持基于等式的标签选择,现已被ReplicaSet替代。

ReplicaSet:副本数集,跟RC一样的作用,是新一代的RC,除了支持等式的标签选择,还支持基于集合的选择。调用API的版本为:apps/V1

 

(六)、Deployment

         实如其名,调度部署。包含了RC的功能,可以随之知道当前部署的进度。其声明和定义跟ReplicaSet相似。

 

(七)、Horizontal Pod Autoscaling(简称:HPA

         Pod横向自动扩容。通过追踪分析RC或者ReplicaSet控制的目标Pod的负载变化,来确定是否需要调整目标Pod的副本数量。

         Pod的负载度量指标主要有:

        1、  CPU Utilization Percentage 即:同一RCReplicaSet                           deployment控制下的Pod所有副本的CPU利用率平均值。

        2、  应用程序自定义的度量指标,如(TPSQPS)。

 

(八)、StatefulSet

         有状态集,是一种特殊的deployment对象。其特殊性在于:

        1、  其里面的每个Pod都有稳定、唯一的网络标识。

        2、  其控制的Pod副本的启停顺序是受控的,起从编号0开始,停则倒序从n开始,n-1递减。

        3、  Pod采用稳定的持久化存储卷,删除Pod是默认不会删除与相关的存储卷。

 

(九)、Service

         就是一个微服务。每个Service拥有一个全局唯一的虚拟IP地址(Cluster IP),其通过运行在每个Node上的Kube-proxy作为负载均衡器,把对Service的请求转发到后端的Pod实例上,并在内部实现服务的负载均衡和会话保持。

         访问Service的最常见三种方式:

        1、  Node Port

        2、  Load Balance

        3、  Metal LB

 

(十)、Job

         是一种特殊的Pod副本控制器,主要用于启动一个批处理任务。其控制的Pod运行时间短暂,不能重启,只运行一次。

 

(十一)、Volume

         存储卷,是Pod中能够被多个容器访问的共享目录。其主要类型有:

        1、  emptyDir:临时目录,当Pod被移除时,其中数据也被删除。其使用场景有:

    (1)、某些应用运行时所需的临时目录

    (2)、长时间任务的过程数据临时保存目录

    (3)、多容器共享目录

2、  hostPath:在Pod上挂载宿主机上的文件或目录。其应用场景有:

    (1)、容器应用程序生成的日志文件需要永久保存。

    (2)、需要访问宿主机上Docker引擎内部数据的容器应用。

3、  公有云VolumegcePresitentDiskawsElaticBlockStore

4、  NFS

5、  其他类型

 

(十二)、Persistent Volume (简称PV

         PVK8S集群中的网络存储对应的一块存储。只能是网络存储或者分布式存储,在每个Node上都可以访问。

 其状态主要有:Available(空闲可用)、Bound(已绑定到某个PVC)、Released(其PVC已经被删除,但资源未被回收)、FaildPV回收失败)。

 

(十三)、Namespace

         命名空间,以实现多租户的资源隔离。如创建对象时不指定,默认被放在default命名空间中。

 

(十四)、ConfigMap

         用来保存配置参数的Map表。通过以Volume映射发方式使其成为Pod内的配置文件,如果ConfigMap配置文件发生变化,其值也会动态映射到Pod中。

 

 


文章转载自梧桐的风雪,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论