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

学习笔记二十八:K8S控制器Daemonset入门到企业实战应用

DaemonSet控制器:概念、原理解读

  • DaemonSet概述
    • DaemonSet工作原理:如何管理Pod
    • Daemonset典型的应用场景
    • DaemonSet 与 Deployment 的区别
    • DaemonSet资源清单文件编写技巧
  • DaemonSet使用案例:部署日志收集组件fluentd
  • Daemonset管理pod:滚动更新
    • DaemonSet实现pod的滚动更新
    • 更新镜像版本,可以按照如下方法:

DaemonSet概述

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

DaemonSet工作原理:如何管理Pod

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资源清单文件编写技巧

查看定义Daemonset资源需要的字段有哪些

kubectl explain ds
KIND:     DaemonSet
VERSION:  apps/v1DESCRIPTION:DaemonSet represents the configuration of a daemon set.FIELDS:apiVersion	<string> #当前资源使用的api版本,跟VERSION:  apps/v1保持一致kind	<string>  #资源类型,跟KIND:  DaemonSet保持一致metadata	<Object> #元数据,定义DaemonSet名字的spec	<Object>    #定义容器的status	<Object>  #状态信息,不能改

查看DaemonSet的spec字段如何定义

kubectl explain ds.spec
KIND:     DaemonSet
VERSION:  apps/v1
RESOURCE: spec <Object>
DESCRIPTION:The desired behavior of this daemon set. More info:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-statusDaemonSetSpec is the specification of a daemon set.
FIELDS:minReadySeconds	<integer>   #当新的pod启动几秒种后,再kill掉旧的pod。revisionHistoryLimit	<integer> #历史版本selector	<Object> -required-  #用于匹配pod的标签选择器template	<Object> -required- #定义Pod的模板,基于这个模板定义的所有pod是一样的updateStrategy	<Object> #daemonset的升级策略

查看DaemonSet的spec.template字段如何定义
对于template而言,其内部定义的就是pod,pod模板是一个独立的对象

kubectl explain ds.spec.template
KIND:     DaemonSet
VERSION:  apps/v1
RESOURCE: template <Object>
FIELDS:metadata	<Object>spec<Object>

DaemonSet使用案例:部署日志收集组件fluentd

把fluentd-2-5-1.tar.gz上传到k8smaster和k8snode上

ctr -n=k8s.io images import fluentd_2_5_1.tar.gz
cat daemonset.yaml 
apiVersion: apps/v1  #DaemonSet使用的api版本
kind: DaemonSet     # 资源类型
metadata:name: fluentd-elasticsearch   #资源的名字namespace: kube-system      #资源所在的名称空间labels:k8s-app: fluentd-logging    #资源具有的标签
spec:selector:         #标签选择器matchLabels:name: fluentd-elasticsearchtemplate:metadata:labels:  #基于这回模板定义的pod具有的标签name: fluentd-elasticsearchspec:tolerations:   #定义容忍度- key: node-role.kubernetes.io/mastereffect: NoSchedulecontainers:    #定义容器- name: fluentd-elasticsearchimage: k8s/fluentd:v2.5.1resources:  #资源配额limits:memory: 200Mirequests:cpu: 100mmemory: 200MivolumeMounts: - name: varlogmountPath: /var/log   #把本地/var/log目录挂载到容器- name: varlibdockercontainersmountPath: /var/lib/docker/containers  
#把/var/lib/docker/containers/挂载到容器里readOnly: true  #挂载目录是只读权限terminationGracePeriodSeconds: 30  #优雅的关闭服务volumes:- name: varloghostPath:path: /var/log  #基于本地目录创建一个卷- name: varlibdockercontainershostPath:path: /var/lib/docker/containers  #基于本地目录创建一个卷
kubectl apply -f daemonset.yaml 
kubectl get ds -n kube-system
NAME               DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE 
fluentd-elasticsearch   3          3          3           3          
kubectl get pods -n kube-system -o wide

在这里插入图片描述

通过上面可以看到在k8s的三个节点均创建了fluentd这个pod
pod的名字是由控制器的名字-随机数组成的

Daemonset管理pod:滚动更新

DaemonSet实现pod的滚动更新

查看daemonset的滚动更新策略

