当前位置: 首页 > news >正文

7、K8S-daemonset控制器

K8S-daemonset控制器

文章目录

  • K8S-daemonset控制器
    • 一、 DaemonSet 概述
      • DaemonSet 工作原理
      • Daemonset 典型的应用场景
      • DaemonSet 与 Deployment 的区别
    • 二、DaemonSet 资源清单文件编写技巧
      • 清单模版
    • 三、DaemonSet 使用案例

一、 DaemonSet 概述

DaemonSet 控制器能够确保 k8s 集群所有的节点都运行一个相同的 pod 副本,当向 k8s 集群中增加 node 节点时,这个 node 节点也会自动创建一个 pod 副本,当 node 节点从 集群移除,这些 pod 也会自动删除;删除 Daemonset 也会删除它们创建的 pod

DaemonSet 工作原理

daemonset 的控制器会监听 kuberntes 的 daemonset 对象、pod 对象、node 对象,这些被监听的对象之变动,就会触发 syncLoop 循环让 kubernetes 集群朝着 daemonset 对象描述的状态进行演进。

Daemonset 典型的应用场景

在集群的每个节点上运行存储,比如:glusterd 或 ceph。 在每个节点上运行日志收集组件,比如:flunentd 、 logstash、filebeat 等。 在每个节点上运行监控组件,比如:Prometheus、 Node Exporter 、collectd 等。

DaemonSet 与 Deployment 的区别

Deployment 部署的副本 Pod 会分布在各个 Node 上,每个 Node 都可能运行好几个副本。

DaemonSet 的不同之处在于:每个 Node 上最多只能运行一个副本。

二、DaemonSet 资源清单文件编写技巧

[root@k8s-master01 ~]# kubectl explain ds
字段作用
apiVersion当前资源使用的 api 版本,跟 VERSION: apps/v1 保持 一致
kind资源类型,跟 KIND: DaemonSet 保持一致
metadata元数据,定义 DaemonSet 名字的
spec定义容器的
status状态信息,不能改
[root@k8s-master01 ~]# kubectl explain ds.spec
字段作用
minReadySeconds当新的 pod 启动几秒种后,再 kill 掉旧的 pod。
revisionHistoryLimit历史版本
selector -required-用于匹配 pod 的标签选择器
template -required-定义 Pod 的模板,基于这个模板定义的所有 pod 是一样的
updateStrategydaemonset 的升级策略
[root@k8s-master01 ~]# kubectl explain ds.spec.template
字段作用
containers容器配置列表。每个元素都描述了一个要运行在Pod内的容器。
initContainers化容器配置列表。这些容器在主容器之前运行,用于设置环境或执行预备工作。
ephemeralContainers临时容器配置列表。这些容器是临时的,仅在Pod运行时存在。
restartPolicyPod的重启策略。可以是Always、OnFailure或Never。
terminationGracePeriodSeconds优雅终止周期,以秒为单位。在强制终止Pod前,系统将等待此周期内的终止。
activeDeadlineSecondsPod活动的截止时间,超过此时间系统将杀死Pod。
dnsPolicyPod的DNS策略,可以是ClusterFirst、ClusterFirstWithHostNet、Default或None。
ContextPod的安全上下文,用于设置Pod的安全相关属性,如RBAC规则、SELinux标签等。
schedulerName调度器名称,用于指定用于调度Pod的特定调度器。
tolerationsPod容忍的污点,用于允许Pod调度到有特定污点的节点上。
affinityPod的亲和性设置,用于指定Pod偏好或必须运行的节点属性。
hostNetwork如果设置为true,P将使用主机的网络命名空间。
imagePullSecrets用于获取镜像的密钥,这些密钥会被注入到Pod中。
configMapConfigMap的名称和键值对列表,用于注入配置数据到Pod
secretSecret的名称和键值对列表,用于注入敏感数据到Pod。
volumeMounts卷挂载配置列表,用于指定Pod中容器如何挂载卷。
volumes卷配置列表,为Pod中的容器存储卷。

清单模版

