kubernetes工作负载-DamonSet
一、DemonSet的介绍
1、什么是DemonSet
DaemonSet 控制器是用来保证在所有节点上运行一个 Pod 的副本当有节点加入集群时, 也会为他们新增一个 Pod。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。
简而言之:
pod不会因为node的故障的转移而转移,pod固定在指定的node的work节点中
DemonSet跟Deployment的不同是,Deployment是可以在不同的node进行故障漂移
2、DemonSet的典型用法
- 在每个节点上运行集群存储守护进程,如:Gluster、Ceph在每个节点上运行日志收集守护进程,如:fluentd、FilebeatLogstash
- 在每个节点上运行监控守护进程,如: Prometheus NodeExporter
- 在每个节点上运行网络插件为Pod提供网络服务,如: flannel、calico
3、DemonSet的编写
DaemonSet 是标准的API资源类型,它在spec字段中嵌套字段有selector、tempalte,与Deployment用法基本相同,但DaemonSet 不管理 Replicas,因为 DaemonSet不是基于期望的副本数,而是基于节点数量来控制Pod数量
4、DemonSet的使用示例
apiVersion: apps/v1
kind: DaemonSet
metadata:name: nginx-dsnamespace: default
spec:selector:matchLabels:app: nginx-dstemplate:metadata:labels:app: nginx-dsspec:containers:- name: nginx-dsimage: nginx:1.16ports:- name: httpcontainerPort: 80 livenessProbe:tcpSocket:port: 80initialDelaySeconds: 5livenessProbe: # 就绪 监听80端口,如果80不存在则重启httpGet:path: '/'port: 80scheme: HTTPinitialDelaySeconds: 5
查看和删除,daemonset还会在现在的node创建pod

5、Daemonset采用节点标签进行部署
- 实验一:
给DamonSet只做节点标签,node打了标签的才会创建pod
apiVersion: apps/v1
kind: DaemonSet
metadata:name: nginx-dsnamespace: default
spec:selector:matchLabels:app: nginx-dstemplate:metadata:labels:app: nginx-dsspec:nodeSelector: #节点标签选择器type: ssd #节点标签,在node上打的标签containers:- name: nginx-dsimage: nginx:1.16ports:- name: httpcontainerPort: 80 livenessProbe:tcpSocket:port: 80initialDelaySeconds: 5livenessProbe: # 就绪 监听80端口,如果80不存在则重启httpGet:path: '/'port: 80scheme: HTTPinitialDelaySeconds: 5

- 从查看结果看,并没有进行创建,因为没有node服务标签选择器的要求
- 查看节点标签
kubectl get node --show-labels

- 给节点打标签
kubectl label nodes node1 type=ssd
- 查看标签
kubectl get node --show-labels | grep node1kubectl describe node node1 ##查看labels字段kubectl describe node node1 | grep -A 5 Labelskubectl label nodes node1 node2 type=ssd ## 连续给两个节点进行打标签



- 查看pod创建结果
kubectl get pod -o wide ## 查看pod创建在node节点中,符合场景要求
kubectl get daemonset -o wide