kubectl explain ds.spec.updateStrategy
KIND:     DaemonSet
VERSION:  apps/v1
RESOURCE: updateStrategy <Object>
DESCRIPTION:An update strategy to replace existing DaemonSet pods with new pods.DaemonSetUpdateStrategy is a struct used to control the update strategy fora DaemonSet.
FIELDS:rollingUpdate	<Object>Rolling update config params. Present only if type = "RollingUpdate".type	<string>Type of daemon set update. Can be "RollingUpdate" or "OnDelete". Default isRollingUpdate.

查看rollingUpdate支持的更新策略

kubectl explain ds.spec.updateStrategy.rollingUpdate
KIND:     DaemonSet
VERSION:  apps/v1
RESOURCE: rollingUpdate <Object>
DESCRIPTION:Rolling update config params. Present only if type = "RollingUpdate".Spec to control the desired behavior of daemon set rolling update.FIELDS:maxUnavailable	<string>

上面表示rollingUpdate更新策略只支持maxUnavailabe,先删除在更新;因为我们不支持一个节点运行两个pod,因此需要先删除一个,在更新一个。

更新镜像版本,可以按照如下方法:

这个镜像启动pod会有问题,主要是演示daemonset如何在命令行更新pod

kubectl set image daemonsets fluentd-elasticsearch=ikubernetes/filebeat:5.6.6-alpine -n kube-system
kubectl set image daemonsets fluentd-elasticsearch fluentd-elasticsearch=ikubernetes/filebeat:5.6.6-alpine -n kube-system

相关文章:

学习笔记二十八:K8S控制器Daemonset入门到企业实战应用

DaemonSet控制器&#xff1a;概念、原理解读 DaemonSet概述DaemonSet工作原理&#xff1a;如何管理PodDaemonset典型的应用场景DaemonSet 与 Deployment 的区别DaemonSet资源清单文件编写技巧 DaemonSet使用案例&#xff1a;部署日志收集组件fluentdDaemonset管理pod&#xff1…...

您对互联网有多“上瘾”?

萨里大学的科学家决定检查现代用户的网络成瘾程度。他们的一篇文章最近发表在 《旅行与旅游营销杂志》上 &#xff0c;其中包含对受此问题困扰的年轻人&#xff08;而不仅仅是年轻人&#xff09;的研究和分类结果。 796名不同年龄段的人参加了实验。科学家们仔细监测了他们的行…...

数据挖掘题目:设ε= 2倍的格网间距,MinPts = 6, 采用基于1-范数距离的DBSCAN算法对下图中的实心格网点进行聚类,并给出聚类结果(代码解答)

问题 代码 import matplotlib.pyplot as plt import numpy as np from sklearn.cluster import DBSCAN #pip install matplotlib #pip install numpy #pip install scikit-learn # 实心格网点的坐标 solid_points np.array([[1, 1], [2, 1],[3, 1], [1, 2], [2, 2], [3, 2],[…...

STM32HAL-完全解耦面向对象思维的架构-时间轮片法使用(timeslice)

目录 概述 一、开发环境 二、STM32CubeMx配置 三、编码 四、运行结果 五、代码解释 六、总结 概述 timeslice是一个时间片轮询框架&#xff0c;完全解耦的时间片轮询框架&#xff0c;非常适合裸机单片机引用。接下来将该框架移植到stm32单片机运行&#xff0c;单片机…...

C++ 程序员入门需要多久,怎样才能学好?

我们都知道&#xff0c;C是所有语言的基础 &#xff01;记得在大学毕业之后&#xff0c;做了C的后端开发当然还有一些嵌入式的相关的工作&#xff0c;到现在换工作&#xff0c;工作机会依然那么多&#xff0c;到了一定的阶段&#xff0c;我想你不是在找工作&#xff0c;而是工作…...

SpringBoot项目打war包部署到tomcat访问路径去掉项目名

方法一&#xff1a;手动修改包名 1.先将Tomcat webapp目录下文件全部删除 2.将war包文件放在webapps文件夹下 2.运行tomcat&#xff0c;war文件自动解压成文件夹 3.关闭tomcat&#xff0c;&#xff0c;将步骤2解压的文件夹直接改名为ROOT 4.重新运行tomcat&#xff0c;即可。 5…...

58同城面试

