DaemonSets 是一种强大的 Kubernetes 资源,可确保特定 Pod 在集群的所有(或部分)节点上运行。这对需要在每个节点上运行的日志或监控代理等服务尤其有用。


下面的代码片段说明了如何创建一个 DaemonSet,在每个节点上部署一个简单的日志代理。

[代码清单]

apiVersion: apps/v1
kind: DaemonSet
metadata:
 name: logging-agent
spec:
 selector:
  matchLabels:
   app: logging-agent
 template:
  metadata:
   labels:
     app: logging-agent
  spec:
   containers:
   \- name: log-agent
     image: fluentd:latest

[执行结果]

此 YAML 文件定义了名为 logging-agent 的 DaemonSet,它会在集群的每个节点上部署 Fluentd 容器。

在本示例中,DaemonSet 可确保日志代理容器在每个节点上运行,从而收集这些节点上运行的所有应用程序的日志。如果集群中添加了新节点,Kubernetes 会自动在该节点上调度日志代理 Pod。反之,如果某个节点被移除,相应的日志代理 Pod 也会被终止。

[小知识]

使用案例: DaemonSets 的常见用例包括日志收集、监控和网络代理。

节点选择器: 您可以在 DaemonSet 中使用节点选择器或亲缘规则来控制 Pod 应在哪些节点上运行,从而实现更大的灵活性和资源管理。