【赵渝强老师】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文件,并输入下面的内容:

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。

powershell 复制代码
kubectl apply -f daemonset-demo.yaml

(3)查看DaemonSet的信息

powershell 复制代码
kubectl get daemonset

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

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

(4)查看Pod的信息。

powershell 复制代码
kubectl get pods -o wide

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

(5)删除daemonset

powershell 复制代码
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状态下。

相关推荐
Python-AI Xenon4 分钟前
RHEL/CentOS 7.9环境中离线安装Telnet服务完整指南
linux·运维·telnet·rhel7.9
Trouvaille ~6 分钟前
【Linux】进程信号(三):信号捕捉与操作系统运行原理
linux·运维·服务器·c++·操作系统·信号·中断
zl_dfq14 分钟前
Linux 之 【进程间通信】(消息队列与信号量、Systrm VIPC在内核中数据结构设计)
linux
木卫二号Coding21 分钟前
Docker-构建自己的Web-Linux系统-镜像colinchang/ubuntu-desktop:22.04
linux·ubuntu·docker
维度攻城狮26 分钟前
Ubuntu突然无法中文输入的问题解决办法
linux·运维·ubuntu
Coder个人博客27 分钟前
Linux6.19-ARM64 mm Makefile子模块深入分析
linux·安全·车载系统·系统架构·系统安全·鸿蒙系统·安全架构
猫猫的小茶馆32 分钟前
【Linux 驱动开发】五. 设备树
linux·arm开发·驱动开发·stm32·嵌入式硬件·mcu·硬件工程
岱宗夫up43 分钟前
基于ROS的视觉导航系统实战:黑线循迹+激光笔跟随双模态实现(冰达机器人Nano改造)
linux·python·机器人·ros
开开心心_Every2 小时前
PDF转图片工具推荐:免费支持批量转换
linux·运维·服务器·spring boot·edge·pdf·powerpoint
晚霞的不甘2 小时前
Flutter for OpenHarmony 引力弹球游戏开发全解析:从零构建一个交互式物理小游戏
前端·flutter·云原生·前端框架·游戏引擎·harmonyos·骨骼绑定