概念:DaemonSet类型的控制器可以保证集群中的每一台(或指定)节点上都运行一个副本、一般适用于日志收集、节点监控场景等、也就是说、如果一个pod
提供的功能是节点级别的(每个节点都需要且只需要一个)、那么这类pod就适合使用DaemonSet类型的控制器创建
DaemonSet的特点:·每当向集群中添加一个node节点时、DS控制器指定的pod副本就会自动往该新增的node节点上新增pod·当节点从集群中移除时、pod也就被回收了
DamonSet的yaml清单:
--------------------------------------------------------------------
apiVersion: apps/v1
king: DaemonSet
metadata:name: daemonsetnamespace: devlabels:app: nginx-podspec:revisionHistoryLimit: 3 #保留的历史版本updataStrategy: #更新策略(重建更新、滚动更新、金丝雀发布)type: RollingUpdata #滚动更新roolingUpdata:maxUnavailable: 1 #最大不可用状态的pod的最大值、可以为百分比、也可以为整数selector: #选择器matchLabels: #标签匹配规则app: nginx-podmatchExpressions: #Expressions匹配规则- {key: app, operator: In, values: [nginx-pod]}template: #pod模板metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.17.1port:- containerPort: 80
-------------------------------------------------------------------------------------------------------------------
案例
1、创建ds的yanml文件:
----------------------------------------------------
apiVersion: apps/v1
kind: DaemonSet
metadata:name: pc-daemonsetnamespace: devspec:selector:matchLabels:app: nginx-podtemplate:metadata:labels:app: nginx-podspec:containers:- name: nginximage: nginx:1.17.1
------------------------------------------------------
2、创建ds控制器: kubectl create -f pc-daemonset.yaml
3、查看ds:kubectl get ds -ndev
--------------------------------------------------------------------------------------
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
pc-daemonset 1 1 1 1 1 <none> 49s#注意由于这里只有一个node节点所以ds指创建了一个pod、如果有多个node节点ds就会自动创建对应的pod
#ds会保证每一个node上都运行一个pod
---------------------------------------------------------------------------------------------------4、删除ds:kubectl delete -f pc-daemonset.yaml