一. k8s 工作负载基础解释

  1. 官方文档
  2. 什么是工作负载: 工作负载的控制结构可以理解为: 一组pod组成一个完整的应用,一个工作负载控制这一组pod,一个pod中又控制一组容器,比如通过deploy部署有3个副本的nginx,3个副本可能会部署到3个pod上,每个副本就是一个容器,这3个pod就是一个工作负载
  3. 简单来说在k8s中可以直接使用pod,或者service部署应用,也可使用工作负载来部署应用,简单来说工作负载就是运行在k8s上的一个完整应用(内部可能包含多个pod,多个服务容器),这些相当于一个状态机,用来控制pod的具体状态和行为k8s提供了多种类型的工作负:
  1. Deployment:用于创建和更新无状态的应用程序,可以实现Pod的滚动更新和回滚。
  2. StatefulSet:用于创建和更新有状态的应用程序,可以保证Pod的顺序和持久性。
  3. DaemonSet:用于在每个节点上运行一个Pod,常用于提供节点级别的服务,如日志收集,监控等。
  4. Job:用于运行一次性或批量的任务,可以保证任务完成或重试失败的任务。
  5. CronJob:用于定时运行周期性的任务,类似于Linux中的crontab。
    在这里插入图片描述
  1. 那么工作负载的特点时什么,为什么使用工作负载
  1. 首先有多种类型的工作负载,举例上面几种类型分别可以实现什么功能
  2. 以Deployment类型工作负载为例,最开始时通过pod直接部署应用时,会发现pod内部的容器可以有异常恢复功能,但是整个pod如果异常宕机则不会有恢复功能,使用Deployment部署pod应用时,可以在spec中设置各种期望状态,设置spec.replicas副本集,底层会期望状态通过ReplicasController副本控制器,ReplicasSet副本集等实现异常恢复滚动升级等功能
  3. 结合其他监控软件比如Metrics-server,通过工作负载也可以做到动态扩缩容
  1. 在k8s架构层面存在apiServer, controllerManager控制器管理器,etcd数据库等组件,而controllerManager控制器管理器就可以理解为管理了多个工作负载控制器,apiServer接收操作指令,controllerManager监听apiServer接收操作指令,判断执行的指令属于哪个控制器,例如Deploy或StatefulSet或DaemonSet等等,然后通过对应的控制器处理对应的指令,控制器将指令处理完毕后,将处理后的指令存储到etcd
    在这里插入图片描述
  2. 学习工作负载就是学习不同类型的工作负载有什么不同,怎么控制pod的行为
Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