开发者学堂课程【Kubernetes 入门:应用编排与管理:Job 和 DaemonSet(二)】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/51/detail/1013
应用编排与管理:Job 和 DaemonSet(二)
5查看并行 Job 运行
1.pod age 表明每次 job 同时创建了两个 pod
2.本 job 一共运行了四个批次,一共运行8个 pod
6、CronJob 语法
新知识点:
schedule: crontab 时间格式相同
startingDeadlineSeconds: Job 最长启动时间
concurrencyPolicy:是否允许并行运行
successfulJobsHistoryLimit:允许留存历史 job 个数
三、操作演示
首先看 job.yaml 是一个计算pi的任务,使用 kubectl create -f job .yaml 就可以提交成功了
可以看到 job 运行完成
去 log 一下 job
可以看到打印出了圆周率
pod 正在运行
四、架构设计
1、管理模式
l Job Controller 负责根据配置创建 Pod
l Job Controller 跟踪 Job 状态,根据配置及时重试 Pod 或者继续创建
l Job Controller 会自动添加 label 来跟踪对应的 pod,并根据配置并行或者串行创建 Pod
2、DaemonSet 背景问题
我们可以让每个集群内的节点都运行一个相同的 Pod 吗?
如果这样做,以下的问题有什么方式来解决?
l 如何保证每个节点都运行一个 pod?
l 如果新节点加入集群,如何感知并部署对应的 Pod?
l 如果有节点退出,如何删除对应的 Pod?
l 如果 Pod 状态异常,如何监控并恢复 Pod 的状态?
3、DaemonSet:守护进程控制器
DaemonSet 能帮助我们做什么事情?
l 保证集群内每一个(或者一些)节点都运行一组相同的 Pod
l 跟踪集群节点状态,保证新加入的节点自动创建对应的 Pod
l 跟踪集群节点状态,保证移除的节点删除对应的 Pod
l 跟踪 Pod 状态,保证每个节点 Pod 处于运行状态
4、DaemonSet 语法
适用场景:
l 集群存储进程: glusterd, ceph
l 日志收集进程: fluentd,logstash
l 需要在每个节点运行的监控收集器
5、查看 DaemonSet 状态
# kubectl get ds
# kubectl get pods
NAME READY STATUS RESTARTS AGE
fluentd-elasticsearch-bdq2q 1/1 Running 0 9s
fluentd-elasticsearch-gxv68 1/1 Running 0 9s
fluentd-elasticsearch-nwczf 1/1 Running 0 9s
fluentd-elasticsearch-xmv8k 1/1 Running 0 9s
状态描述:(本集群公有四个节点)
DESIRED: 需要的 pod 个数 UP-TO-DATE:最新创建的个数
CURRENT: 当前已存在的 pod 个数 AVAILABLE:可用 pod 个数
READY:就绪的个数 NODE SELECTOR:节点选择标签
6、更新 DaemonSet
更新策略:
1. Rallngupdate: DaemonSel 默认更新策略,当更新 DaemonSet 模板后,老的Pod会被先删除,然后再去创建新的 Pod,可以配合健康检查做滚动更新
2. OnDelete:当 DaemonSet 模板更新后,只有手动的删除某一个对应的 Pod,此节点 Pod 才会被更新。
kubectl set image ds/fluentd-elasticsearch fluentd-elasticsearch=fluent/fluentd:v1.4
# kubectl rollout status ds/fluentd-elasticsearch
Waiting for daemon set "fluentd-elasticsearch" rollout to finish: 2 out of 4 new pods have been updated...
Waiting for daemon set "fuentd-elasticsearch" rollout to finish: 2 out of 4 new pods have been updated...
Waiting for daemon set "fluentd-elasticsearch" rollout to finish: 3 of 4 updated pods are available...
daemon set "fluentd-elasticsearch" successfully rolled out
7、管理模式
1. DaemonSet Controller 负责根据配置创建 Pod
2. DaemonSet Controller 跟踪 Job 状态,根据配置及时重试 Pod 或者继续创建
3. DaemonSet Controller 会自动添加 affinity&label 来跟踪对应的 pod,并根据配置在每个节点或者适合的部分节点创建 Pod


