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


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

    1.Kubernetes工作流程

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

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

    Kubernetes服务部署流程:

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

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

    3kubelet监控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,PODService,RS,Deployment等等;一个资源对象可以定义任意数量的标签,同一个标签也可以被附加到任意数量资源对象上,标签格式:key:value, 名称可以自定义。

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

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

    4.3 Deployment

    DeploymentPodReplicaSet 提供了一个 声明式定义方法,用来替代以前的 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版本中仅支持根据PodCPU利用率扩容,在vlalpha版本中,支持根据内存和用户自定义的metric扩缩容。

    4.5 DeamonSet

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

    4.6 Volume

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

    注意事项:

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

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

  • 相关阅读:
    socket发送文字、图片、文件---基于python实现
    python socket详解
    loadrunner socket协议问题归纳(6)
    Hash算法解决冲突的四种方法
    while循环 运算符和编码
    python初识
    js中forEach,for in,for of循环的用法详解
    设计模式之MVC和MVT
    mac 下的 tree 命令 终端展示你的目录树结构
    Mac查看进程
  • 原文地址:https://www.cnblogs.com/hujunwei/p/15895915.html
Copyright © 2020-2023  润新知