DaemonSet 的作用是在每台 node 都运行一个指定的 pod。跟 ReplicaSet 一样,它也用 pod template 来定义 pod。
可以通过 nodeSelector
来 使 DaemonSet 只运行在部分 node 上。当 node 的 label 变化时,比如被打上 DaemonSet 需要的 label,或者该 label 被去除时,k8s 会自动检测,并在相应的 node 上创建 pod 或者删除 pod。
DaemonSet 不需要定义 replicas count,因为它只在每台 node 上运行一个 pod。它不通过 scheduler 来调度,因此即使一台 node 被标记为 unschedulable 来避免 pod 被调度到上面部署时,DaemonSet 定义的 pod 仍然会被部署上去。