👋 欢迎来到吴老二技术博客,专注运维 / 数据库 / 云原生
首页/云原生/正文

kubernetes 深入理解控制器(workload)

吴
吴老二
2021-06-19云原生2239 次浏览0 条评论

一.Pod与controllers的关系

  • controllers:在集群上管理和运行容器的对象
  • 通过label-selector相关联
  • Pod通过控制器实现应用的运维,如伸缩,升级等

二.Deployment

  • 部署无状态应用
  • 管理Pod和ReplicaSet
  • 具有上线部署、副本设定、滚动升级、回滚等功能
  • 提供声明式更新,例如只更新一个新的Image
    应用场景:Web服务,微服务
创建Deployment: # kubectl apply -f nginx-deployment.yaml 查看Deployment信息: #kubectl get deployments 上图中涉及到数量解释如下: READY:0/3 当前准备好的副本数量0,期望副本数3 (即Deployment里面定义的replicas) UP-TO-DATE: 最新版本副本数量,在滚动升级中,有多少副本已经升级成功 AVAILABLE:当前集群可用的副本数量,及存活的Pod数量 最终结果如下: 查看副本数量: # kubectl get rs 查看Deployment控制pod水平拓展过程 # kubectl describe deployment nginx-deployment

三.StatefulSet

  • 部署有状态应用
  • 每个节点都有固定身份ID
  • 集群的规模比较固定
  • 如果磁盘损坏,集群内的某个节点无法运行
    应用场景:mysql集群,MongoDB集群,Zookeeper集群

四.DaemonSet

  • 在每一个Node上运行一个Pod
  • 新加入的Node也同样会自动运行一个Pod
    应用场景:zabbix agent,saltstack agent
创建DaemonSet: # kubectl apply -f agent.yaml 查看daemonset信息 # kubectl get daemonset

五.Job

  • 普通任务(Job)
一次性执行 官方案例:https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/ 应用场景:离线数据处理 部署perl # kubectl apply -f https://k8s.io/examples/controllers/job.yaml 查看job #kubectl get jobs 查看日志: # kubectl logs pi-lzsh6 定时任务(CronJob) 像Linux的Crontab一样 官方案例:https://kubernetes.io/docs/tasks/job/automated-tasks-with-cron-jobs/ 应用场景:通知,备份 部署CronJob: # kubectl create -f https://k8s.io/examples/application/job/cronjob.yaml 查看pod # kubectl get pods 查看日志:

六.控制器小结

  • Deployment:无状态部署
  • StatefulSet:有状态部署
  • DaemonSet:守护进程部署
  • Job & CronJob:批处理
文章底部广告位在后台「广告设置」填写广告代码后显示

评论 0

评论需 登录 后发表(注册并验证邮箱)。
还没有评论,来抢沙发~