一、Java八股 1、ThreadLocal的底层原理是什么&#xff1f; ThreadLocal 在Java中用于提供线程局部变量&#xff0c;这些变量在每个线程中都有独立的副本&#xff0c;互不干扰。其底层原理可以简要描述如下&#xff1a; 数据存储: 每个线程中都有一个 ThreadLocalMap 的实例&…...

【数据结构】归并排序 的递归实现与非递归实现

归并排序 前言一、归并排序递归实现&#xff08;1&#xff09;归并排序的核心思路&#xff08;2&#xff09;归并排序实现的核心步骤&#xff08;3&#xff09;归并排序码源详解&#xff08;4&#xff09;归并排序效率分析1&#xff09;时间复杂度 O&#xff08;N*logN&#xf…...

Go的命令行工具开发:使用Cobra库

今天我们将深入探讨如何使用Go语言和Cobra库来开发命令行工具。 命令行工具在软件开发中有着广泛的应用&#xff0c;它们快速、高效&#xff0c;且易于自动化。 Go语言因其简洁、高效而被广泛用于命令行工具的开发。Cobra库则是Go中用于构建命令行工具的重要库之一。 为什么选…...

坚持#第420天~阿里云轻量服务器内存受AliYunDunMonito影响占用解决方法

阿里云轻量服务器内存受AliYunDunMonito影响占用解决方法&#xff0c;亲测有效&#xff1a; Mobax好卡啊&#xff0c;那就直接在阿里云后台操作即可&#xff0c;阿里云后台也可以上传文件。 Navicat mysql好卡啊&#xff0c;那就直接在阿里云后台最上面帮助的右边有个数据库&…...

时间序列聚类的直观方法

一、介绍 我们将使用轮廓分数和一些距离度量来执行时间序列聚类实验&#xff0c;同时利用直观的可视化&#xff0c;让我们看看下面的时间序列&#xff1a; 这些可以被视为具有正弦、余弦、方波和锯齿波的四种不同的周期性时间序列 如果我们添加随机噪声和距原点的距离来沿 y 轴…...

vue3的reactive源码解析

reactive源码解析 总结一句: reactive是个函数。reactive函数返回了一个createReactiveObject函数&#xff0c;createReactiveObject又返回了一个“经new Proxy实例化”的对象。 详细介绍: 我们使用时传给reactive函数一个对象类型target&#xff0c;reactive又将target传给cr…...

【ElasticSearch系列-04】ElasticSearch的聚合查询操作

ElasticSearch系列整体栏目 内容链接地址【一】ElasticSearch下载和安装https://zhenghuisheng.blog.csdn.net/article/details/129260827【二】ElasticSearch概念和基本操作https://blog.csdn.net/zhenghuishengq/article/details/134121631【三】ElasticSearch的高级查询Quer…...

Redisson初始

最近的自己,一直都在做些老年的技术,没有啥升级,自己也快麻木了,自己该怎么说,那必须行动起来啊!~来来,我们一起增长自己的内功 分布式锁的最强实现: Redisson 1.概念 在介绍之前,我们要知道这个Redisson是啥? 难道就是Redis的son?(我第一次就这么认为的哈哈!) 事实也的确如…...

【华为OD题库-018】AI面板识别-Java

题目 Al识别到面板上有N(1<N≤100)个指示灯&#xff0c;灯大小一样&#xff0c;任意两个之间无重叠。由于AI识别误差&#xff0c;每次识别到的指示灯位置可能有差异&#xff0c;以4个坐标值描述Al识别的指示灯的大小和位置(左上角x1,y1&#xff0c;右下角x2.y2)。请输出先行…...

[概述] 点云滤波器

拓扑结构 点云是一种三维数据&#xff0c;有几种方法可以描述其空间结构&#xff0c;以利于展开搜索 https://blog.csdn.net/weixin_45824067/article/details/131317939 KD树 头文件&#xff1a;pcl/kdtree/kdtree_flann.h 函数&#xff1a;pcl::KdTreeFLANN 作用&#xff1a…...

[笔记] 汉字判断

参考博客&#xff1a;如果判断一个字符是西文字符还是中文字符 结论&#xff1a; 汉字转数字后&#xff0c;会占两位字符位&#xff0c;两位都是负数。 参考下面代码 输入&#xff1a;你 输出&#xff1a;01 #include<bits/stdc.h> using namespace std; int main() {cha…...

Android开发笔记(三)—Activity篇

