【kubernetes】控制器DaemonSet入门及应用

news/2024/10/11 9:54:54/文章来源:https://blog.csdn.net/meidongyan/article/details/141953410

一,概述

DaemonSet(简写 ds)控制器能够确保k8s集群的所有Node节点,都运行一个相同的Pod副本。
当Node节点增加时,该节点也会自动创建一个Pod副本。
当Node节点减少时,该节点也会自动删除这个Pod副本。
当删除DaemonSet时,所有节点上的Pod副本,也会自动删除。

二,原理

DaemonSet控制器会监听K8S中的DaemonSet对象,pod对象,node对象,这些监听对象的变化,会触发syncLoop循环,让K8S集群朝着DaemonSet对象描述的状态演进。

三,场景

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

四,DaemonSet 与 Deployment的区别

Deployment部署副本Pod,可以随机的分布在每个node节点上,部署可多可少,也可为零。
DaemonSet部署副本Pod,每个node节点最多只能运行一个Pod副本。

五,资源清单 常用字段

# kubectl explain dsapiVersion	<string>   #当前资源使用的api版本,跟VERSION: apps/v1保持一致
kind	    <string>   #资源类型,跟KIND: DaemonSet保持一致
metadata	<Object>   #元数据,定义DaemonSet名字的
spec	    <Object>   #定义容器的
status	    <Object>   #状态信息,不能改
# kubectl explain ds.specminReadySeconds	        <integer>   #当新的pod启动几秒种后,再kill掉旧的pod。
revisionHistoryLimit	<integer>   #历史版本
selector	<Object> -required-     #用于匹配pod的标签选择器
template	<Object> -required-     #定义Pod的模板,基于这个模板定义的所有pod是一样的
updateStrategy	         <Object>   #daemonset的升级策略
# kubectl explain ds.spec.templatemetadata	<Object>
spec        <Object>

六,案例:部署日志收集组件fluentd

所有node节点,包括master节点,都导入镜像进行安装:fluentd_2_5_1.tar.gz

vim daemonset.yamlapiVersion: apps/v1
kind: DaemonSet    # 指定资源类型
metadata:name: ds-fluedtdnamespace: kubec-systemlabels:app: ds-fluedtd
spec:minReadySeconds: 5    # 最小的准备时间为5srevisionHistoryLimit: 8    # 更新历史版本 限制8个selector:matchLabels:theapp: pod-fluedtdversion: v6template:metadata:labels:theapp: pod-fluedtdversion: v6spec:tolerations:     # 添加容忍- key: node-role.kubernetes.io/control-plane  # 容忍master上的污点effect: NoSchedule                # 容忍影响和master相同containers:- name: pod-nodeimage: xxxxxx/fluentd:v2.5.1   # 配置正确的fluentd镜像文件imagePullPolicy: IfNotPresent  # 本地拉取不成功,会从docker.hub上拉取     resources:    # 配置资源limits:     # 限制最大配置cpu: 500mmemory: 300Mirequests:   # 需求最小配置cpu: 300mmemory: 128MivolumeMounts:- name: vol-fluedtd           # 与volumes的值保持相同mountPath: /path/to/logs/restartPolicy: Alwaysvolumes:                        - name: vol-fluedtd             # 与volumeMounts的name值保持相同nfs:                          # 采用nfs存储path: /data/volumesserver: 192.168.40.180updateStrategy:        # 指定更新策略rollingUpdate:       # 采用滚动更新maxSurge: 2        # 最多增加2个maxUnavailable: 0  # 最少减少0个type: RollingUpdate  # 更新类型为滚动更新,默认值
kubectl get ds -n meidongyanNAME         DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
ds-fluedtd   3         3         3       3            3           <none>          132m

至此,安装成功,每个节点均已经部署一个pod副本!

1,Pod定义容忍 master主机上的污点,从而实现在master部署:

在这里插入图片描述

2,更新策略

  • 2-1
# 命令行更新pod
kubectl set image daemonsets [资源名] [容器名]=ikubernetes/filebeat:5.6.6-alpine -n kube-system# 例如:
kubectl set image daemonsets ds-fluedtd pod-node=ikubernetes/filebeat:5.6.6-alpine -n kube-system
  • 2-2
