K8S之DaemonSet控制器

DaemonSet控制器

  • 概念、原理解读、应用场景
    • 概述
    • 工作原理
    • 典型的应用场景介绍
    • DaemonSet 与 Deployment 的区别
  • 解读资源清单文件
  • 实践案例

概念、原理解读、应用场景

概述

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

工作原理

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

典型的应用场景介绍

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

DaemonSet 与 Deployment 的区别

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

DaemonSet :每个 Node 上最多只能运行一个副本

解读资源清单文件

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

kubectl explain ds

在这里插入图片描述
查看DaemonSet的spec字段如何定义

kubectl explain ds.spec

在这里插入图片描述
字段解释说明

  • minReadySeconds:当新的pod启动几秒种后,再kill掉旧的pod
  • revisionHistoryLimit:保存多少个历史版本
  • selector(必填):用于匹配pod的标签选择器
  • template(必填):定义Pod的模板,基于这个模板创建的所有pod是一样的
  • updateStrategy:daemonset的升级策略

实践案例

实验:部署日志收集组件fluentd
环境说明:使用K8S的 V1.25.0版本,集群是1个master,2个work节点
在这里插入图片描述
编写DaemonSet资源清单

vim daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata: name: fluentd-elasticsearch # #资源的名字namespace: monitor # 资源使用的名称空间labels:  # DaemonSet资源具有的标签k8s-app: fluentd-logging
spec:selector:   # 标签选择器,匹配pod的标签matchLabels:name: fluentd-elasticsearchtemplate:metadata:labels:         # 基于模板定义的pod所具有的标签name: fluentd-elasticsearchspec:tolerations:   # 定义容忍度,master上自带了污点 为了让pod能调度到master节点上定义的容忍度- key: node-role.kubernetes.io/control-planeeffect: NoSchedulecontainers:  # 定义容器- name:  fluentd-elasticsearchimage: fluentd:v2.5.1resources:  # 资源配额limits: memory: 500Mirequests: cpu: 100mmemory: 200MivolumeMounts:- name: varlogmountPath: /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

查看DaemonSet创建情况

kubectl get ds -n monitor 

在这里插入图片描述

查看DaemonSet控制器创建的pod情况

kubectl get pods -n monitor -o wide

在这里插入图片描述

通过上面可以看到在k8s的三个节点均创建了fluentd这个pod

pod的名字是由 {控制器的名字} - {随机数} 组成的

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

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

相关文章

SpringSecurity6.x

文章目录 一.什么是SpringSecurity二.SpringSecurity的特征三.SpringSecurity的第一个例子3.1 创建SpringBoot项目3.2 创建IndexController3.3 创建index.html3.4 启动项目3.5 Spring Security默认做了什么 四.SpringSecurity的整体架构4.1 Filter4.2 DelegatingFilterProxy4.3…

Java 基础学习(二十)Maven、XML与WebServer

1 Maven 1.1 什么是Maven 1.1.1 Maven概述 Maven是一种流行的构建工具,用于管理Java项目的构建,依赖管理和项目信息管理。它使用XML文件来定义项目结构和构建步骤,并使用插件来执行各种构建任务。Maven可以自动下载项目依赖项并管理它们的…

iOS模拟器 Unable to boot the Simulator —— Ficow笔记

本文首发于 Ficow Shen’s Blog,原文地址: iOS模拟器 Unable to boot the Simulator —— Ficow笔记。 内容概览 前言终结模拟器进程命令行改权限清除模拟器缓存总结 前言 iOS模拟器和Xcode一样不靠谱,问题也不少。😂 那就有病治…

探索超融合服务器:是否助力企业飞跃数字化挑战?

在数字化不断深化的今天,企业面临着前所未有的转型压力和机遇。IT基础设施作为支撑企业运营的重要基石,其性能、效率及可管理性都直接关系到企业的竞争力。超融合服务器作为一种创新的IT架构,被许多业内专家视为应对现代业务挑战的有效手段。…

【LabVIEW FPGA入门】FPGA不同传递数据方法比较

数据共享方法的选择应基于应用的需要。根据应用程序的重要特性,所讨论的任何一种方法都可能是合适的。 传输方法FPGA资源损耗?不同时钟源之间传递数据?新数据通知?常见用途变量逻辑片是是否提取最新数据存储器存储器是否否提取最新…

思腾合力受邀出席文化和旅游虚拟现实应用推广交流活动并作主题演讲

3月21日,由文化和旅游部产业发展司主办,中国信息通信研究院、北京市石景山区文化和旅游局、中国动漫集团有限公司承办的“数字赋能文旅场景建设行动——文化和旅游虚拟现实应用推广交流活动”在北京首钢一高炉SoReal科幻乐园成功举办。 思腾合力CMO徐莉受…

Kubernetes kafka系列 | Strimzi 快速部署kafka集群 (可外部通信)

一、Strimzi介绍 Strimzi 是一个用于 Apache Kafka 在 Kubernetes 上部署和管理的开源项目。它提供了一组 Kubernetes 自定义资源定义(Custom Resource Definitions,CRDs)、控制器和操作符,使得在 Kubernetes 环境中轻松地部署、管理和操作 Kafka 集群成为可能。Strimzi 项…

dubbo 源码系列之-集群三板斧---负载均衡(-)

dubbo 源码系列之-负载均衡 概述核心接口 LoadBalanceDubbo 提供了 5 种负载均衡实现,分别是:LoadBalance 接口AbstractLoadBalance ConsistentHashLoadBalance 一致性hash1. 一致性 Hash 简析1.0 hash 算法2.0 一致性Hash算法3.0 一致性hash算法 引入槽…

米多论文怎么用 #学习方法#职场发展

米多论文是一款专为论文写作者设计的工具,可以帮助用户进行论文的查重和降重。它的使用非常简单,只需将需要检测的论文内容粘贴到相应的输入框中,点击“检测”按钮即可开始查重。米多论文通过比对用户提交的论文和互联网上已经存在的内容&…

STM32 使用gcc编译介绍

文章目录 前言1. keil5下的默认编译工具链用的是哪个2. Arm编译工具链和GCC编译工具链有什么区别吗?3. Gcc交叉编译工具链的命名规范4. 怎么下载gcc-arm编译工具链参考资料 前言 我们在STM32上进行开发时,一般都是基于Keil5进行编译下载,Kei…

阿里云服务器地域怎么选择?可用区是什么?

阿里云服务器地域和可用区怎么选择?地域是指云服务器所在物理数据中心的位置,地域选择就近选择,访客距离地域所在城市越近网络延迟越低,速度就越快;可用区是指同一个地域下,网络和电力相互独立的区域&#…

2024 3.16~3.22 周报

一、引入——DenseNet DenseNet架构:以前馈的方式,将每层与每层都连接起来,它建立的是前面所有层与后面层的密集连接(dense connection)。 为了确保最大程度的信息在网络中各层之间流动,将所有层彼此直接连…