K8S哲学 - 资源调度 DaemonSet

本文介绍了如何使用Kubernetes的DaemonSet实现高效日志收集,通过nodeSelector自动部署,以及如何利用Affinity设置节点亲和性。还讨论了默认滚动更新策略的修改,以确保仅在必要时更新特定节点上的DaemonSet。
摘要由CSDN通过智能技术生成

应用场景 日志收集

引出:

 正常情况下,每个服务都会进行 各自的日志收集、但是因为他们不在 同一台 Node 上,导致一旦查日志就需要 调动各个 机器进行切换,不方便也不高效 

低级做法:  

在每个需要收集日志的机器上部署 fiuentd 组件进行 后台收集日志 ,需要手动控制

高级做法:

 用 DaemonSet 守护进程进行收集,由 k8s为 匹配到 nodeSelector 自动部署  ,这里是 

nodeSelector:

     type: microServices 

后续如果有新增 节点,只要有 这个 标签,那么k8s 会自动新增 一个 DaemonSet 到该节点

Affinity 亲和力

创建资源

 如果不指定 nodeSelector 直接 create -f 创建 ,DeamonSet 会部署到 非 master 的 每一个  node 上

apiVersion: apps/v1
kind: DaemonSet
metadata: 
  name: fluentd
spec: 
  selector: 
    matchLabels:
      id: fluentd
      app: logging
  template:
    metadata: 
      name: fluentd
      labels:  
        id: fluentd
        app: logging
    spec: 
      containers:
         - name: fluentd-es
           image: fluentd
           env: 
            - name: FLUENTD_ARGS
              value: -qq
           volumeMounts:
             - name: containers
               mountPath: /var/lib/docker/containers
             - name: varlog
               mountPath: /varlog
      volumes:
        - name: containers
          hostPath: 
           path: /var/lib/docker/containers
        - name: varlog
          hostPath: 
           path: /varlog


        

但是 加上后

 

删除 重新 创建  ds 查看:

由于 本机节点没有 app=ds 的 label 所以不会在本机创建 ds 

但是一旦加上,立刻就创建了

所以只要 节点在 改集群内,只要 在需要的节点加上  nodeSelector 就会在该节点创建 ds

 

修改 ds 的默认更新策略

默认是滚动更新,结果是,一旦修改 yaml文件 template 里面的 内容,那么所有节点的 ds 都会更新,所以 修改为 OnDelete 模式、当 某一个 节点的  ds需要更新,就删除 改 ds ,会自动按照新的 yaml文件创建一个 ds

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值