跳到主要内容

认识

2024年08月30日
柏拉文
越努力,越幸运

一、认识


DaemonSetKubernetes 中的一种控制器,用于在集群中每个节点上运行一个副本的 PodDaemonSet 是一种专为节点级服务设计的控制器,确保所有节点都运行指定的 Pod。其特性使其成为实现系统监控、日志收集、网络配置等任务的核心工具。通过灵活的调度策略和资源管理,可以轻松应对各种复杂场景。

1.1 特性

DaemonSet 可以通过 Kubernetes 的调度和管理,来实现以下特点:

1. 确保每个节点只运行一个 Pod, 并且可以通过 nodeSelectornodeAffinity 等,选择特定的节点运行

2. 当新节点加入集群,DaemonSet 会自动在新节点上启动 Pod

3. 支持滚动更新和回滚:支持逐步更新节点上的 Pod

1.2 用途

日志收集:如使用 FluentdFilebeat 在每个节点收集日志。

监控代理:如在每个节点部署 Prometheus Node ExporterDatadog Agent

网络插件:如在每个节点运行 CalicoFlannel 等网络插件。

系统级守护进程:运行需要直接与节点交互的应用。

二、语法


apiVersion: apps/v1
kind: DaemonSet
metadata:
name: example-daemonset
namespace: kube-system
spec:
selector:
matchLabels:
app: example
template:
metadata:
labels:
app: example
spec:
containers:
- name: example-container
image: nginx:1.25.2
resources:
limits:
cpu: "100m"
memory: "200Mi"
ports:
- containerPort: 80