daemonset控制器
#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>