DaemonSet 确保全部(或者一些) Node上运行一个 Pod 的副本,当有 Node 加入集群时,也会为他们新增一个 Pod,当有 Node 从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod 。
DaemonSet 通过在集群中的每个节点上运行至少一个 Pod 来提供了一个更本地化的服务或功能。这在需要在每个节点上执行特定任务的情况下非常有用,比如节点监控或日志收集。
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状态:
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,您可以确保在集群中每个节点上都运行了必要的服务或代理,从而增强了集群的功能和安全性。