Kubernetes DaemonSet

本文将介绍 Kubernetes 中的 DaemonSet,即守护者集合。

一、什么是 DaemonSet?

在现实场景中,存在守护应用这一类特殊的应用,它们需要和运算节点一一对应才能够正确工作,例如网络应用、监控应用(监控节点状态)、日志应用(搜集节点运行产生的日志数据)、安全应用(执行安全审计、入侵检查、漏洞扫描等)等。

对于这类应用的部署,

  • 手动指派 Pod 至运算节点是不现实且不优雅的
  • 使用 Deployment 无法实现效果,因为 Deployment 只能保证 Pod 的个数,但无法保证如何调度 Pod 至节点上

因此,Kubernetes 设计了 DaemonSet,它在形式上与 Deployment 类似,都是管理控制 Pod,但调度策略上存在区别,DaemonSet 会在每一个节点上运行且只运行一个 Pod。

二、DaemonSet 的配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# Kubernetes的KPI版本号
apiVersion: apps/v1
# 资源对象的类型 【Pod、Node、Job、Service等】
kind: DaemonSet
# 元信息,用于标记资源对象
metadata:
# 名称
name: test-ds
# 说明,描述资源对象的目标状态
spec:
# 实例数量
replicas: 2
# 筛选器
selector:
matchLabels:
app: ngx-dep
# Pod模版,将根据该模版创建Pod
template:
metadata:
labels:
app: ngx-dep

三、静态 Pod

静态 Pod 也可以实现类似 DaemonSet 的效果。

静态 Pod 非常特殊,不受 Kubernetes 系统的管控,不与 apiserver、scheduler 发生关系。配置它的方式是在节点的 /etc/kubernetes/manifests 目录下添加 YAML 文件。

静态 Pod 不受 Kubernetes 系统的管控,必须在节点上纯手动部署,应当慎用。

参考

  • Kubernetes
  • Kubernetes 入门实战课
  • 深入剖析 Kubernetes