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

【赵渝强老师】K8s的DaemonSets控制器

在这里插入图片描述

  DaemonSet控制器相当于在节点上启动了一个守护进程。通过使用DaemonSet可以确保一个Pod的副本运行在 Node节点上。如果有新的Node节点加入集群,DaemonSet也会自动给新加入的节点增加一个Pod的副本;反之,当有Node节点从集群中移除时,DaemonSet也可以保证将这些Pod自动回收。当删除 DaemonSet将会删除它创建的所有Pod。下面列举了DaemonSet控制器的一些典型的应用场景:

  • 使用DaemonSet控制器在节点上运行监控程序。
  • 使用DaemonSet控制器在节点上运行日志收集程序,如:fluentd和logstash。
  • 使用DaemonSet控制器运行Kubernetes的存储守护进程。

  Kubernetes允许在节点上针对不同的类型的守护进程单独启动一个DaemonSet;也允许针对不同的硬件指标,如CPU和内存,部署多个DaemonSet。

  视频讲解如下:

K8s的DaemonSets控制器

【赵渝强老师】K8s中的DaemonSet控制器

一、DaemonSet控制器的作用与创建

  下面将通过一个示例来演示如何DaemonSet的使用。
(1)创建daemonset-demo.yaml文件,并输入下面的内容:

apiVersion: apps/v1
kind: DaemonSet
metadata:
    name: daemonset-demo
    namespace: default
spec:
    minReadySeconds: 5
    selector:
        matchLabels:
            app: daemonset
    template:
        metadata:
            name: daemonset-demo
            namespace: default
            labels:
                app: daemonset
        spec:
            containers:
                - name: daemonset-demo   
                  image: nginx
                  imagePullPolicy: IfNotPresent
                  ports:
                    - name: httpd
                      containerPort: 80

(2)执行命令创建DaemonSet。

kubectl apply -f daemonset-demo.yaml

(3)查看DaemonSet的信息

kubectl get daemonset

#提示:该命令可以简写成下面的形式:
kubectl get ds

# 输出的信息如下图所示。从图中可以看出,
# 由于Kubernetes集群中有两个Node节点,
# 因此DaemonSet将会在每个Node节点启动一个Pod。

在这里插入图片描述

(4)查看Pod的信息。

kubectl get pods -o wide

# 输出的信息如下图所示。

在这里插入图片描述

(5)删除daemonset

kubectl delete daemonset daemonset-demo

二、DaemonSets控制器的调度

  Kubernetes的调度器scheduler能够确保所有符合条件的Node节点都可以运行一个DaemonSets控制器管理的Pod。这也是Daemonsets控制器中Pod中默认的调度方式。但Kubernetes也允许使用DaemonSets控制器自己的调度器来创建和调度Pod。但由DaemonSets控制器来进行Pod的调度,可能会造成各个Node节点上Pod行为的不一致性。因为在正常情况下,当Pod被创建后,应该处于Pending状态等待被调度;但由DaemonSets控制器创建的Pod不会处于Pending状态下。


http://www.kler.cn/news/316978.html

相关文章:

  • Conda虚拟环境配置常见问题记录
  • 提高数据集成稳定性:EMQX Platform 端到端规则调试指南
  • 动态SQL中的foreach标签【后端 21】
  • makefile学习笔记(一)(make架构详解、gcc -o 详解、make构建流程、clean使用、隐式规则和模式规则、自动变量、立即展开和延时展开)
  • Oracle密码过期问题,设置永不过期
  • PCIe进阶之TL:Completion Rules TLP Prefix Rules
  • Tomcat端口号被占用
  • Android使用OpenCV 4.5.0实现扑克牌识别(源码分享)
  • kismet和war driving具体准备(仅供无线安全学习)
  • 【SpringBoot】97、SpringBoot中使用EasyExcel导出/导入数据
  • JAVA并发编程系列之Semaphore信号量剖析
  • Go 1.19.4 路径和目录-Day 15
  • JDK7u21 HashMap版
  • ccfcsp-202112-1、序列查询
  • Python知识点:详细讲解在Python编程中,GIL(全局解释器锁)的影响与规避方法
  • 2024寻找那些能精准修改PDF内容的工具
  • 工控一体机在高精度玻璃检测机中的应用
  • C++11中的可变长模板参数
  • Linux 线程控制
  • 委托的注册及注销+观察者模式
  • C++容器list底层迭代器的实现逻辑~list相关函数模拟实现
  • 安卓LiveData与MutableLiveData的使用
  • 游戏淡入淡出效果
  • 消息中间件---Kafka
  • 频率增强通道注意力机制(FECAM)学习总结
  • LLMs之Qwen:Qwen2.5的简介、安装和使用方法、案例应用之详细攻略
  • Redisson 总结
  • 二叉树---java---黑马
  • 吴恩达深度学习笔记:卷积神经网络(Foundations of Convolutional Neural Networks)2.1-2.2
  • 【IPV6从入门到起飞】5-5 IPV6+Home Assistant(HACS商店安装)docker版本安装