【K8s】专题四(5):Kubernetes 控制器之 DaemonSet

本文内容均来自个人笔记并重新梳理,如有错误欢迎指正!

如果对您有帮助,烦请点赞、关注、转发、订阅专栏!


专栏订阅入口

Linux 专栏 | Docker 专栏 | Kubernetes 专栏


往期精彩文章

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法

【Docker】(全网首发)Kylin V10 下 MySQL 容器内存占用异常的解决方法(续)

【Docker】MySQL 源码构建 Docker 镜像(基于 ARM 64 架构)


目录

一、基本介绍

二、工作原理

三、相关特性

四、资源清单(示例)

五、常用操作

1、创建 DaemonSet

2、更新 DaemonSet

3、回滚 DaemonSet

4、查看 DaemonSet

5、删除 DaemonSet


一、基本介绍

DaemonSet 控制器是 Kubernetes 的一个 API 对象,它负责在 Kubernetes 集群中运行和管理一个 Pod 的副本,并确保所有节点或选定节点上都运行着一个 Pod 实例。

DaemonSet 通常用于部署守护进程或系统服务,例如日志收集器、监控代理或存储守护进程。


二、工作原理
  • 定义对象:用户定义一个 DaemonSet 对象,指定 Pod 模板和其他配置选项,Pod 模板定义了 Pod 的规格,包括容器、存储和网络配置
  • 调度 Pod:当 DaemonSet 控制器接收到创建请求时,它会在每个匹配的节点上创建一个 Pod 实例
  • 监控 Pod:DaemonSet 控制器监视 Pod 的状态,并确保每个节点上都有 Pod 实例。如果节点失败或重启,DaemonSet 控制器会自动在该节点上重新创建 Pod 实例
  • 更新 Pod:如果用户更新了 Pod 模板,DaemonSet 控制器将负责在所有节点上滚动更新 Pod 实例,以应用新的配置
  • 节点选择:DaemonSet 允许用户通过节点标签选择器来指定应在哪些节点上运行 Pod。如果没有指定选择器,Pod 将在所有节点上运行


三、相关特性
  • 节点覆盖:DaemonSet 确保在集群中的所有节点或选定节点上运行一个 Pod 实例,或者在满足特定条件的节点上运行
  • 自动恢复:如果节点失败或重启,DaemonSet 会自动在该节点上重新创建 Pod,确保服务的连续性
  • 滚动更新:当 Pod 模板更新时,DaemonSet 支持滚动更新,逐步替换旧的 Pod 实例
  • 灵活性:用户可以指定节点标签选择器来控制 Pod 在哪些节点上运行,提供灵活性
  • 资源和调度:DaemonSet 支持资源请求和限制,允许用户为 Pod 指定所需的 CPU 和内存资源
  • 集成:DaemonSet 与 Kubernetes 的其他资源和功能(如服务发现、存储卷和网络策略)紧密集成
  • 可扩展性:DaemonSet 可以轻松扩展到数千个节点,适用于大规模集群


四、资源清单(示例)
# daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: demo-daemonset
spec:
  selector:
    matchLabels:
      app: demo-daemonset
  template:
    metadata:
      labels:
        app: demo-daemonset
    spec:
      containers:
      - name: demo-container
        image: demo-image:latest
        ports:
        - containerPort: 80

上述 daemonset.yaml 文件定义了一个名为 demo-daemonset 的 DaemonSet 对象,每个节点上会创建一个 Pod 副本,每个 Pod 包含一个名为 demo-container 的业务容器,业务容器使用 demo-image:latest 镜像,并指定监听端口为 80。

说明:可以通过以下命令查看 DaemonSet 资源清单支持定义的内容

kubectl explain daemonset --recursive


五、常用操作
1、创建 DaemonSet
kubectl create -f daemonset.yaml
或
kubectl apply -f daemonset.yaml

2、更新 DaemonSet
# 方式一:更新 daemonset.yaml 内容后执行
kubectl apply -f daemonset.yaml
 
# 方式二:更新镜像
kubectl set image daemonset demo-daemonset app=demo-image:v1
 
# 方式三:更新环境变量
kubectl set env daemonset demo-daemonset keyname=keyvalue

3、回滚 DaemonSet
# 默认回滚至上一版本
kubectl rollout undo daemonset demo-daemonset
 
# 回滚至指定版本
kubectl rollout undo daemonset demo-daemonset --to-revision=3
 
# 查看可回滚版本
kubectl rollout history daemonset demo-daemonset

4、查看 DaemonSet
# 查看实例列表
kubetcl get daemonset
 
# 查看详细信息
kubectl describe daemonset demo-daemonset

5、删除 DaemonSet
# 方式一:命令行
kubectl delete daemonset demo-daemonset
 
# 方式二:资源清单
kubectl delete -f daemonset.yaml

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

行者Sun1989

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值