首页 > 其他分享 >11.DaemonSet的应用编排机制

11.DaemonSet的应用编排机制

时间:2023-08-08 11:01:46浏览次数:40  
标签:11 node exporter demo prometheus 更新 编排 DaemonSet daemonset

DaemonSet的应用编排机制
DaemonSet:在集群中的每个节点上,都要部署一个且只能部署目标应用的一个实例;
           也可以基于标签选择器管控一组Pod副本;
DaemonSet在什么场景中可以用到:
我们使用zabbix监控目标主机的时候,通常在每一个目标主机上面部署一个zabbix.agent,但没必要在一个节点上部署多个,像这种场景下就可以使用DaemonSet
或者kube-proxy、kube-flanner、ProjectCalico、csi-node

常用场景
   ◼ 特定类型的系统化应用,例如kube-proxy,以及Calico网络插件的节点代理calico-node等
   ◼ 集群存储守护进程、集群日志收集守护进程以及节点监控守护进程等
DaemonSet在API格式上与Deployment区别:
与Deployment相似,DaemonSet对象也使用标签选择器和Pod模板,区别之处在于,DaemonSet不需要定义replicas(Pod副本数量),其Pod数量随节点数量而定;


apiVersion: apps/v1            #API群组及版本;
kind: DaemonSet                #资源类型特有标识;
metadata:
name <string>                  #资源名称,在作用域中要惟一;
namespace <string>             #名称空间;DaemonSet资源隶属名称空间级别;
spec:
minReadySeconds <integer>      #Pod就绪后多少秒内任一容器无crash方可视为“就绪”;
selector <object>              #标签选择器,必须匹配template字段中Pod模板中的标签;
template <object>              #Pod模板对象;
revisionHistoryLimit <integer> #滚动更新历史记录数量,默认为10;
updateStrategy <Object>        #滚动更新策略
type <string>                 #滚动更新类型,可用值有OnDelete和RollingUpdate(默认);
rollingUpdate <Object>         #滚动更新参数,专用于RollingUpdate类型;
maxUnavailable <string>        #更新期间可比期望的Pod数量缺少的数量或比例;

示例:prometheus
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: daemonset-demo
  namespace: default
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.4.0
        name: prometheus-node-exporter
        ports:
          - name: prom-node-exp
          containerPort: 9100
          hostPort: 9100
hostNetwork: true
hostPID: true
实际案例
prometheus的pod资源定义
[root@K8s-master01 chapter8]#cat daemonset-demo.yaml 
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.4.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

创建并查看pod
[root@K8s-master01 chapter8]#kubectl apply -f daemonset-demo.yaml 
daemonset.apps/daemonset-demo created
[root@K8s-master01 chapter8]#kubectl get pods -o wide
NAME                             READY   STATUS    RESTARTS       AGE     IP            NODE         NOMINATED NODE   READINESS GATES
daemonset-demo-bztnc             1/1     Running   0              2m11s   10.0.0.105    k8s-node03   <none>           <none>
daemonset-demo-t56r2             1/1     Running   0              2m11s   10.0.0.104    k8s-node02   <none>           <none>
daemonset-demo-zc5fm             1/1     Running   0              2m11s   10.0.0.103    k8s-node01   <none>           <none>

发现每个工作节点运行一个副本,但控制平面节点上没有被部署相应的实例

去访问服务所在的节点,会得到该节点的各种指标  如:进程、cpu核心、磁盘设备等
[root@K8s-master01 ~]#curl 10.0.0.105:9100/metrics

查看daemonset的信息
[root@K8s-master01 ~]#kubectl get daemonset
NAME             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
daemonset-demo   3         3         3       3            3           <none>          10h
更新策略
更新策略
   ◼ rollingUpdate:滚动更新,自动触发
   ◼ onDelete:删除时更新,手动触发
   
滚动更新
   ◼ 配置策略:rollingUpdate更新策略支持使用maxUnavailable参数来定义单批次允许更新的最大副本数量
   ◼ 更新方式
      ◆~$ kubectl set image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ...
      ◆直接更新原配置文件,而后使用“kubectl apply”命令触发更新
      
对上述prometheus版本进行更新
查看daemonset的详细信息
[root@K8s-master01 ~]#kubectl get daemonset -o wide
NAME             DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE   CONTAINERS                 IMAGES                      SELECTOR
daemonset-demo   3         3         3       3            3           <none>          10h   prometheus-node-exporter   prom/node-exporter:v1.4.0   app=prometheus,component=node-exporter

对daemonset下的daemonset-demo pod中的prometheus-node-exporter容器进行镜像更新
[root@K8s-master01 ~]#kubectl set image daemonset daemonset-demo prometheus-node-exporter=prom/node-exporter:latest -n default
daemonset.apps/daemonset-demo image updated