活动组件Activity 启动和结束生命周期启动模式信息传递Intent显式Intent隐式Intent 向下一个Activity发送数据向上一个Activity返回数据 附加信息利用资源文件配置字符串利用元数据传递配置信息给应用页面注册快捷方式 启动和结束 &#xff08;1&#xff09;从当前页面跳到新页…...

nodejs+vue+python+php在线购票系统的设计与实现-毕业设计

伴随着信息时代的到来&#xff0c;以及不断发展起来的微电子技术&#xff0c;这些都为在线购票带来了很好的发展条件。同时&#xff0c;在线购票的范围不断增大&#xff0c;这就需要有一种既能使用又能使用的、便于使用的、便于使用的系统来对其进行管理。在目前这种大环境下&a…...

基于Taro + React 实现微信小程序半圆滑块组件、半圆进度条、弧形进度条、半圆滑行轨道(附源码)

效果&#xff1a; 功能点&#xff1a; 1、四个档位 2、可点击加减切换档位 3、可以点击区域切换档位 4、可以滑动切换档位 目的&#xff1a; 给大家提供一些实现思路&#xff0c;找了一圈&#xff0c;一些文章基本不能直接用&#xff0c;错漏百出&#xff0c;代码还藏着掖…...

TDengine 快速体验(Docker 镜像方式)

简介 TDengine 可以通过安装包、Docker 镜像 及云服务快速体验 TDengine 的功能&#xff0c;本节首先介绍如何通过 Docker 快速体验 TDengine&#xff0c;然后介绍如何在 Docker 环境下体验 TDengine 的写入和查询功能。如果你不熟悉 Docker&#xff0c;请使用 安装包的方式快…...

智能在线客服平台:数字化时代企业连接用户的 AI 中枢

随着互联网技术的飞速发展&#xff0c;消费者期望能够随时随地与企业进行交流。在线客服平台作为连接企业与客户的重要桥梁&#xff0c;不仅优化了客户体验&#xff0c;还提升了企业的服务效率和市场竞争力。本文将探讨在线客服平台的重要性、技术进展、实际应用&#xff0c;并…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

TSN交换机正在重构工业网络,PROFINET和EtherCAT会被取代吗?

在工业自动化持续演进的今天&#xff0c;通信网络的角色正变得愈发关键。 2025年6月6日&#xff0c;为期三天的华南国际工业博览会在深圳国际会展中心&#xff08;宝安&#xff09;圆满落幕。作为国内工业通信领域的技术型企业&#xff0c;光路科技&#xff08;Fiberroad&…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积

1.题目介绍 给定一个整数数组 nums&#xff0c;返回 数组 answer &#xff0c;其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法&#xff0c;且在 O…...

水泥厂自动化升级利器:Devicenet转Modbus rtu协议转换网关

在水泥厂的生产流程中&#xff0c;工业自动化网关起着至关重要的作用&#xff0c;尤其是JH-DVN-RTU疆鸿智能Devicenet转Modbus rtu协议转换网关&#xff0c;为水泥厂实现高效生产与精准控制提供了有力支持。 水泥厂设备众多&#xff0c;其中不少设备采用Devicenet协议。Devicen…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]

报错信息&#xff1a;libc.so.6: cannot open shared object file: No such file or directory&#xff1a; #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

MeshGPT 笔记

[2311.15475] MeshGPT: Generating Triangle Meshes with Decoder-Only Transformers https://library.scholarcy.com/try 真正意义上的AI生成三维模型MESHGPT来袭&#xff01;_哔哩哔哩_bilibili GitHub - lucidrains/meshgpt-pytorch: Implementation of MeshGPT, SOTA Me…...

Excel 怎么让透视表以正常Excel表格形式显示

目录 1、创建数据透视表 2、设计 》报表布局 》以表格形式显示 3、设计 》分类汇总 》不显示分类汇总 1、创建数据透视表 2、设计 》报表布局 》以表格形式显示 3、设计 》分类汇总 》不显示分类汇总...

WinUI3开发_使用mica效果

简介 Mica(云母)是Windows10/11上的一种现代化效果&#xff0c;是Windows10/11上所使用的Fluent Design(设计语言)里的一个效果&#xff0c;Windows10/11上所使用的Fluent Design皆旨在于打造一个人类、通用和真正感觉与 Windows 一样的设计。 WinUI3就是Windows10/11上的一个…...