k8s入门到实战(十一)—— DaemonSet详细介绍及使用

news2024/12/25 13:52:02

DaemonSet

说明

  • 是个 Pod 控制器
  • 能够确保 k8s 的所有节点都运行一个相同的 pod 副本,假设这个 pod 名称为 pa
    • 当增加 node 节点时,这个节点会自动创建一个 pa
    • 副本当删除 node 节点时,pa 副本会自动删除
  • 删除 daemonset 会删除它们创建的 pod

使用场景

  • 需要在每一个 node 节点运行一个存储服务,例如 gluster,ceph
  • 需要在每一个 node 节点运行一个日志收集服务,例如 fluentd,logstash
  • 需要在每一个 node 节点运行一个监控服务,例如 Prometheus Node Exporter,zabbix agent 等

DaemonSet 概述

在 k8s 中,DaemonSet 是一种用于在集群中的每个节点上运行一个副本的资源对象。它确保每个节点上都运行一个 Pod 的副本,以便在整个集群中提供特定的服务或功能。

DaemonSet 具有以下特点:

  • 每个节点一个副本:每个节点上都会自动创建一个 Pod 的副本,并且不会自动在新节点上创建副本。
  • 节点自动感知:当节点加入或离开集群时,DaemonSet 会自动调整 Pod 的数量,以保证每个节点上都有运行的副本。
  • 节点亲和性:可以使用节点选择器或亲和性规则来选择在特定节点上运行 DaemonSet 的 Pod。
  • 基于 Pod 模板:DaemonSet 使用 Pod 模板来定义要创建的 Pod 的配置,包括容器镜像、命令、环境变量等。

DaemonSet 在很多场景中都非常有用,例如:

  • 日志收集:在每个节点上运行日志收集代理,将节点日志发送到集中的存储或分析系统。
  • 监控和度量:在每个节点上运行监控代理,收集节点和容器的度量指标。
  • 网络代理:在每个节点上运行网络代理,实现网络隔离、负载均衡等功能。

通过使用 DaemonSet,您可以确保在整个集群中的每个节点上都运行指定的 Pod,以提供特定的服务或功能,并确保集群中的每个节点都具有相同的配置。

我们的 k8s 集群默认有两个 DaemonSet

获取所有 ns 下的 DaemonSet

kubectl get ds -A

[root@k8s-master k8s]# kubectl get ds -A
NAMESPACE     NAME          DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
kube-system   calico-node   3         3         3       3            3           kubernetes.io/os=linux   2d8h
kube-system   kube-proxy    3         3         3       3            3           kubernetes.io/os=linux   2d9h

示例

  1. 编辑 yaml 文件my-ds.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: daemonset-nginx
  namespace: kube-system
  labels:
    la-nginx: daemonset-nginx
spec:
  selector:
    matchLabels:
      k2-nginx: daemonset-nginx
  template:
    metadata:
      labels:
        k2-nginx: daemonset-nginx
    spec:
      containers:
        - name: daemonset-nginx
          image: nginx
  1. 执行 yaml 文件,创建 daemonset
[root@k8s-master k8s]# vim my-ds.yaml
[root@k8s-master k8s]# kubectl apply -f my-ds.yaml 
daemonset.apps/daemonset-nginx created
  1. 查看 ns 命名空间为 kube-system 下的所有 pod
kubectl get pod -n kube-system

在这里插入图片描述

  1. 可以看到,我们只启动了2个 pod,集群明明有3个节点,我们看看在哪2个节点启动了
kubectl get pod -n kube-system -o wide
......
daemonset-nginx-5x8gr                      1/1     Running   0              4m42s   192.169.169.169   k8s-node2    <none>           <none>
daemonset-nginx-8s6dg                      1/1     Running   0              4m42s   192.169.36.114    k8s-node1    <none>           <none>
......

可以看到,只在 node1 和 node2 两个节点启动了,master 节点没有启动,这是为什么呢?

因为 master 天生就打了一个污点信息 NoSchedule,污点后面再讲

我们可以通过以下命令查看节点设置了哪些污点

# k8s-master 是节点的名字
kubectl describe node k8s-master
......
Taints:             node-role.kubernetes.io/control-plane:NoSchedule
......

里面有这样一条信息,这就是 master 节点打上的污点,就是不让 pod 调度到该节点