- 删除label标签
方法一:
kubectl label nodes node1 type-
6、DaemonSet示例二 DaemonSet部署node_exporter
1.为每个节点都运行一份 Node_exporter,采集当前节点的信息:
apiVersion: apps/v1
kind: DaemonSet
metadata:name: node-exportsnamespace: default
spec:selector:matchLabels:app: node-exportertemplate:metadata:labels:app: node-exporterspec:hostNetwork: true ##共享主机网络hostPID: true ##获取主机的PIDcontainers:- name: prometheus-node-exporterimage: prom/node-exporter:v0.18.0ports:- name: node-ex-httpcontainerPort: 9100hostPort: 9100##存活探测和就绪探测livenessProbe:tcpSocket:port: node-ex-http ##存活探测,探测port的name其实就是探测端口9100initialDelaySeconds: 5 ##存活探测时间为5秒readinessProbe:httpGet:path: '/metrics' ## 就绪探针,这是一个固定的接口port: node-ex-http ## 就绪探针探测port的name其实就是探测端口9100initialDelaySeconds: 5 ## 就绪探针时间为5秒
- 查看相关信息
kubectl get daemonsets ##查看daemonset创建的响应信息
kubectl describe daemonsets.apps node-exports ## 查看daemonset详情信息
kubectl get pod -o wide
- 测试
curl -s 192.168.1.201:9100/metrics | grep load15 ## 15分钟的负载信息
也可以使用浏览器进行访问,访问默认的9100端口
7、DaemonSet的更新策略
DaemonSet也支持更新策略,它支持 OnDeLete 和 RollingUpdate两种
- 0nDeLete: 是在相应节点的Pod资源被删除后重建为新版本,从而允许用户手动编排更新过程。
- RollingUpdate: 滚动更新,工作逻辑和Deployment滚动更新类似;
1、DaemonSet的更新策略——RollingUpdate
apiVersion: apps/v1
kind: DaemonSet
metadata:name: node-exportsnamespace: default
spec:minReadySeconds: 10 ## 更新时间,默认是0秒revisionHistoryLimit: 20 ## 回滚次数updateStrategy: ## 更新策略rollingUpdate:type: RollingUpdate ##更新策略为RollingUpdaterollingUpdate: ## RollingUpdate的策略maxUnavailable: 1 ## 一次更新的pod数量selector:matchLabels:app: node-exportertemplate:metadata:labels:app: node-exporterspec:hostNetwork: true ##共享主机网络hostPID: true ##获取主机的PIDcontainers:- name: prometheus-node-exporterimage: prom/node-exporter:v0.18.1ports:- name: node-ex-httpcontainerPort: 9100hostPort: 9100##存活探测和就绪探测livenessProbe:tcpSocket:port: node-ex-http ##存活探测,探测port的name其实就是探测端口9100initialDelaySeconds: 5 ##存活探测时间为5秒readinessProbe:httpGet:path: '/metrics' ## 就绪探针,这是一个固定的接口port: node-ex-http ## 就绪探针探测port的name其实就是探测端口9100initialDelaySeconds: 5 ## 就绪探针时间为5秒


安装默认的 RollingUpdate 策略,node-exports-ds 资源将采用一次更新一个Pod对象,待新建Pod的对象就绪后,在更新下一个Pod对象,直到全部完成。
2、DaemonSet的更新策略——OnDelete
-
1、将此前创建的node-expoter中的pod模板镜像更新为 prom/node-exporter:v1.3.1,由于升级版本跨度过大,无法确保升级过程中的稳定性,我们就不得不使用 0nDeLete 策略来替换默认的RollingUpdate 策略
-
2.由于 0nDelete 并非自动完成升级,它需要管理员手动删除Pod,然后重新拉起新的Pod,才能完成更新。 (对于升级有着先后顺序的软件
这种方法就非常的有用;) -
OnDelete的使用类型
kubectl explain daemonset.spec.updateStrategy.type

apiVersion: apps/v1
kind: DaemonSet
metadata:name: node-exportsnamespace: default
spec:minReadySeconds: 10 ## 更新时间,默认是0秒revisionHistoryLimit: 20 ## 回滚次数updateStrategy: ## 更新策略rollingUpdate:type: OnDelete ##更新策略为OnDeletselector:matchLabels:app: node-exportertemplate:metadata:labels:app: node-exporterspec:hostNetwork: true ##共享主机网络hostPID: true ##获取主机的PIDcontainers:- name: prometheus-node-exporterimage: prom/node-exporter:v1.3.1ports:- name: node-ex-httpcontainerPort: 9100hostPort: 9100##存活探测和就绪探测livenessProbe:tcpSocket:port: node-ex-http ##存活探测,探测port的name其实就是探测端口9100initialDelaySeconds: 5 ##存活探测时间为5秒readinessProbe:httpGet:path: '/metrics' ## 就绪探针,这是一个固定的接口port: node-ex-http ## 就绪探针探测port的name其实就是探测端口9100initialDelaySeconds: 5 ## 就绪探针时间为5秒
- 发现应用yaml文件后,image并没有发生变化

- 通过删除pod 重新创建,会重新自动建立新的镜像的pod

