1、理论基础
DaemonSet 确保每个节点上运行一个 Pod 的副本。 当有节点加入集群时, 也会为他们新增一个 Pod 。 当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。
DaemonSet 的一些典型用法:
- 在每个节点上运行集群守护进程
- 在每个节点上运行日志收集守护进程
- 在每个节点上运行监控守护进程
一种简单的用法是为每种类型的守护进程在所有的节点上都启动一个 DaemonSet。
2、创建DaemonSet
可以使用Deployment的yaml文件作为范例,更改kind 为DaemonSet,删除replicas 行
[root@clientvm ~]# cat DS.yamlapiVersion: apps/v1kind: DaemonSetmetadata:name: nginxnamespace: mytestlabels:k8s-app: nginx-webspec:selector:matchLabels:name: nginxtemplate:metadata:labels:name: nginxspec:containers:- name: nginximage: nginx[root@clientvm ~]# kubectl apply -f DS.yamldaemonset.apps/nginx created[root@clientvm ~]# kubectl get pod -n mytest -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESnginx-4jspl 1/1 Running 0 50s 10.244.1.25 worker1.example.com <none> <none>nginx-l965c 1/1 Running 0 50s 10.244.2.35 worker2.example.com <none> <none>[root@clientvm ~]# kubectl get daemonsets.apps -n mytestNAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGEnginx 2 2 2 2 2 <none> 103s## 测试删除Pod[root@clientvm ~]# kubectl delete pod -n mytest nginx-4jsplpod "nginx-4jspl" deleted[root@clientvm ~]# kubectl get pod -n mytestNAME READY STATUS RESTARTS AGEnginx-hgjtj 0/1 ContainerCreating 0 6snginx-l965c 1/1 Running 0 2m57s
