Kubernetes必备知识: DaemonSet

简介: DaemonSet:守护进程控制器DaemonSet 也是 Kubernetes 提供的一个 default controller,它实际是做一个守护进程的控制器,它能帮我们做到以下几件事情:首先能保证集群内的每一个节点都运行一组相同的 pod;同时还能根据节点的状态保证新加入的节点自动创建对应的 pod;在移除节点的时候,能删除对应的 pod;而且它会跟踪每个 pod 的状态,当这个 pod 出现异常、Crash 掉了,会及时地去 recovery 这个状态。

所属技术领域:

Kubernetes

|名词定义|

DaemonSet:守护进程控制器
DaemonSet 也是 Kubernetes 提供的一个 default controller,它实际是做一个守护进程的控制器,它能帮我们做到以下几件事情:
首先能保证集群内的每一个节点都运行一组相同的 pod;
同时还能根据节点的状态保证新加入的节点自动创建对应的 pod;
在移除节点的时候,能删除对应的 pod;
而且它会跟踪每个 pod 的状态,当这个 pod 出现异常、Crash 掉了,会及时地去 recovery 这个状态。

|技术特点|

 DaemonSet 语法

下面举个例子来看一下,DaemonSet.yaml 会稍微长一些。

图片.png

首先是 kind:DaemonSet。如果之前学过 deployment,其实我们再看这个 yaml 会比较简单。例如它会有 matchLabel,通过 matchLabel 去管理对应所属的 pod,这个 pod.label 也要和这个 DaemonSet.controller.label 想匹配,它才能去根据 label.selector 去找到对应的管理 Pod。下面 spec.container 里面的东西都是一致的。

这里用 fluentd 来做例子。DaemonSet 最常用的点在于以下几点内容:

首先是存储,GlusterFS 或者 Ceph 之类的东西,需要每台节点上都运行一个类似于 Agent 的东西,DaemonSet 就能很好地满足这个诉求;

另外,对于日志收集,比如说 logstash 或者 fluentd,这些都是同样的需求,需要每台节点都运行一个Agent,这样的话,我们可以很容易搜集到它的状态,把各个节点里面的信息及时地汇报到上面;

还有一个就是,需要每个节点去运行一些监控的事情,也需要每个节点去运行同样的事情,比如说 Promethues 这些东西,也需要 DaemonSet 的支持。

 查看 DaemonSet 状态
图片.png

创建完 DaemonSet 之后,我们可以使用 kubectl get DaemonSet(DaemonSet 缩写为 ds)。可以看到 DaemonSet 返回值和 deployment 特别像,即它当前一共有正在运行的几个,然后我们需要几个,READY 了几个。当然这里面,READY 都是只有 Pod,所以它最后创建出来所有的都是 pod。

这里有几个参数,分别是:需要的 pod 个数、当前已经创建的 pod 个数、就绪的个数,以及所有可用的、通过健康检查的 pod;还有 NODE SELECTOR。
 更新 DaemonSet
Kubectl set image ds/fluentd-elasticsearch fluentrd-elasticsearch=fluent/fluentd:v1.4
其实 DaemonSet 和 deployment 特别像,它也有两种更新策略:一个是 RollingUpdate,另一个是 OnDelete。

RollingUpdate 其实比较好理解,就是会一个一个的更新。先更新第一个 pod,然后老的 pod 被移除,通过健康检查之后再去建见第二个 pod,这样对于业务上来说会比较平滑地升级,不会中断;

OnDelete 其实也是一个很好的更新策略,就是模板更新之后,pod 不会有任何变化,需要我们手动控制。我们去删除某一个节点对应的 pod,它就会重建,不删除的话它就不会重建,这样的话对于一些我们需要手动控制的特殊需求也会有特别好的作用。

 架构设计

DaemonSet 管理模式

图片.png

DaemonSet 控制器
图片.png

|资料来源|

发展历程:http://www.orchome.com/1337

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4月前
|
存储 Kubernetes 调度
k8s教程(pod篇)-DaemonSet(每个node上只调度一个pod)
k8s教程(pod篇)-DaemonSet(每个node上只调度一个pod)
67 0
|
9月前
|
Kubernetes 固态存储 API
【k8s 系列】k8s 学习十八,replicaSet,DaemonSet and Job
上一篇讲到的 ReplicationController 是用于复制和在异常的时候重新调度节点的 K8S 组件,后面 K8S 又引入了 ReplicaSet 资源来替代 ReplicationController
|
6月前
|
Kubernetes 监控 安全
【K8S系列】深入解析DaemonSet
【K8S系列】深入解析DaemonSet
312 0
|
10月前
|
存储 Kubernetes 监控
【探索 Kubernetes|作业管理篇 系列 15】DaemonSet 的”过人之处“
【探索 Kubernetes|作业管理篇 系列 15】DaemonSet 的”过人之处“
72 0
|
10月前
|
Prometheus Kubernetes Cloud Native
【Kubernetes】 DaemonSet 详解(三)
【Kubernetes】 DaemonSet 详解
408 0
|
10月前
|
存储 Kubernetes 监控
【Kubernetes】 DaemonSet 详解(二)
【Kubernetes】 DaemonSet 详解
140 0
|
10月前
|
存储 Kubernetes 网络协议
【Kubernetes】 DaemonSet 详解(一)
【Kubernetes】 DaemonSet 详解
139 0
|
存储 Kubernetes 监控
Kubernetes DaemonSet使用详解
Kubernetes DaemonSet使用详解
Kubernetes DaemonSet使用详解
|
存储 Prometheus Kubernetes
【云原生 | 从零开始学Kubernetes】二十四、kubernetes控制器Daemonset
DaemonSet 控制器能够确保 k8s 集群所有的节点都运行一个相同的 pod 副本,当向 k8s 集群中增加 node 节点时,这个 node 节点也会自动创建一个 pod 副本,当 node 节点从集群移除,这些 pod 也会自动删除;删除 Daemonset 也会删除它们创建的 pod。
171 0
|
消息中间件 数据采集 Kubernetes
iLogtail社区版使用入门 - 使用DaemonSet模式采集K8s容器日志
本文介绍K8s的日志架构,并通过利用K8s提供的基础能力完成数据驱动应用架构的第一步,使用iLogtail将日志统一采集写入Kafka。 iLogtail已经完整开源,期望同众多开发者一起将iLogtail打造成世界一流的可观测数据采集器。
930 0

推荐镜像

更多