监视更新过程(先删掉一个,更新一个,等就绪了,再更新第二个,因为更新策略默认是maxUnavailable:
其默认更新数量为1个1个滚动更新)
[root@K8s-master01 ~]#kubectl get pods -w

标签:11,node,exporter,demo,prometheus,更新,编排,DaemonSet,daemonset
From: https://blog.51cto.com/lmm01/7005674

相关文章

  • Win11设置固定IP地址后,仍然以169.254.*.* 为首选IP的解决方法
    经过不断尝试,结合网上找到的范例,以管理员执行以下命令并重启可解决:netshwinsockresetcatalog解释:一般添加catalog意指winsock目录,但通常命令可不用加catalog参数,直接reset即可重置。netshintipresetreset.log解释:注意:如果您不想指定日志文件的目录路径,运行命令︰netshin......
  • [代码随想录]Day11-栈与队列part03
    题目:239.滑动窗口最大值思路:说实话这题真不能说是困难题,麻烦是麻烦点但是比较容易实现。维护一个单调队列,队列内是由大到小排序(数组内的顺序是由小到大的),每次移动都会进行两次判断:如果前面去掉的数就是队列的首部,那么就要把首部移除如果后面添加的数比队尾的元素要大就......
  • t113-c-lcd_lvgl篇
    之所以用lvgl,是因为lvgl实在是太轻便了,只用库就能够做处图形管理页面,非常方便。当然,主要是我不想再下载qtcreate了,虽然qt被运用的很广泛,但是目前我对lvgl的掌握程度还是更深一点1.从github下载https://github.com/lvgl/lvgl2.为下载的lvgl源码创建例程需要注意的是lvgl所使......
  • IE浏览器如何设置默认内核版本,IE11怎么设置默认以IE8的方式解析
    今天修复项目兼容性BUG,用IE11兼容模式调试IE8上的问题,发现每次关闭再打开F12都会以IE11的模式加载,网上搜了一下也没找到怎么设置,不过自己找了找,发现在仿真里可以保存当前设置,凑合可以用吧。但是关闭F12工具后,默认会切换回F11模式,可以通过保留仿真设置里防止其自动切回11。......
  • 微信小程序11 弹窗showToast,showLoading,showModal
    弹窗是相当常用的功能,在微信里用弹窗还是挺方便的。不同于我们写网页时,对于alert,confirm这些比较简陋的原生弹窗通常要引入第三方插件来美化,微信自带的弹窗效果还不错。放一个按钮,绑定showToast方法。<buttonbind:tap="showToast">点击弹窗1</button>Js方法通用showToast......
  • 11REST表述性状态转移
    REST是一种通常使用HTTP和XML进行基于WEB通信的技术,可以降低开发的复杂性,提高系统的可伸缩性以往的每一个命令对应一个接口,命令数量多导致接口爆炸,现在通过REST技术将不同的命令都可以通过相同的接口实现相应的功能。 REST的5个原则:网络上所有的事物都应该抽象为资源每个资......
  • kubernetes-Deployment和DaemonSet
    在Kubernetes中,Deployment和DaemonSet是两个不同的资源类型,用于不同的目的。Deployment用于在集群中运行可扩展的应用程序,可以管理Pod的副本数量,执行滚动升级和回滚操作。DaemonSet用于确保在集群的每个节点上运行一个Pod副本。它通常用于部署运行在每个节点上的系统级别的服务......
  • 数学讲义1-11章
    第一章:18页第二章:29页第二章:36页第二章:37页第二章:43页第二章:49页,(另一种方式)第三章:58页第三章:59页第三章:60页第三章:61页第三章:62页第三章:62,63页第三章:64页第三章:65页第三章:65页第三章:66页第三章:70页第四章:76页第四章:79页第四章:80页第四章:8......
  • 7-11 分段计算居民水费 (10分)
    7-11 分段计算居民水费 (10分)为鼓励居民节约用水,自来水公司采取按用水量阶梯式计价的办法,居民应交水费y(元)与月用水量x(吨)相关:当x不超过15吨时,y=4x/3;超过后,y=2.5x−17.5。请编写程序实现水费的计算。输入格式:输入在一行中给出非负实数x。输出格式:在一行输出应交的水费,精确到小数点......
  • 611-基于VU9P的2路4Gsps AD 2路5G DA PCIe收发卡
    一、板卡概述    基于XCVU9P的5GspsADDA收发PCIe板卡。该板卡要求符合PCIe3.0标准,包含一片XCVU9P-2FLGA2014I、2组64-bit/8GBDDR4、2路高速AD,2路高速DA,支持外触发,外时钟。板卡工作温度范围0到60℃,板卡设计加工包含散热装置,支持服务器风冷散热。软件包括接口测试软件,......