ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

38 k8s-16DaemonSet:守护进程集

2022-05-06 07:32:13  阅读:175  来源: 互联网

标签:kubectl 38 ## master01 nginx k8s 16DaemonSet ds


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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有