# kubectl explain ds.spec.updateStrategyrollingUpdate	<Object>     
type	        <string># kubectl explain ds.spec.updateStrategy.rollingUpdate
maxSurge	    <string>
maxUnavailable	<string># kubectl explain ds.spec.updateStrategy.type
type的values:- "OnDelete":只有手工删除了DaemonSet创建的Pod副本,新的Pod副本才会被创建 - "RollingUpdate":更新时,日版本的Pod将被自动“杀掉
...
updateStrategy:        # 指定更新策略rollingUpdate:       # 采用滚动更新maxSurge: 2        # 最多增加2个maxUnavailable: 0  # 最少减少0个type: RollingUpdate  # 更新类型为滚动更新,默认值
...

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ldbm.cn/p/439580.html

如若内容造成侵权/违法违规/事实不符,请联系编程新知网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AXI4总线详解

AXI4简介 起初SoC片上总线处于发展阶段&#xff0c;不像微机总线那样成熟&#xff0c;目前还没有统一的标准&#xff0c;因此各大厂商和组织纷纷推出自己的标准&#xff0c;以便在未来的SoC片上总线标准中占有一席之地。ARM公司就在1995年推出了自己的总线——AMBA&#xff08…

【Godot4.3】多边形的斜线填充效果基础实现

概述 图案&#xff08;Pattern&#xff09;填充是一个非常常见的效果。其中又以斜线填充最为简单。本篇就探讨在Godot4.3中如何使用Geometry2D和CanvasItem的绘图函数实现斜线填充效果。 基础思路 Geometry2D类提供了多边形和多边形以及多边形与折线的布尔运算。按照自然的思…

Spring Boot-自定义banner

在 Spring Boot 应用中&#xff0c;你可以自定义启动时显示的 banner。这些 banner 可以包括图形、文字或者其他形式的标识。如图所示&#xff1a; 1. 使用 banner.txt 文件 默认情况下&#xff0c;Spring Boot 使用项目的 banner.txt 文件中的内容作为启动时的 banner。你可以…

搭建Docker私有仓库管理本地的Docker镜像,通过harbor实现Web UI访问和管理私有仓库

要在本地搭建一个Docker私有仓库&#xff0c;你可以按照以下步骤进行设置&#xff1a; 安装Docker 确保你已经安装了Docker。如果还没有安装&#xff0c;可以按照官方指南进行安装&#xff1a; 对于Ubuntu系统&#xff0c;你可以运行以下命令来安装Docker&#xff1a; sudo ap…

云原生之WEB应用服务器Tomcat(持续更新中)

WEB应用服务器Tomcat 1.Tomcat功能介绍1.1 安装Tomcat1.2 生成启动文件 2.结合反向代理实现Tomcat部署2.1 利用nginx反向代理实现 3.Memcached&#xff08;解决sion丢失问题&#xff09;3.1 简介3.2 安装与启动 4.session 共享服务器 1.Tomcat功能介绍 Tomcat 服务器是一个免费…

VS Code 调试go程序的相关配置说明

用 VS code 调试Go程序需要在.vscode/launch.json文件中增加如下配置&#xff1a; // launch.json {// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.…

Vue——day11之生命周期

目录 生命周期的八个阶段 生命周期执行的流程图 代码示例 总结 Vue的生命周期是指在Vue实例创建、挂载、更新和销毁过程中&#xff0c;会触发的一系列钩子函数。这些钩子函数可以用来在不同的生命周期阶段执行相应的逻辑操作。 生命周期的八个阶段 Vue的生命周期可以分为…

Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(4)

本文仅作笔记学习和分享&#xff0c;不用做任何商业用途 本文包括但不限于unity官方手册&#xff0c;unity唐老狮等教程知识&#xff0c;如有不足还请斧正​​ Unity数据持久化 之 一个通过2进制读取Excel并存储的轮子(3)-CSDN博客 这节就是真正的存储数据了 理清一下思路&am…

Flutter 小技巧之 Row/Column 即将支持 Flex.spacing

事实上这是一个相当久远的话题&#xff0c;如果对于前因后果不管兴趣&#xff0c;直接看最后就行。 这个需求最早提及应该是 2018 年初在 #16957 被人提起&#xff0c;因为在 Flutter 上 Wrap 有 runSpacing 和 spacing 用于配置垂直和水平间距&#xff0c;而为什么 Colum 和 …

