daemonset又是什么?

daemonset是守护进程集,简写为ds;是在所有的节点或者匹配的节点上都部署一个pod。

[root@k8s-master01 ~]# kubectl get nodes
name           status   roles    age   version
k8s-master01   ready    <none>   8d    v1.23.3
k8s-master02   ready    <none>   8d    v1.23.3
k8s-master03   ready    <none>   8d    v1.23.3
k8s-node01     ready    <none>   8d    v1.23.3
k8s-node02     ready    <none>   8d    v1.23.3

比如从上段代码中可以看到我们集群有五个节点,daemon会在这五个节点都部署一个pod;又或者我们只需要在node节点部署,那么可以利用标签的方式只在node节点上部署pod。比如我们的calico网络插件就是用daemonset部署的。

daemonset 的使用场景:

  • 监控数据收集:需要每个节点上收集数据
  • 监控节点状态
  • 负责每个节点的网络、存储等组件,如calico、ceph等

daemonset的使用:

apiversion: apps/v1
kind: daemonset
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  revisionhistorylimit: 10
  selector:
    matchlabels:
      app: nginx
  template:
    metadata:
      creationtimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.18.0
        imagepullpolicy: always
        resources: {}
        terminationmessagepath: /dev/termination-log
        terminationmessagepolicy: file
      dnspolicy: clusterfirst
      restartpolicy: always
      schedulername: default-scheduler
      securitycontext: {}
      terminationgraceperiodseconds: 30

注意:没有副本数的参数

创建一个ds;然后查看可以看到每个节点上都生成了一个nginx副本。

[root@k8s-master01 ~]# kubectl create -f nginx-ds.yaml 
daemonset.apps/nginx created
[root@k8s-master01 ~]# kubectl get pod -o wide 
name          ready   status    restarts         age    ip               node           nominated node   readiness gates
busybox       1/1     running   21 (2m45s ago)   8d     172.27.14.193    k8s-node02     <none>           <none>
nginx-2c7xf   1/1     running   0                2m2s   172.25.92.79     k8s-master02   <none>           <none>
nginx-kjdx8   1/1     running   0                2m2s   172.25.244.200   k8s-master01   <none>           <none>
nginx-wwltz   1/1     running   0                2m2s   172.27.14.199    k8s-node02     <none>           <none>
nginx-zl2lr   1/1     running   0                2m2s   172.18.195.19    k8s-master03   <none>           <none>
nginx-znprg   1/1     running   0                2m2s   172.17.125.7     k8s-node01     <none>           <none>

需要注意的地方:

  • restartpolicy字段默认是always
  • daemon set没有副本数
  • 最大失败数需要写数字,建议1
  • 更新策略建议使用ondelete,保留历史版本为1

其他地方与deployment和statefulset类似,就不说了,可以看我另外两篇!

以上就是daemonset服务守护进程的使用场景的详细内容,更多关于daemonset服务守护进程的资料请关注其它相关文章!