DaemontSet
DaemontSet
DaemonSet
1.用于在集群中的每个node上运行一个Pod实例
2.在daemonset的生命周期内,当有node加入/移除集群时,会自动为node添加/回收Pod
3.删除daemonSet将会删除它创建的所有Pod
提示
kube-proxy就是以daemonset的形式运行在每个节点上的
daemonset不支持用kubectl create daemonset的方式创建。可以创建deployment后再更改
daemonset的应用、使用场景
* 在每个Node上都运行一个存储进程,例如Ceph
* 在每个Node上都运行一个日志采集进程,例如Logstach
* 在每个Node上都运行一个性能监控进程,采集该Node的运行性能数据,例如Prometheus Node Exporter
* 可以将pod上的相同服务提取成为一个daemonset,在不同容器中运行
daemonset的调度策略
1.DaemonSet 使用系统内置的算法在每个Node上进行调度(默认方式)
2.也可以在Pod的定义中使用NodeSelector或NodeAffinity来指定满足条件的Node范围进行调度
daemonset的更新策略
RollingUpdate和OnDelete
* RollingUpdate:即更新一个DaemonSet模板的时候,旧的Pod副本会被自动删除,同时新的Pod副本会被自动创建。
* OnDelete:即只有手工删除了DaemonSet创建的Pod副本,新的Pod副本才会被创建出来。
* 如果不设置updateStrategy的值,默认为RollingUpdate。
创建daemonset
vim daemon.yaml
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
name: daemonset
labels:
app: daemonset
spec:
updateStrategy: #进行滚动升级
type: RollingUpdate
selector:
matchLabels:
name: daemonset
template:
metadata:
labels:
name: daemonset
spec:
containers:
- name: nginx
image: nginx
daemonset的更新策略
1.OnDelete: 当使用OnDelete作为升级策略时, 在创建好新的DaemonSet配置之后, 新的Pod并不会被自动创建, 直到用户手动删除旧版本的Pod,才触发新建操作。
2.RollingUpdate:默认升级策略。当使用RollingUpdate作为升级策略对DaemonSet进行更新时, 旧版本的Pod将被自动杀掉, 然后自动创建新版本的DaemonSet Pod。更新期间,最多只能有 DaemonSet 的一个 Pod 运行于每个节点上
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)