拓冰建站拓冰建站
首页 / 资讯中心 / 正文

k8s中控制器的使用

1 概念控制器本质是无限循环的控制循环调谐循环/Reconcile Loop。工作模式持续监听集群状态对比期望状态yaml spec定义和集群实际状态两者不一样就做操作把实际状态往期望状态对齐。通俗类比家里的空调温控器。你设定26℃期望状态温度计读取房间当前温度实际状态高于26就制冷低于26就停止不停循环维持目标温度。K8s控制器就相当于这个温控器。工作流程控制循环通过apiserver监听资源变化读取期望状态写在yaml里保存在etcd获取集群当前真实状态对比两者是否一致不一致执行调谐操作创建/删除/更新Pod等资源回到第一步无限循环监控2 控制器常用类型控制器作用典型场景Deployment管理无状态应用底层调用ReplicaSet支持滚动更新、版本回滚web服务、后端API绝大多数无状态业务ReplicaSet保证指定数量Pod副本持续运行很少直接使用由Deployment调用维持副本数Deployment底层组件StatefulSet管理有状态应用Pod有稳定网络标识、稳定存储有序启停MySQL、Redis集群、ZooKeeper等数据库类服务DaemonSet每选定个节点上运行且仅运行1个Pod日志采集、监控agent、节点代理Job一次性任务直到Pod成功执行完成退出数据备份、批量计算跑完就结束CronJob定时Job按cron周期执行定时任务定时备份、定时报表任务举个Deployment例子yaml写replicas:3期望运行3个nginx Pod。如果节点宕机只剩1个Pod控制器会自动新建2个Pod凑够3个。如果手动多创建了Pod控制器会删掉多余Pod保证副本数3。修改镜像版本控制器滚动创建新Pod逐步销毁旧Pod实现不停服更新。3 replicaset控制器3.1 replicaset功能ReplicaSet 是下一代的 Replication Controller官方推荐使用ReplicaSet ReplicaSet和Replication Controller的唯一区别是选择器的支持ReplicaSet支持新的基于集合的 选择器需求ReplicaSet 确保任何时间都有指定数量的 Pod 副本在运行虽然 ReplicaSets 可以独立使用但今天它主要被Deployments 用作协调 Pod 创建、删除和更新的 机制3.2 replicaset参数说明参数名称字段类型参数说明specObject详细定义对象固定值就写 Specspec.replicasinteger指定维护 pod 副本数量spec.selectorObjectSelector 是对 pod 的标签查询与 pod 数量匹配spec.selector.matchLabelsstring指定 Selector 查询标签的名称和值以 key: value 方式指定spec.templateObject指定对 pod 的描述信息比如 lab 标签运行容器的信息等spec.template.metadataObject指定 pod 属性spec.template.metadata.labelsstring指定 pod 标签spec.template.specObject详细定义对象spec.template.spec.containerslistSpec 对象的容器列表定义spec.template.spec.containers.namestring指定容器名称spec.template.spec.containers.imagestring指定容器镜像3.3 Replicaset控制器示例3.3.1 建立控制器3.3.2 测试功能4 deployment 控制器4.1 deployment控制器的功能副本管理维持指定数量 Pod 副本Pod 故障销毁会自动重建。滚动更新重点版本升级逐步替换旧 Pod业务不中断底层生成新 ReplicaSet旧 ReplicaSet 保留用于回滚。版本回滚更新出错时可以回退到历史版本复用旧 ReplicaSet。副本扩缩容支持 scale 命令修改副本数量。版本历史保存保留旧版本 ReplicaSet 历史记录用于回滚。典型的应用场景用来创建Pod和ReplicaSet滚动更新和回滚扩容和缩容暂停与恢复4.2 deployment控制器示例4.2.1 监控4.2.2 建立deployment控制器4.2.3 升级和回滚升级回滚4.2.4 设定更新策略4.2.5 更新暂停和恢复5 DaemonSet5.1 DaemonSet 功能Kubernetes核心定义DaemonSet 是 Kubernetes 的工作负载控制器保证集群全部或者指定一部分节点上有且仅有一个该 Pod 副本。新节点加入集群DaemonSet 自动在新节点创建 Pod节点从集群移除对应节点上的 Pod 会被自动回收删除删除 DaemonSet 资源它管理的所有 Pod 全部被删除典型使用场景系统级守护进程网络插件Calico、Flannel每个节点部署网络代理负责节点网络通信日志采集Filebeat每个节点收集宿主机容器日志监控代理Node‑Exporter采集每台节点硬件、系统指标存储组件Ceph 客户端节点本地存储相关守护进程硬件相关节点硬件监控、驱动代理等需要访问宿主机资源的程序5.2 daemonset 示例6 job 控制器6.1 job控制器功能核心概念Job 属于 K8s 一次性任务控制器用来执行一次性、跑完就结束的任务。Deployment 是长期不停止的服务Job 是任务完成Pod 就正常退出状态 CompletedJob 核心能力创建 Pod执行任务直到 Pod成功正常结束退出码 0标记 Job 完成。如果 Pod 异常失败报错、崩溃Job 会自动新建 Pod 重试执行。任务成功完成之后不会再创建新 Pod保留已经完成的 Pod 记录。6.2 job 控制器示例7 cronjob 控制器7.1 cronjob 控制器功能Cron Job 创建基于时间调度的 Jobs。CronJob控制器以Job控制器资源为其管控对象并借助它管理pod资源对象CronJob可以以类似于Linux操作系统的周期性任务作业计划的方式控制其运行时间点及重复运行的 方式。CronJob可以在特定的时间点(反复的)去运行job任务。7.2 cronjob 控制器 示例
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门