栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

k8s-daemonSet控制器

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

k8s-daemonSet控制器

通过该控制器的名称我们可以看出他的用法daemon,就是用来部署守护进程的,daemonSet用于在每个kubernetes节点中将守护进程的副本作为后台进程运行,说白了就是每个节点部署一个pod副本,当节点加入到kubennetes集群中,pod会被调度到该节点上运行,当节点从集群只能够被移除后,该节点上的pod也会被移除,当然我们删除daemonSet,所有和这些对象相关的pods都会被删除。

集群存储守护程序,glusterd ceph要部署在每个节点上提供持久性存储

节点监控守护进程,prometheus监控集群,可以在每个节点上运行一个node-exporter进程来收集监控节点的信息

日志收集守护程序,节点网络插件,特别是关于daemonSet运行的pod的调度问题,正常情况下,pod运行在那个节点上有kubernetes的调度器策略来决定,然而有daemonSet控制器创建的pod实际上提前已经确定了在那个节点上了,pod创建时指定.spec.nodeName

DaemonSet并不关心一个节点的unshedulable字段,这个我们会在后面的调度章节

DaemonSet可以创建pod,即使调度器还没启动

[root@master1 ~]# cat  nginx-ds.yaml 
apiVersion: apps/v1
kind: DaemonSet
metadata: 
   name: nginx-ds
   namespace: default 
spec:
   selector:
     matchLabels:
        k8s-app: nginx
   template:
     metadata:
       labels:
        k8s-app: nginx
     spec:
        containers:
          - image: nginx:1.7.9
            name: nginx
            ports:
            - name: http
              containerPort: 80   

 我们观察可以发现除了master节点之外的4个节点上都有一个相应的pod运行,因为master节点上默认打上污点,所以默认情况下不能调度普通的pod上去

集群中的pod和node是意义对应,而daemonSet会管理全部机器上的pod副本,负责对他们进行更新和删除。

那么daemonSet控制器是如何保证每个node上有且只有一个被管理的pod呢?

首先控制器从etcd获取到所有的node列表,然后遍历所有的node

根据资源对象定义是否有调度相关的配置,然后分别检车node是否符合要求

运行pod的节点上检查是否已有对应的pod,如果没有,则在这个node上创建该pod,如果有,并且数量大于1,那就把多余的pod从这个节点删除,

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/882103.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号