kubernetes-DaemonSet介绍

183 阅读2分钟

DaemonSet 介绍

image.png

DaemonSet编排应用的方式

  • 同Deployment相似,DaemonSet基于标签选择器管控一组Pod副本;

  • 但是,DaemonSet用于确保 所有或选定的工作节点上 都运行有一个Pod副本

    • 提示:DaemonSet的根本目标在于让每个节点一个 Pod
    • 有符合条件的新节点进入时,DaemonSet会将Pod自动添加至相应节点;
    • 而节点的移出,相应的Pod副本也将被回收;
  • DaemonSet不需要定义replicas(Pod副本数量)

  • rollingUpdate 仅支持先删除一个节点上的副本 然后再去更新下一个节点

常用场景

  • 特定类型的系统化应用,例如kube-proxy,以及Calico网络插件的节点代理caliconode等
  • 集群存储守护进程、集群日志收集守护进程以及节点监控守护进程等

DaemonSet的资源规范

与Deployment相似,DaemonSet对象也使用标签选择器和Pod模板

区别之处在于,DaemonSet不需要定义replicas(Pod副本数量), 其Pod数量随节点数量而定;

image.png

DaemonSet yaml示例

部署promethues node-exporter

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: daemonset-demo
  namespace: default
  labels:
    app: prometheus
    component: node-exporter
spec:
  selector:
    matchLabels:
      app: prometheus
      component: node-exporter
  template:
    metadata:
      name: prometheus-node-exporter
      labels:
        app: prometheus
        component: node-exporter
    spec:
      containers:
      - image: prom/node-exporter:v1.5.0
        name: prometheus-node-exporter
        ports:
        - name: prom-node-exp
          containerPort: 9100
          hostPort: 9100
        livenessProbe:
          tcpSocket:
            port: prom-node-exp
          initialDelaySeconds: 3
        readinessProbe:
          httpGet:
            path: '/metrics'
            port: prom-node-exp
            scheme: HTTP
          initialDelaySeconds: 5
      hostNetwork: true
      hostPID: true

共享宿主机的PID和网络空间 hostNetwork: true hostPID: true

image.png 发现pod的IP地址就是宿主机的IP地址

查看指标

curl 192.168.0.45:9100/metrics

image.png

查看DaemonSet状态

kubectl get daemonset

~$ kubectl get daemonsets/daemonset-demo 

NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE 
daemonset-demo 2 2 2 2 2 2m 

~$ kubectl get pods -l app=prometheus -o wide 
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 

daemonset-demo-694mw 1/1 Running 0 3m 172.29.1.11 k8s-node01.magedu.com 

daemonset-demo-lmnpd 1/1 Running 0 3m 172.29.1.12 k8s-node02.magedu.com 

状态描述(示例集群中共有两个工作节点):

  • DESIRED:期望存在的Pod副本数
  • AVAILABLE:可用的Pod副本数
  • CURRENT:当前已存在的Pod副本数
  • NODE SELECTOR:节点选择器,表示未使用选择器,因而将适配到所有节点
  • READY:当前已经转为就绪状态的Pod副本数
  • AGE:资源已经创建的时长
  • UP-TO-DATE :已经更新到期望版本的Pod副本数

kubectl describe daemonsets

待补充

daemonsets 更新策略

  • rollingUpdate:滚动更新,自动触发
  • onDelete:删除时更新,手动触发

rollingUpdate的参数

kubectl explain daemonsets.spec.updateStrategy.rollingUpdate

image.png

滚动更新

  • 配置策略:rollingUpdate更新策略支持使用
    • maxUnavailabl e参数来定义单批次允许更新的最大副本数量
    • maxSurge