K8s系列---【四、kubernetes核心组件工作流程及原理】

四、kubernetes核心组件工作流程及原理

1.Kubernetes工作流程

Docker容器化部署: 直接把服务部署在Docker容器中即可(Dockerfile,直接在容器中),容器外层是物理机或者是虚拟机都可;

Kubernetes部署: 不会直接部署容器的,而是部署POD服务 , POD就是一个服务进程,POD内部封装的是容器服务,POD是k8s部署服务的最小的操作单元。

Kubernetes服务部署流程:

1、apiServer : 网关,授权认证,转发;

2、scheduler : 调度器,负责把需要的部署的服务调度到与之相匹配的节点上(节点预选策略,优选策略),schduler并不负责把服务直接部署在node节点,而是把调度后的匹配结果映射信息存储在etcd, 然后由各个节点的kubelet实现最终部署;

3、kubelet监控node节点资源,健康检查,pod监控。

2.控制器

控制器: 控制服务资源对象,管理服务资源对象,实现资源对象的CRUD(维护,管理)。

Replication Controller (重要): 副本控制器,控制服务副本数量;当服务部署副本数量(集群)设置为3,此副本控制器将会永远保证服务数量为3,保证服务永远处于高可用的状态;

Node Controller : 管理node节点

Namespace controller : 命名空间的控制器,管理命名空间

Service Controller(重要) : 虚拟服务控制器,主要对Pod实现服务发现,负载均衡

Endpoints Controller(重要) : 维护service服务,pod服务之间关系

Service Account Controller : 本地服务访问安全控制控制器

Persistent Volume Controller(重要) : 持久化数据卷控制器,主要用来创建持久化数据存储资源对象,主要用来有状态服务部署

DeamonSet Controller (重要): 每一个服务节点都必须部署一个相同的服务,使用此控制器

Deployment Controller (重要): 无状态服务的核心资源对象控制器

JobController (重要): 批处理任务调度控制器

Pod AutoScacler Controller(重要) : 自动扩容的控制器

3.K8s应用服务部署

  Kubernetes用来编排(管理)容器的,但是kubernetes不会直接管理容器,而是通过部署pod来进行容器的管理,pod是k8s的操作的最小单元。

4.Kubernetes核心资源对象

4.1副本控制器

副本控制器资源对象名称: Replication Controller(弃用) ,ReplicaSet(现在使用此副本控制器) 。

作用: 用来保证服务副本数量永远和预期所设定的数量一致,也就是说永远保证服务处于高可用状态。

场景: 服务部署上线后,某一个服务(POD)宕机了, 副本控制立马对服务进行重建,保证服务数量一直是预期数量。

问题: 在互联网公司中,几十万服务(几十万pod+), ReplicaSet副本控制器如何知道哪些pod属于此控制器控制呢??

答案: 标签。

4.2 Label标签

  Label标签是kubernetes灵活控制资源对象一个非常重要的工具; label标签可以附加到任何的资源对象上:NODE,POD,Service,RS,Deployment等等;一个资源对象可以定义任意数量的标签,同一个标签也可以被附加到任意数量资源对象上,标签格式:key:value, 名称可以自定义。

K8s可以通过标签精确的,唯一性定位一个资源对象,从而实现k8s对资源对象精细化控制。

温馨提示:  在ReplicaSet,POD架构组合中,不支持滚动更新,扩容,缩容,如果需要支持这些功能,必须使用Deployment资源对象。

4.3 Deployment

Deployment为Pod和ReplicaSet 提供了一个 声明式定义方法,用来替代以前的 ReplicationController 来方便的管理应用。

典型的应用场景:

(1)、定义Deployment 来创建 Pod 和 ReplicaSet

(2)、滚动升级和回滚应用

(3)、扩容和缩容

(4)、暂停和继续 Deployment

Deployment不仅仅可以滚动更新,而且可以进行回滚,如果发现升级到V2版本后,发现服务不可用,可以回滚到V1版本。

以上服务部署结构是最终结果,在生产环境部署服务就是使用如上结构部署的。

4.3.1 扩容,缩容

4.3.2 滚动更新

项目上线后,经常发布新的版本,这些版本就必须立马上线,就必须滚动更新能力。

4.4 HPA

Horizontal Pod Autoscaling 仅适用于 Deployment 和 ReplicaSet,在V1版本中仅支持根据Pod的CPU利用率扩容,在vlalpha版本中,支持根据内存和用户自定义的metric扩缩容。

4.5 DeamonSet

DeamonSet控制器,让每一个node节点都部署一个相同的服务 ,通常deamonset被用来部署一些公共的服务配套设置。

4.6 Volume

Kubernetes抽象出来的数据存储资源对象,volume数据卷会把存储介质(磁盘,文件系统)中数据挂载到POD中容器中;volume是k8s的一种抽象资源对象,可以被k8s管理。

注意事项:

1、容器宕机,volume数据卷不会丢失,数据不会丢失;

2、pod宕机,volume也会消失,数据就丢失了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值