k8s-pod之DaemonSet

2022-03-13  本文已影响0人  david161

DaemonSet 确保全部Node 上运行一个 Pod 的副本。当有 Node 加入集群时,也会为他们新增一个 Pod 。当有 Node 从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有Pod。
在每一个node节点上只调度一个Pod,因此无需指定replicas的个数,比如:
1)在每个node上都运行一个日志采集程序,负责收集node节点本身和node节点之上的各个Pod所产生的日志
2)在每个node上都运行一个性能监控程序,采集该node的运行性能数据

DaemonSet模板说明

可以通过kubectl命令行方式获取更加详细信息

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

部署DaemonSet

controller/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

运行DaemonSet

运行demonset 
kubectl apply -f demonsetdemo.yml 

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

DaemonSet的滚动更新

DaemonSet有两种更新策略类型:
1)OnDelete:这是向后兼容性的默认更新策略。使用 OnDelete 更新策略,在更新DaemonSet模板后,只有在手动删除旧的DaemonSet pod时才会创建新的DaemonSet pod。这与Kubernetes1.5或更早版本中DaemonSet的行为相同。
2)RollingUpdate:使用 RollingUpdate 更新策略,在更新DaemonSet模板后,旧的DaemonSet pod将被终止,并且将以受控方式自动创建新的DaemonSet pod。

上一篇下一篇

猜你喜欢

热点阅读