- 相关命令
kubectl get pod -l app=node-exporter ## 根据标签进行相关pod的查看
kubectl get pod <pod-ID> -o yaml | grep image ## 查看pod的镜像
kubectl delete daemonset -l app=node-exporter ##根据标签进行pod删除相关文章:
kubernetes工作负载-DamonSet
一、DemonSet的介绍 1、什么是DemonSet DaemonSet 控制器是用来保证在所有节点上运行一个 Pod 的副本当有节点加入集群时, 也会为他们新增一个 Pod。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。 简而言之…...
zabbix其他配置
自动发现 zabbix server 主动的去发现所有的客户端,然后将客户端的信息登记在服务端上。 缺点是如果定义的网段中的主机数量多,zabbix server 登记耗时较久,且压力会较大。 systemctl disable --now firewalld setenforce 0 hostnamectl se…...
蓝桥杯备战 每日一题 (2)
今天的题目是回忆迷宫 这个题目我们来熟悉一下 弗洛伊德算法 的代码模板 弗洛伊德算法用来处理最短路径问题 弗洛伊德算法(Floyd’s algorithm)用于解决图中所有节点对之间的最短路径问题。算法的基本思路是通过逐步迭代更新节点对之间的最短路径长度&a…...
GetShell的姿势
0x00 什么是WebShell 渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权…...
workflow源码解析:ThreadTask
1、使用程序,一个简单的加法运算程序 #include <iostream> #include <workflow/WFTaskFactory.h> #include <errno.h>// 直接定义thread_task三要素 // 一个典型的后端程序由三个部分组成,并且完全独立开发。即:程序协议算…...
为何谷歌强制要求安装ssl证书?
在当今数字化的世界中,网络安全已成为至关重要的议题之一。作为全球最大的搜索引擎之一,谷歌一直在推动网络安全标准的提升。其强制要求网站安装SSL证书的决策引起了广泛关注。本文将深入探讨谷歌为何强制要求安装SSL证书,以及这一举措对互联…...
【刷题】 leetcode 2 .两数相加
两数相加 两数相加1 思路一 (暴毙版)2 思路二 (本质出发) 谢谢阅读Thanks♪(・ω・)ノ下一篇文章见!!!!!! 两数相加 我们来看…...
Webpack5入门到原理2:基本使用
Webpack 是一个静态资源打包工具。 它会以一个或多个文件作为打包的入口,将我们整个项目所有文件编译组合成一个或多个文件输出出去。 输出的文件就是编译好的文件,就可以在浏览器段运行了。 我们将 Webpack 输出的文件叫做 bundle。 功能介绍 Webp…...
企业微信上传临时素材errcode:44001,errmsg:empty media data
企业微信,上传临时素材,报错: {“errcode”:44001,“errmsg”:“empty media data [logid:]”}, 开发语言C# 重点代码: formData.Headers.ContentType new MediaTypeHeaderValue(“application/octet-stream”); 解…...
Docker技巧汇总
Docker技巧汇总 前言使用流程安装配置镜像管理创建并运行容器使用容器/常用命令导出和导入查看元数据挂载数据卷端口映射/转发VS Code连接Docker 前言 Docker 是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中…...
学习使用微信小程序实现智能名片电子名片功能代码
学习使用微信小程序实现智能名片电子名片功能代码 拨打手机号功能一键复制信息功能定位导航功能存入手机通讯录功能转发分享功能 拨打手机号功能 wx.makePhoneCall({phoneNumber: qipa250 //仅为示例,并非真实的电话号码 })一键复制信息功能 wx.getClipboardData(…...
学习响应式编程中遇到的奇奇怪怪的问题
spring项目无法启动 Description: Web application could not be started as there was no org.springframework.boot.web.reactive.server.ReactiveWebServerFactory bean defined in the context. Action: Check your application’s dependencies for a supported react…...
前端常用js、css效果
前端常用js效果 效果参考代码文本横向滚动文本无限滚动无缝轮播无缝滚动盒子上下移动樱花飘落 效果 主要整理了几个常用的,方便平时做项目的时候参考 文本横向滚动 文本无限滚动 无缝轮播 无缝滚动 盒子上下滚动 樱花飘落效果 参考代码 文本横向滚动 <!DOCTYP…...
Modern C++ 条件变量
今天无意中看到一篇帖子,关于条件变量的,不过仔细看看发现它并达不到原本的目的。 程序如下,读者可以先想想他的本意,以及有没有问题: #include <iostream> #include <thread> #include <condition_v…...
免费chartGPT网站汇总--
https://s.suolj.com - (支持文心、科大讯飞、智谱等国内大语言模型,Midjourney绘画、语音对讲、聊天插件)国内可以直连,响应速度很快 很稳定 https://seboai.github.io - 国内可以直连,响应速度很快 很稳定 http://gp…...
关于C#中的async/await的理解
1. 使用async标记的方法被认为是一个异步方法,如果不使用await关键字,调用跟普通方法没有区别 static async Task Main(string[] args){Console.WriteLine("主线程id:" Thread.CurrentThread.ManagedThreadId);TestAwait();Consol…...
docker硬件交互 _ROS2
docker硬件交互 _ROS2 将自己需要挂载的设备接到主板上,在宿主机中建立udev规则(/etc/udev/rules.d/)然后在开启容器时,将设置了规则的devices 通过 --device/dev/myserial --device/dev/rplidar 等 参数挂载到docker容器中 doc…...
JS的数据类型和运算符
typeof()方法:检测数据类型 JS中的基本数据类型 基本数据类型 1.number 数字 2.string 字符串 3.boolean 布尔 4.null 代表空值(typeof方法检测出来的数据类型是object类型) 5.underfined 未定义;变量已声明但是未赋值 6.…...
CSS实现平行四边形
1、为什么实现平行四边形 在日常开发过程中,有些时候我们可以会遇到一种情况,如可视化大屏中要求我们横线实现对应的进度条,但进度条的内容是由无数个平行四边形组装类似于进度条的形式,那么我们就需要使用CSS来进行对应的实现。 …...
第11章 GUI Page500~504 步骤三十二:打开画板文件02
各个图元类新增GetTypeName_Static(),并将原来的GetTypeName()改为调用静态方法实现: 直线: 圆: 十字: 矩形: 文字: tool_4_save_load.hpp添加两行 tool_4_save_load.cpp增加: 增加…...
千问3.5-2B在物流场景:运单图片自动识别+收发件信息结构化
千问3.5-2B在物流场景:运单图片自动识别收发件信息结构化 1. 物流行业的痛点与机遇 每天,物流企业需要处理数以百万计的运单信息录入工作。传统的人工录入方式存在三个明显问题: 效率低下:一个熟练的录入员每小时最多处理50-80…...
猫抓插件深度解析:浏览器资源嗅探的终极实战指南
猫抓插件深度解析:浏览器资源嗅探的终极实战指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 猫抓插件是一款功能强大的开源浏览器扩…...
3个秘诀让城通网盘下载提速10倍:ctfileGet工具全解析
3个秘诀让城通网盘下载提速10倍:ctfileGet工具全解析 【免费下载链接】ctfileGet 获取城通网盘一次性直连地址 项目地址: https://gitcode.com/gh_mirrors/ct/ctfileGet ctfileGet是一款专注于获取城通网盘直连地址的开源工具,通过本地解析技术帮…...
OpenTelemetry Profiles 信号进入 Alpha 阶段:Elastic 对性能分析的持续承诺
作者:来自 Elastic Christos Kalkanis,Florian Lehner 及 Roger Coll OpenTelemetry Profiles 已正式达到 Alpha 阶段,将性能分析确立为第四种可观测性信号。Elastic 的核心贡献包括其 eBPF 性能分析代理、持续的 OpenTelemetry Profiles 信号…...
Qwen-Image-2512图片生成服务:支持多种宽高比,满足不同场景需求
Qwen-Image-2512图片生成服务:支持多种宽高比,满足不同场景需求 1. 引言:为什么宽高比如此重要? 在数字内容创作领域,图片的宽高比往往决定了它的最终用途。一张构图精美的图片,如果比例与展示平台不匹配…...
超滤膜行业领先公司
《2026年超滤膜权威排名:深圳市洛哈斯水处理技术有限公司何以凭借AI智控技术领跑行业?》在2026年的深度测评中,深圳市洛哈斯水处理技术有限公司凭借其行业领先的“AIoT智能膜系统”与卓越的长期运行稳定性,综合表现排名第一&#…...
何时DCDC预降压+LDO二次线性稳压?
LDO 核心选型分界结论及优化要点核心选型分界结论以LDO输入输出压差ΔV为核心判断指标,结合输出功率、场景约束,通用选型规则如下:通用强制分界点:当ΔV≥2V,且输出功率≥100mW(对应你之前的5V转3V70mA工况…...
嵌入式 - shell 常用语法简单总结
初步使用#!bin/bashecho "Hello world!"echo# shellvim helloworld.shchmod ux helloworld.sh# 在当前bash运行. helloworld.shsource helloworld.sh# 在子bash中运行,无法修改当前shell的变量./helloworld.shLinux中工具链的配置 ~/.bashrc用于定义当前…...
Ubuntu 虚拟机 Python3 + pip 完整安装教程
文章目录一、先检查系统是否自带 Python3二、安装 Python3 和 pip(必装)1. 更新软件源2. 安装 python3 和 pip3. 验证安装成功三、最简单的使用方法1. 运行 Python2. 用 pip 安装第三方库(如 requests、numpy)3. 运行 .py 文件四、…...
中国信通院启动公文写作智能体评估,推动技术落地与规范发展
【导语:中国信通院在前期《智能体技术要求与评估方法》研制基础上,开展公文写作智能体技术规范编制,并联合多家单位共同参与。现正式启动首批评估工作,成果计划于2026年6月发布,将推动该技术落地与规范发展。】联合编制…...
