DaemonSet节点守护进程
我们知道,Pod部署在哪个节点上是完全由k8s来决定的,但如果我们现在要实现这样一个功能,部署一组Pod到集群中用来监控集群节点的CPU、内存能性能指标,这就要求其中每个集群节点需要分配一个Pod,那么显然默认的Deployment方式部署的Pod不能满足该要求。出于类似的需求,k8s中还提供了守护进程(DaemonSet)的概念。DaemonSet能够保证在k8s集群的每个符合条件的节点上运行一个相同的Pod,其典型应用就是节点监控和日志收集。
注:DeamonSet也支持通过标签方式只在特定一组节点上运行,比如只监控有标签disk=ssd的存储节点。
DeamonSet的特点
- 为集群中每个符合条件的节点分配相同的守护进程Pod
- 符合条件的节点增加,自动部署守护进程Pod
DaemonSet的例子
下面是一个DaemonSet的示例配置文件。
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: daemon-monitor
spec:
selector:
matchLabels:
app: daemon-monitor
template:
metadata:
labels:
app: daemon-monitor
spec:
containers:
- name: nginx
image: nginx:1.20
ports:
- containerPort: 80
可以看到,DeamonSet的配置和Deployment大同小异,只不过是k8s对其调度有特殊的处理。
部署后,我们可以查看到类似如下的相关信息。

这里我们的k8s集群有3个节点,因此该守护进程的Pod就部署了3个副本。
注:这里使用的nginx:1.20镜象没有特殊意义,仅仅是为了测试。
DaemonSet的相关操作
通过yaml配置文件添加DaemonSet。
kubectl apply -f <yaml配置文件>
查看当前所有DaemonSet。
kubectl get ds
查看DaemonSet详细信息。
kubectl describe ds <DaemonSet名称>
删除DaemonSet。
kubectl delete ds <DaemonSet名称>
注:删除DaemonSet后,对应Pod会自动销毁、删除。
作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。