DaemonSet

DaemonSet

DaemonSet 确保全部Node 上运行一个 Pod 的副本。当有 Node 加入集群时,也会为他们新增一个 Pod 。当有 Node 从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有Pod。

在每一个node节点上只调度一个Pod,因此无需指定replicas的个数,比如:

  • 在每个node上都运行一个日志采集程序,负责收集node节点本身和node节点之上的各个Pod所产生的日志
  • 在每个node上都运行一个性能监控程序,采集该node的运行性能数据

详细信息

kubectl explain daemonset
kubectl explain daemonset.spec
kubectl explain daemonset.spec.template.spec

部署DaemonSet

daemonsetdemo.yml

apiVersion: apps/v1
kind: DaemonSet
metadata:
name: demonsetdemo
labels:
 app: demonsetdemo
spec:
template:
 metadata:
  name: demonsetdemo
  labels:
   app: demonsetdemo
 spec:
  containers:
   - name: demonsetdemo
    image: nginx:1.17.10-alpine
    imagePullPolicy: IfNotPresent
  restartPolicy: Always
selector:
 matchLabels:
  app: demonsetdemo

运行

运行demonset
kubectl apply -f demonsetdemo.yml

查看pod详细信息:只有工作节点创建pod,master节点并不会创建。
kubectl get pod -o wide

滚动更新

DaemonSet有两种更新策略类型:

  • OnDelete:这是向后兼容性的默认更新策略。使用 OnDelete 更新策略,在更新DaemonSet模板后,只有在手动删除旧的DaemonSet pod时才会创建新的DaemonSet pod。这与Kubernetes1.5或更早版本中DaemonSet的行为相同。
  • RollingUpdate:使用 RollingUpdate 更新策略,在更新DaemonSet模板后,旧的DaemonSet pod将被终止,并且将以受控方式自动创建新的DaemonSet pod。
上一篇:在现有K8S集群上安装部署JenkinsX


下一篇:Kubernetes核心-DaemonSet部署守护进程