Deployment 部署的副本 Pod 會分布在各個 Node 上,每個 Node 都可能運行好幾個副本。DaemonSet 的不同之處在於:每個 Node 上最多只能運行一個副本。
DaemonSet 的典型應用場景有:
-
在集群的每個節點上運行存儲 Daemon,比如 glusterd 或 ceph。
-
在每個節點上運行日志收集 Daemon,比如 flunentd 或 logstash。
-
在每個節點上運行監控 Daemon,比如 Prometheus Node Exporter 或 collectd。
其實 Kubernetes 自己就在用 DaemonSet 運行系統組件。執行如下命令:
kubectl get daemonset --namespace=kube-system
DaemonSet kube-flannel-ds
和 kube-proxy
分別負責在每個節點上運行 flannel 和 kube-proxy 組件。
因為 flannel 和 kube-proxy 屬於系統組件,需要在命令行中通過 --namespace=kube-system
指定 namespace kube-system
。如果不指定則只返回默認 namespace default
中的資源。
下節我們詳細分析 kube-flannel-ds
和 kube-proxy
這兩個 DaemonSet。
書籍:
1.《每天5分鍾玩轉Docker容器技術》
https://item.jd.com/16936307278.html
2.《每天5分鍾玩轉OpenStack》
https://item.jd.com/12086376.html