查看其它节点的信息,发现为none

# 如果为空,Pod 可以自由地调度到这个节点上
Taints:             <none>

说明:

有指定节点,那就在指定节点创建 pod,如指定了 nodeName,affinity,污点容忍度等…

未指定节点,将在所有节点上创建 Pod

Deployments 和 Daemonset 区别联系

相似性

  • 都能创建Pod
  • 创建的 Pod 对应的进程都不希望被终止掉

使用 Deployments 的场景:无状态的 Sevice 使用 Deployments,微服务,需要实现对副本的数量进行扩缩容、平滑升级,就用 Deployments

使用 Daemonset 的场景:需要 Pod 副本总是运行在全部或特定主机上,并需要先于其他 Pod 启动,就用 daemonSet。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyQt:实现自定义绘制pyqtgraph折线图中的symbol图标

一、写在前面 1.关于symbol的官方文档说明&#xff1a;symbol 2.我自己绘制的自定义symbol符号&#xff0c;如下图&#xff1a;一个在坐标轴上移动的“小货车” 2.默认可以选择的有以下多种symbol符号 但最后一项也说明了&#xff1a;支持QPainterPath绘制的自定义符号形状。…

案例分析-IEEE 754浮点标准

案例一&#xff1a; 请分析IEEE 754双精度浮点数规格化数的表示范围。 案例二&#xff1a; 规格化浮点数的Bias为什么采用2k-1-1而不是2k-1​&#xff1f;非规范数的指数E1-Bias而不是0-Bias&#xff1f; &#xff08;1&#xff09; ① bias 127时 E e - 127 &#xff08;00…

0.96寸OLED屏调试 ----(一)

所需设备&#xff1a; 1、USB 转 SPI I2C 适配器&#xff1b;内附链接 2、0.96寸OLED显示模块&#xff1b; 备注&#xff1a;专业版、升级版都适用&#xff1b; 首先介绍一下OLED显示模块&#xff0c;SSD1306是一款OLED驱动芯片&#xff0c;拥有最大128*64像素支持&#xff…

卷积变体-----分组卷积、深度可分离卷积、膨胀卷积

文章目录 一、分组卷积1.1 概述1.2 参数量变换 二、深度可分离卷积2.1 概述2.2 计算 三、膨胀卷积 一、分组卷积 1.1 概述 1. 分组卷积&#xff08;Group convolution &#xff09;最早在AlexNet中出现&#xff0c;由于当时的硬件资源有限&#xff0c;训练AlexNet时卷积操作不…

Axure中后台系统原型模板,B端页面设计实例,高保真高交互54页

作品概况 页面数量&#xff1a;共 50 页&#xff08;长期更新&#xff09; 兼容版本&#xff1a;Axure RP 9/10&#xff0c;不支持低版本 应用领域&#xff1a;网页模板、网站后台、中台系统、B端系统 作品特色 本品为「web中后台系统页面设计实例模板」&#xff0c;默林原创…

聊聊CSS

css 的介绍 学习目标 能够知道css的作用 1. css 的定义 css(Cascading Style Sheet)层叠样式表&#xff0c;它是用来美化页面的一种语言。 没有使用css的效果图 使用css的效果图 2. css 的作用 美化界面, 比如: 设置标签文字大小、颜色、字体加粗等样式。 控制页面布局, 比如…

逐步学习Go-协程goroutine

参考&#xff1a;逐步学习Go-协程goroutine – FOF编程网 什么是线程&#xff1f; 简单来说线程就是现代操作系统使用CPU的基本单元。线程基本包括了线程ID&#xff0c;程序计数器&#xff0c;寄存器和线程栈。线程共享进程的代码区&#xff0c;数据区和操作系统的资源。 线…

jMeter学习

一. JMeter介绍 1. 什么是JMeter&#xff1f; Apache JMeter™ 应用程序是开源软件&#xff0c;一个 100% 纯 Java 应用程序&#xff0c;旨在加载测试功能行为和测量性能 。它最初是为测试 Web 应用程序而设计的&#xff0c;但后来扩展到其他测试功能。 2. JMeter能做啥&#x…

RabbitMQ(简单模式)

