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服务守护进程的资料请关注其它相关文章!
声明:如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。