FPGA开发:初识FPGA × 开发环境

FPGA是什么&#xff1f; FPGA的全称是现场可编程门阵列&#xff08;Field Programmable Gate Array&#xff09;&#xff0c;一种以数字电路为主的集成芯片&#xff0c;属于可编程逻辑器件PLD的一种。简单来说&#xff0c;就是能用代码编程&#xff0c;直接修改FPGA芯片中数字…

【2024 版】最新 kali linux 入门及常用简单工具介绍(非常详细)

一、介绍 kali Linux Kali Linux 是一个基于 Debian 的 Linux 发行版&#xff0c;主要用于数字取证和渗透测试。它预装了大量的安全审计和渗透测试工具&#xff0c;被广泛应用于网络安全领域。 &#xff08;一&#xff09;特点 工具丰富&#xff1a;集成了数百种用于渗透测试…

Java入门:07.Java中的面向对象02

5 对象的使用 对象有两种使用情况 情况一&#xff1a; 对象本身&#xff0c;是一个引用类型的数据 所以他也可以像其他的所有数据一样&#xff0c;进行操作 如&#xff1a;存储&#xff0c;打印等。 int i 10 ; print(10) ; ​ //最终存储在变量中的是对象的地址。 Perso…

Mac M1 配置go环境

下载对应的安装包 https://go.dev/dl/ 一直双击安装即可&#xff0c;无脑下一步 go version 测试安装成功 终端运行 go version go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct新建一个.go文件&#xff0c;go run运行测试 package mainimport &q…

OpenHarmony鸿蒙开发( Beta5.0)智能手表应用开发实践

样例简介 本项目是基于BearPi套件开发的智能儿童手表系统&#xff0c;该系统通过与GSM模块&#xff08;型号&#xff1a;SIM808&#xff09;的通信来实现通话和定位功能。 智能儿童手表系统可以通过云和手机建立连接&#xff0c;同步时间和获取天气信息&#xff0c;通过手机下…

【堆的应用--C语言版】

前面一节我们都已将堆的结构&#xff08;顺序存储&#xff09;已经实现&#xff0c;对树的相关概念以及知识做了一定的了解。其中我们在实现删除操作和插入操作的时候&#xff0c;我们还同时实现了建大堆&#xff08;小堆&#xff09;的向上&#xff08;下&#xff09;调整算法…

无人机之报警器的作用

一、紧急救援与辅助搜救 紧急救援&#xff1a;在事故或紧急情况下&#xff0c;无人机报警器可以迅速发出警报&#xff0c;指引救援人员前往事故地点&#xff0c;提高救援效率。 辅助搜救&#xff1a;无人机搭载报警器可以辅助寻找失踪人员或其他需要搜救的场景&#xff0c;通…

How can I provide a RGBA png file to OpenAI PHP library

题意&#xff1a;将RGBA PNG文件提供给OpenAI的PHP库 问题背景&#xff1a; I import Orhanerday\OpenAi library to my DALL-E Examples project but when I provide images, I got Invalid input image - format must be in [RGBA], got RGB. error. I search for this erro…

项目——负载均衡OJ

项目要实现的一个整体的功能&#xff1a; 编写一个在线OJ网络服务器,只实现类似 leetcode 的题目列表在线编程功能 项目宏观结构: Oj服务器在收到提交的代码时&#xff0c;把代码负载均衡的选择发送给其他几个编译与运行服务器去编译运行代码&#xff0c;判断代码的编译运行结…

SnapGene 5.3.1下载安装教程百度网盘分享链接地址

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 SnapGene介绍 SnapGene 5.3.1下载安装教程百度网盘分享链接地址&#xff0c;SnapGene 是一款由美国公司开发&#xff08;后被收购&#xff09;的分子生物学软件&#xff0c;…

IDEA中开发并部署运行WEB项目

IDEA中开发并部署运行WEB项目 1. IDEA关联本地Tomcat 可以在创建项目前设置本地tomcat,也可以在打开某个项目的状态下找到settings 找到 Build,Execution,Eeployment下的Application Servers ,找到号 选择Tomcat Server 选择tomcat的安装目录 点击ok 关联完毕 2. IDEA创建web工…