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 应在哪些节点上运行,从而实现更大的灵活性和资源管理。