38 k8s-16DaemonSet:守护进程集
作者:互联网
DaemonSet:守护进程集,缩写为ds,在所有节点或者是匹配的节点上都部署一个Pod。
使用DaemonSet的场景:
✥ 运行集群存储的daemon,比如ceph或者glusterd
✥ 节点的CNI网络插件,calico
✥ 节点日志的收集:fluentd或者是filebeat
✥ 节点的监控:node exporter
✥ 服务暴露:部署一个ingress nginx
01.实例 创建一个DaemonSet
1 01.## 创建一个ds## 2 [root@k8s-master01 ~]# kubectl create -f nginx-ds.yaml 3 daemonset.apps/nginx created 4 02.##列出当前命名空间下的全部 node,并显示更详细的信息## 5 [root@k8s-master01 ~]# kubectl get node -owide 6 03.##master节点目前没有打污点,所以master节点上面也有pod,正常是不要把pod起到master主节点上,全放node上; ## 7 [root@k8s-master01 ~]# kubectl get po –owide 8 #同上[root@k8s-master01 ~]# kubectl get pod –owide 9 04.##如果不想给master部署容器,可以给它指定节点并打个标签,ds=true是标签## 10 [root@k8s-master01 ~]# kubectl label node k8s-node01 k8s-node02 ds=true 11 node/k8s-node01 labeled 12 node/k8s-node02 labeled 13 [root@k8s-master01 ~]# kubectl get node --show-labels 14 05.##编辑nginx-ds.yaml文件内容## 15 [root@k8s-master01 ~]# vim nginx-ds.yaml 16 修改的内容对比:增加了ds:''true'' 17 06.##更新yaml文件内容看结果## 18 [root@k8s-master01 ~]# kubectl replace -f nginx-ds.yaml #执行更新 19 daemonset.apps/nginx replaced 20 ##列出当前命名空间下的Pod## 21 [root@k8s-master01 ~]# kubectl get pod 22 ....... 23 07.##看到不符合要求的pod被自动删除## 24 [root@k8s-master01 ~]# kubectl get pod 25 NAME READY STATUS RESTARTS AGE 26 busybox 1/1 Running 1 110m 27 nginx-8vrcz 0/1 Terminating 0 2m36s 28 nginx-k6dj6 0/1 Terminating 0 2m36s 29 nginx-mgrks 1/1 Running 0 2m36s 30 08.##删除重建的过程还做了更新## 31 [root@k8s-master01 ~]# kubectl get po -owide (#反复执行看更新结果) 32 …...省略…… 33 ##更新的时候产生了两个之前的版本记录,因为没有加record,所以没有改变记录## 34 [root@k8s-master01 ~]# kubectl rollout history ds nginx #查看历史版本 35 09.##实现了新的pod已经全部到node节点上面了,master主节点没有了;## 36 37 10.##也可以直接指定master去创建pod## 38 [root@k8s-master01 ~]# kubectl label node k8s-master03 ds=true 39 [root@k8s-master01 ~]# kubectl get pod 40 [root@k8s-master01 ~]# kubectl get pod -owide 41 NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES 42 busybox 1/1 Running 1 111m 10.244.32.153 k8s-master01 <none> <none> 43 nginx-2khfj 1/1 Running 0 67s 10.244.58.205 k8s-node02 <none> <none> 44 nginx-6s9cj 1/1 Running 0 16s 10.244.195.21 k8s-master03 <none> <none> 45 nginx-n9q4d 1/1 Running 0 75s 10.244.85.220 k8s-node01 <none> <none>
02.DaemonSet更新策略
#对 DaemonSet 执行滚动更新的详细请操作参考官网: https://kubernetes.io/zh/docs/tasks/manage-daemon/update-daemon-set/ #配置文件中注意maxUnavailable的值: updatestrategy: rollingUpdate: maxUnavailable: 1 #(1设置小点,更新的影响最小) type: RollingUpdate #故障排查# ##01.出现ErrImagePull,说明镜像没有拉取成功,需要检查问题;比如更新策略,或者镜像版本是否书写正确 ##02.排查报错问题 1.#第一个检查点--镜像策略:# kubectl edit ds 2.#检查镜像策略:imagePullPolicy: IfNotPresent (#检查没问题) 3.#再次刷新#kubectl get pod –owide查看问题依旧 4.#第二个检查点--查看pod更新过程 # kubectl describe pod nginx-glj6n (#nginx名字随机的,以实际为准) 发现问题了:是版本写错了,对比之前写的错误命令;(1.15.3前漏写了nginx) ##03.重新设置 # kubectl set image ds nginx nginx=nginx:1.15.3 --record ##04.然后又是先删除后创建 ##05.更新策略建议使用OnDelete ##06. 重新设置为1.15.2 # kubectl set image ds nginx nginx=nginx:1.15.2 --record ##07.测试:比如删除master03这个节点的,我们手动删除,删除之后就触发了OnDelete策略,它就只更新这一台,更新为ngnix为1.15.2 ##08.查看更新记录 #kubectl rollout history ds nginx
搜索
复制
标签:kubectl,38,##,master01,nginx,k8s,16DaemonSet,ds 来源: https://www.cnblogs.com/kevin306/p/16227188.html