2种远程服务调用 1openFeign&#xff1a; 优点&#xff1a;能拿到被调用的微服务返回的数据&#xff0c;系统系耦度高&#xff0c;系统稳定。 缺点&#xff1a;同步调用&#xff0c;如果有很多服务需要被调用&#xff0c;耗时长。 MQ,消息队列&#xff0c;RabbitMQ是消息we…

数据可视化-ECharts Html项目实战(8)

在之前的文章中&#xff0c;我们学习了如何设置散点图涟漪效果与仪表盘动态指针效果。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢 今天的文章&#xff0c;会…

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数(二)

标定系列——预备知识-OpenCV中实现Rodrigues变换的函数&#xff08;二&#xff09; 说明记录 说明 简单介绍罗德里格斯变换以及OpenCV中的实现函数 记录

Machine Learning机器学习之向量机(Support Vector Machine,SVM)

目录 前言 算法提出背景&#xff1a; 核心思想&#xff1a; 原理&#xff1a; 应用领域&#xff1a; 一、支持向量机分类&#xff08;主要变体&#xff09; 二、构建常见的支持向量机模型 基于Python 中的 Scikit-learn 库构建线性支持向量机&#xff08;SVM&#xff09; 三、向…

蓝桥杯刷题之路径之谜

题目来源 路径之谜 不愧是国赛的题目 题意 题目中会给你两个数组&#xff0c;我这里是分别用row和col来表示 每走一步&#xff0c;往左边和上边射一箭&#xff0c;走到终点的时候row数组和col数组中的值必须全部等于0这个注意哈&#xff0c;看题目看了半天&#xff0c;因为…

【GPU系列】选择最适合的 CUDA 版本以提高系统性能

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

NVIDIA 发布 Project GR00T 人形机器人基础模型和 Isaac 机器人平台重大更新

系列文章目录 前言 Isaac 机器人平台现可为开发者提供全新的机器人训练仿真器、Jetson Thor 机器人计算机、生成式 AI 基础模型和由 CUDA 加速的感知和操作库。 Project GR00T 是一种多模态人形机器人通用基础模型&#xff0c;作为机器人的大脑&#xff0c;使它们能够学习技能…

Android客户端自动化UI自动化airtest从0到1搭建macos+demo演示

iOS客户端自动化UI自动化airtest从0到1搭建macosdemo演示-CSDN博客 一、基础环境 1. 安装jdk 选择jdk8 如果下载高版本 可能不匹配会失败 下载.dmg文件 苹果电脑 &#xff5c; macOS &#xff5c; jdk1.8 &#xff5c; 环境变量配置_jdk1.8 mac-CSDN博客 Java Downloads …

【Java程序设计】【C00390】基于(JavaWeb)Springboot的校园疫情防控管理系统(有论文)

基于&#xff08;JavaWeb&#xff09;Springboot的校园疫情防控管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 博主介绍&#xff1a;java高级开发&#xff0c;从事互联网行业六年&#xff0c;已经做了六年的毕业设计程序开发&#xff0c;开…

前端Web移动端学习day05

移动 Web 第五天 响应式布局方案 媒体查询Bootstrap框架 响应式网页指的是一套代码适配多端&#xff0c;一套代码适配各种大小的屏幕。 共有两种方案可以实现响应式网页&#xff0c;一种是媒体查询&#xff0c;另一种是使用bootstrap框架。 01-媒体查询 基本写法 max-wid…

vue3+Vite+TS项目,配置ESlint和Prettier

创建vue3项目 实操过的有两种方式 1.vue脚手架2.vite&#xff08;推荐&#xff0c;也是尤大大团队研发&#xff09; 具体怎么新建一个vue3项目就不多讲了&#xff0c;可以按照官方文档来 创建后的文件目录长这样 多提一句&#xff0c;vite也会随着时间不断迭代&#xff0c;后…

【C++入门】 初见,单推,与C++的第一次约会

关注小庄 顿顿解馋(ᕑᗢᓫ∗)˒ 引言&#xff1a;本篇博客我们开始与C的第一次约会&#xff0c;C是兼容c的&#xff0c;本篇博客我们将了解到C关键字有哪些&#xff0c;C命名空间&#xff0c;C输入与输出和缺省参数的内容&#xff0c;请放心食用 ~ 文章目录 一 &#x1f3e0; C…