#DaemonSet 也是 Kubernetes 提供的一个 default controller,它实际是做一个守护进程的控制器
#首先能保证集群内的每一个节点都运行一组相同的 pod,主要用于与在所有node执行所有相同的操作的场景,DaemonSets可以指定运行在某个节点上;
#当增加node节点时,这个节点会自动创建一个pa副本
#当删除node节点时,pa副本会自动删除
#而且它会跟踪每个 pod 的状态,当这个 pod 出现异常、Crash 掉了,会及时地去 recovery 这个状态。
#删除daemonset会删除它们创建的pod
#使用场景
# 需要在每一个node节点运行一个存储服务,例如gluster,ceph
# 需要在每一个node节点运行一个日志收集服务,例如fluentd,logstash
# 需要在每一个node节点运行一个监控服务,例如Prometheus Node Exporter,zabbix agent等
apiVersion: apps/v1
kind: DaemonSet
metadata:
# DaemonSet的名称
name: daemonset-nginx
# 命名空间
namespace: kube-system
labels:
# DaemonSet 标签
la-nginx: daemonset-nginx
spec:
# 标签选择器
selector:
# 匹配拥有哪些标签的pod
matchLabels:
# 使用 k2-nginx: daemonset-nginx2 标签的template
k2-nginx: daemonset-nginx2
# 定义模板
template:
metadata:
labels:
# 定义标签
k2-nginx: daemonset-nginx2
spec:
# DaemonSet将在node1节点上创建Pod
nodeName: localhost7F.localdomain
# 定义容忍度,容忍哪些污点
tolerations:
- key: node-role.kubernetes.io/master
effect: NoSchedule
# 定义容器
containers:
- name: c-nginx
image: nginx
使用的是宿主机的IP地址。可以不创建server.
[root@localhost7C prometheus]# kubectl get pod -A -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system kube-flannel-ds-amd64-2262m 1/1 Running 6 29d 192.168.80.150 192.168.80.150 <none> <none>
kube-system kube-flannel-ds-amd64-69qjr 1/1 Running 3 29d 192.168.80.160 192.168.80.160 <none> <none>
kube-system kube-flannel-ds-amd64-6bsnm 1/1 Running 5 29d 192.168.80.140 192.168.80.140 <none> <none>
kube-system kube-flannel-ds-amd64-6cq5q 1/1 Running 3 29d 192.168.80.120 192.168.80.120 <none> <none>
kube-system kube-flannel-ds-amd64-ckmzs 1/1 Running 7 29d 192.168.80.170 192.168.80.170 <none> <none>
kube-system kube-flannel-ds-amd64-xddjr 1/1 Running 4 29d 192.168.80.130 192.168.80.130 <none> <none>