apiVersion:apps/v1kind:DaemonSetmetadata:#元数据,定义 DaemonSet 名字的name:pod-controller# ds名称labels:# 给ds打标签controller:daemonset#控制器spec:revisionHistoryLimit:3# 保留历史版本数量,默认为10updateStrategy:# Pod更新策略,默认是RollingUpdatetype:RollingUpdate# 滚动更新策略。另一种是OnDelete,其没有子属性配置参数rollingUpdate:# 当type为RollingUpdate的时候生效,为其配置参数maxSurge:25%# 升级过程中可以超过期望的Pod的最大数量,可以为百分比,也可以为整数。默认是25%maxUnavailable:25%# 升级过程中最大不可用状态的Pod数量,可以为百分比,也可以为整数。默认是25%selector:# 选择器,通过该控制器管理哪些podmatchLabels:# Labels匹配规则。和matchExpressions类似app:nginx-pod###或者matchExpressions:# Expressions匹配规则。和matchLabels类似-{key:app,operator:'In',values:["nginx-pod"]}template:# pod副本创建模板。属性和Pod的属性一样metadata:labels:app:nginx-podspec:containers:-name:nginximage:nginx:latestports:-name:nginx-portcontainerPort:80protocol:TCP

三、DaemonSet 使用案例

[root@k8s-master01 ~]# cat pod-controller.yamlapiVersion: apps/v1 kind: DaemonSet metadata: name: pod-controller labels: controller: daemonset spec: selector: matchLabels: app: nginx-pod template: metadata: labels: app: nginx-pod spec: containers: - name: nginx image: nginx:latest ports: - name: nginx-port containerPort:80protocol: TCP##查看[root@k8s-master01 ~]# kubectl apply -f pod-controller.yamldaemonset.apps/pod-controller created
protocol: TCP

##查看
[root@k8s-master01 ~]# kubectl apply -f pod-controller.yaml
daemonset.apps/pod-controller created

http://www.jsqmd.com/news/794181/

相关文章:

  • 保持画布比例的艺术:使用ResizeObserver实现自适应布局
  • 自动化测试系统部署:挑战与最佳实践
  • 边缘计算中的3D占据映射技术与Gleanmer SoC优化
  • 实战指南:在QGIS Python控制台里直接装scikit-image,为遥感图像分析加装利器
  • 告别JNLP错误:新版Java环境下安全访问IPMI控制台的终极配置指南
  • docx文档的本质
  • 40nm芯片设计实战:搞定SRAM宏模块的电源布线,避开M4层这个“禁区”
  • 为什么92%的AIAgent在高并发下静默失败?SITS2026容错模型的4层防御体系,立即落地
  • 嵌入式实时系统开发的25个致命错误与优化实践
  • 2026年福建艺考生必知的艺考文化课培训选择要点
  • 保姆级教程:手把手教你用STM32CubeMX+MDK5搞定STM32F429第一个工程
  • 指标漂移、用户冷启动、LLM幻觉干扰——大模型A/B测试三大盲区全解析,SITS大会实证数据支撑
  • ARM TRCCCCTLR寄存器详解与性能分析实践
  • 告别网盘限速:3分钟学会用开源工具解锁高速下载新体验
  • 从REST到RAG-native:AI原生API的4层抽象演进(奇点大会架构委员会首次公开技术栈树)
  • 论医院HIS收费诊间支付的优劣
  • PCIe接口与EDSFF存储形态的协同优化实践
  • 盒子模型这么有趣,确定不来看看吗?
  • cdev 对象是个啥? (附代码说明)
  • kali更新后出现(genmon)XXX的问题与解决/解决kali更新后的(genmon)XXX问题
  • 为什么92%参会者在P3东区绕行超4分钟?2026大会停车动线算法白皮书首度披露
  • C2|Q⟩框架:量子计算开发范式革新与实践
  • 边缘计算赋能农业积水检测:技术实现与优化策略
  • 【SITS大会议题申报稀缺资源包】:含评审委员匿名反馈原文+3份高分议题PPT结构图(限前200名领取)
  • 联邦学习中的能量感知剪枝技术优化
  • 好用的本地部署机构
  • Arm CoreSight调试架构与寄存器安全机制详解
  • AI写论文利器在此!4款AI论文生成工具,助力你快速产出优质论文!
  • Web逻辑漏洞详解密码重置四类高危缺陷汇总
  • 机器学习之评估与偏差方差分析