资源控制器之DaemonSet


DaemonSet 确保全部(或者一些) Node上运行一个 Pod 的副本,当有 Node 加入集群时,也会为他们新增一个 Pod,当有 Node 从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod 。

DaemonSet 通过在集群中的每个节点上运行至少一个 Pod 来提供了一个更本地化的服务或功能。这在需要在每个节点上执行特定任务的情况下非常有用,比如节点监控或日志收集。

61.png

DaemonSet 应用示例:

vim daemonset.yaml

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: deamonset
  labels:
    app: daemonset
spec:
  selector:
    matchLabels:
      name: deamonset
  template:
    metadata:
      labels:
        name: deamonset
    spec:
      containers:
      - name: daemonset
        image: docker.io/nginx

创建完成后,查看pod状态:

62.png

DaemonSet 在 Kubernetes 中是一个很有用的资源,特别是在以下场景中:

1. 日志收集和监控

例如,可以在每个节点上运行一个 Fluentd、Fluent Bit 或者 Prometheus 代理来进行日志收集和监控。

2. 网络代理

网络代理如 Cilium、Flannel 或 Calico 可能需要在每个节点上运行,以便管理 Pod 之间的网络通信。

3. 存储

如 GlusterFS 或 Ceph 也需要在每个节点上运行一定的存储代理,以便提供存储解决方案。

4. 安全代理

安全代理如 Istio Sidecar 可以通过 DaemonSet 确保每个节点上至少有一个实例来保障网络安全。

监控与调试

通过 kubectl get daemonset <daemonset-name> 可以查看 DaemonSet 的状态。此外,kubectl describe 也可以获取更多的详细信息,帮助调试任何可能的问题。

通过运行 DaemonSet,您可以确保在集群中每个节点上都运行了必要的服务或代理,从而增强了集群的功能和安全性。