登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
每日签到
每天签到奖励2圆-6圆
发帖说明
VIP申请
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
VIP申请
VIP网盘
网盘
联系我们
每日签到
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
K8s新手系列之DaemonSet资源
K8s新手系列之DaemonSet资源
[ 复制链接 ]
静轾
2025-6-3 00:18:56
概述
官网文档:https://kubernetes.io/zh-cn/docs/concepts/workloads/controllers/daemonset/
DaemonSet简称ds
DaemonSet
在不考虑污点的情况下会确保全部(或者某些)节点上运行一个 Pod 的副本
。 当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。
使用场景:
在每个节点上运行集群守护进程
比如:kube-proxy
在每个节点上运行日志收集守护进程
比如:filebeat
在每个节点上运行监控守护进程
比如:zabbix-agent2
资源清单文件详解
apiVersion: apps/v1 # API 版本,当前稳定版本为 apps/v1
kind: DaemonSet # 资源类型为 DaemonSet
metadata:
name: example-daemonset # DaemonSet 名称,需在命名空间内唯一
namespace: default # 所属命名空间,默认值为 default
labels: # 标签,用于关联 Pod/Selector 等
app: monitoring
spec:
selector: # 标签选择器,用于匹配受控的 Pod
matchLabels:
app: monitoring
template: # Pod 模板,定义 Pod 的具体配置
metadata:
labels:
app: monitoring # 需与 selector.matchLabels 一致
spec:
containers:
- name: agent # 容器名称
image: agent:v1 # 镜像地址
resources: # 资源限制(可选)
requests:
cpu: 100m
memory: 100Mi
limits:
cpu: 200m
memory: 200Mi
nodeSelector: # 节点选择器(可选),指定 Pod 调度到符合条件的节点
disk: ssd
tolerations: # 污点容忍(可选),允许 Pod 调度到带有特定污点的节点
- key: "node-role.kubernetes.io/master"
operator: "Exists"
effect: "NoSchedule"
updateStrategy: # 更新策略(可选,默认 RollingUpdate)
type: RollingUpdate
rollingUpdate:
maxUnavailable: 1 # 滚动更新时允许的最大不可用 Pod 数
minReadySeconds: 30 # 等待 Pod 就绪的最短时间(可选)
复制代码
DaemonSet实战
# 定义资源清单文件
[root@master01 ~/daemonset]# cat daemonset-nginx.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-daemonset
namespace: default
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
hostPort: 30280
# 创建daemonset资源
[root@master01 ~/daemonset]# kubectl apply -f daemonset-nginx.yaml
daemonset.apps/nginx-daemonset created
复制代码
查看daemonset资源
# 查看daemonset资源
[root@master01 ~/daemonset]# kubectl get ds
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
nginx-daemonset 2 2 0 2 0 <none> 5s
# 查看pod,发现调度到node01和node02节点上
[root@master01 ~/daemonset]# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-daemonset-bwgdw 1/1 Running 0 115s 100.95.185.254 node02 <none> <none>
nginx-daemonset-dtpw2 1/1 Running 0 115s 100.117.144.153 node01 <none> <none>
复制代码
为什么master节点上没有调度?
因为master节点上默认存在一个污点,而上面的案例中没有配置污点容忍,所以没有调度过去
# 查看污点
[root@master01 ~/daemonset]# kubectl describe node master01 | grep -i taint
Taints: node-role.kubernetes.io/control-plane:NoSchedule
复制代码
如果需要调度到master节点,需要做污点容忍。
关于污点和污点容忍学习可以阅读这篇文章:K8s中的污点和容忍
示例:
[root@master01 ~/daemonset]# cat daemonset-nginx.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: nginx-daemonset
namespace: default
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
# 污点容忍
tolerations:
- key: "node-role.kubernetes.io/control-plane"
operator: "Exists"
effect: "NoSchedule"
containers:
- name: nginx
image: nginx:1.25.3
ports:
- containerPort: 80
hostPort: 30280
# 创建daemonset资源
[root@master01 ~/daemonset]# kubectl apply -f daemonset-nginx.yaml
daemonset.apps/nginx-daemonset configured
复制代码
查看一下
[root@master01 ~/daemonset]# kubectl get ds
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
nginx-daemonset 3 3 2 1 2 <none> 9m58s
# 查看pod,发现master节点也已经调度上了
[root@master01 ~/daemonset]# kubectl get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
nginx-daemonset-2pzdk 1/1 Running 0 102s 100.85.170.132 master01 <none> <none>
nginx-daemonset-dtpw2 1/1 Running 0 11m 100.117.144.153 node01 <none> <none>
nginx-daemonset-fr4dr 0/1 ContainerCreating 0 88s <none> node02 <none> <none>
复制代码
daemonset资源的管理
查看DaemonSet
语法:
kubectl get daemonset <daemonset-name>
复制代码
删除DaemonSet
kubectl delete daemonset <daemonset-name>
复制代码
更新DaemonSet
Damonset资源的更新、回滚策略和Deployment是一样的,可以参考这篇文章:K8s进阶之Deployment的更新&回滚
1、使用kubectl edit命令更新
2、使用对应的资源清单文件进行更新
3、快速更新镜像:
# 语法
kubectl set image daemonset <daemonset资源> <pod-名称>=<镜像>:<镜像tag>
# 示例
kubectl set image daemonset/example-daemonset agent=agent:v2
复制代码
4、快速回滚到上一个版本:
kubectl rollout undo daemonset/example-daemonset
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
K8s
新手
系列
DaemonSet
资源
相关帖子
k8s 新版创建完 serviceaccount 后-- 不再生成 对应的--token
C++新手必学:用libcurl轻松实现文件下载,10分钟上手!
Senparc.AI 系列教程(二):配置大模型,开始开发应用
鸿蒙新手福音!每日300分钟免费时长+海量鸿蒙真机,轻松上手云测云调
高通手机跑AI系列之——人像与背景分割
我一个写Java的,怎么就开始玩K8s和Jenkins了?!
k9s监控k8s集群工具
C#零基础入门系列(八)——数组
解密prompt系列60. Agent实战:从0搭建Jupter数据分析智能体
H5游戏性能优化系列-----协议相关优化
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
k8s 新版创建完 serviceaccount 后-- 不再生成 对应的--token
0
389
锟及
2025-08-12
业界
C++新手必学:用libcurl轻松实现文件下载,10分钟上手!
0
870
谯梨夏
2025-08-20
业界
Senparc.AI 系列教程(二):配置大模型,开始开发应用
0
1011
田雅宁
2025-08-21
安全
鸿蒙新手福音!每日300分钟免费时长+海量鸿蒙真机,轻松上手云测云调
0
1064
戎玉珂
2025-08-22
安全
高通手机跑AI系列之——人像与背景分割
0
250
明思义
2025-08-28
业界
我一个写Java的,怎么就开始玩K8s和Jenkins了?!
0
585
役魅肋
2025-09-04
业界
k9s监控k8s集群工具
0
567
庞悦
2025-09-04
安全
C#零基础入门系列(八)——数组
0
89
祝安芙
2025-09-05
业界
解密prompt系列60. Agent实战:从0搭建Jupter数据分析智能体
0
371
赊朗爆
2025-09-08
科技
H5游戏性能优化系列-----协议相关优化
0
69
椎蕊
2025-09-12
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
代码
签约作者
程序园优秀签约作者
发帖
静轾
2025-6-3 00:18:56
关注
0
粉丝关注
13
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
杭环
9988
凶契帽
9988
4
氛疵
9988
5
黎瑞芝
9988
6
猷咎
9986
7
里豳朝
9986
8
肿圬后
9986
9
蝓俟佐
9984
10
虽裘侪
9984
查看更多