第七章: Kubernetes - DaemonSet 控制器
第七章 Kubernetes DaemonSet 管理
7.1 DaemonSet 概述
DaemonSet 是一种 Kubernetes 控制器,确保在所有或部分节点上运行一个 Pod 的副本。DaemonSet 常用于部署那些需要在每个节点上运行的守护进程,如日志收集、监控工具或存储系统。
7.1.1 DaemonSet 的工作原理
DaemonSet 会在集群中的每个节点上启动一个Pod副本,并确保新的节点加入时,自动为其创建一个 Pod。如果某个节点从集群中移除,DaemonSet 会删除该节点上的 Pod。当删除 DaemonSet 时,它会删除所有由该 DaemonSet 管理的 Pod。
DaemonSet 会确保其管理的 Pod 在每个节点上都有一个副本。举个例子,当集群新增节点时,DaemonSet 会自动在该节点上创建一个对应的 Pod。反之,当节点退出时,DaemonSet 会删除这个节点上原本运行的 Pod。
7.1.2 DaemonSet 常见应用场景
DaemonSet 通常用于以下几种场景:
-
集群存储守护进程:例如,Ceph 或 GlusterFS 这样的分布式存储系统需要在每个节点上运行守护进程。
-
CNI 网络插件:如 Calico、Flannel 等网络插件需要在每个节点上运行,以确保网络的正常连接和管理。
-
日志收集:如 Fluentd 或 Filebeat 等日志收集工具,需要在每个节点上运行并收集日志。
-
监控守护进程:如 Node Exporter 或其他监控工具需要在每个节点上运行,用于收集节点和容器的健康状态及性能指标。
-
服务暴露:部署如 Ingress NGINX 等服务暴露工具,确保每个节点都能进行流量代理和负载均衡。
7.2 使用 DaemonSet
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app: nginx
name: nginx
spec:
revisionHistoryLimit: 3 # 保留的历史修订版本数量
selector:
matchLabels:
app: nginx # 标签选择器,确保匹配到正确的Pod模板
template:
metadata:
labels:
app: nginx # Pod的标签
spec:
containers:
- image: nginx:latest
imagePullPolicy: IfNotPresent
name: nginx
restartPolicy: Always
nodeSelector: # 指定节点选择器(选择特定的节点)
disktype: ssd # 只在具有“disktype: ssd”标签的节点上运行
nodeSelector 是用来指定Pod需要运行在哪些节点上的条件。通过定义节点标签来控制 Pod 的调度,例如上述配置中,disktype: ssd 表示 Pod 只会调度到标签为 disktype: ssd 的节点上。
当给node节点打上标记时,pod满足条件自动部署到相应节点上。
更多推荐



所有评论(0)