k8s中DaemonSet控制器
? DaemonSet控制器確保k8s集群中,所有節點都運行一個相同的pod,當node節點增加時,新節點也會自動創建一個pod,當node節點從集群移除,對應的pod也會自動刪除。刪除DaemonSet也會刪除創建的pod。
? DaemonSet控制器會監聽k8s的ds對象、pod對象、node對象,這些被監聽的對象變動,就會出發syncLoop循環讓k8s集群朝著ds對象魔術的狀態進行演進。
應用場景:
? 在集群每個節點運行存儲,如glusterd或ceph
? 在每個節點運行日志收集組件:如flunentd、logstash、filebeat
? 在每個節點運行監控組件,如Prometheus、NodeExporter、collectd
? 以fluntend測試
? 上傳鏡像fluentd到harbor
vi daemonset-flunted.yaml
kind: DaemonSet
metadata:name: fluentd-elasticsearchnamespace: kube-system # 定義命名空間labels:k8s-app: fluentd-logging # 定義標簽
spec:selector:matchLabels:name: fluentd-elasticsearch # 匹配標簽,與pod一致template:metadata:labels:name: fluentd-elasticsearch # pod標簽spec:tolerations: # 定義容忍度,因為要在master上部署- key: node-role.kubernetes.io/control-planeoperator: Existseffect: NoSchedule # 容忍度調度containers:- name: fluentd-elasticsearchimage: 172.16.80.140/fluented/fluented:v2.5.1 # harbor鏡像地址resources: # 資源配額limits:memory: 200Mirequests:cpu: 100mmemory: 200MivolumeMounts: # 掛載卷- name: varlogmountPath: /var/log # 監控/var/log- name: varlibdockercontainersmountPath: /var/lib/docker/containers # 監控容器日志readOnly: trueterminationGracePeriodSeconds: 30volumes:- name: varloghostPath:path: /var/log- name: varlibdockercontainershostPath:path: /var/lib/docker/containers
手工刪除一個pod,ds就會自動創建一個新的pod