kubernets之DaemonSet
阅读原文时间:2023年07月08日阅读:1

一  k8s资源之DaemonSet

  1.1 介绍认识DaemonSet

    DaemonSet可以理解为一种比较特殊的RS,DaemonSet的作用是永远保持被指定的节点只运行一个pod的副本,可用作集群的监控和日志收集等作用

  另外一点的是,可能有些节点被设置为不可调度pod的时候,仍然可以使用DaemonSet来调度到该节点,因为DS可以绕过调度器进行调度到响应的节点上

二 创建一个DaemonSet

  2.1 实现一个DaemonSet的yml的文件来通过该文件来创建一个DaemonSet

apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
name: ex-daemonset
spec:
selector:
matchLabels:
app: k8s
template:
metadata:
labels:
app: k8s
spec:
# nodeSelector:
# machine: centos
containers:
- name: main
image: luksa/ssd-monitor

  2.2 查看创建出来的DaemonSet

[root@node01 Chapter04]# k get po --show-labels -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES LABELS
ex-daemonset-dv4p5 1/1 Running 0 7m32s 10.244.1.11 node02 app=k8s,controller-revision-hash=697679dd9c,pod-template-generation=1
ex-daemonset-dzfjh 1/1 Running 0 7m32s 10.244.2.10 node01 app=k8s,controller-revision-hash=697679dd9c,pod-template-generation=1

可以看到即使没指定副本数量,仍然在每个node上面创建出来了一个pod

  2.3 指定DaemonSet到指定的node而非所有的node节点的配置

apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
name: ex-daemonset
spec:
selector:
matchLabels:
app: k8s
template:
metadata:
labels:
app: k8s
spec:
nodeSelector:
machine: centos
containers:
- name: main
image: luksa/ssd-monitor

  2.4 当设置了nodeSelector的时候只有node节点带有machine的centos机器才会被调度上去

[root@node01 Chapter04]# k get ds
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
ex-daemonset 0 0 0 0 0 machine=centos 31s

[root@node01 Chapter04]# k get po
No resources found in default namespace.

  可以看到当在创建的daemonset里面添加nodeselector的时候,pod只会被调度到带有标签machine=centos的上面,而现在的节点都没有该标签,所以不会调度到任何节点上

  2.5 修改其中一个node的标签,观察是否能够调度到该节点上

[root@node01 Chapter04]# k label node node02 machine=centos
node/node02 labeled

[root@node01 Chapter04]# k get po
NAME READY STATUS RESTARTS AGE
ex-daemonset-xbvhh 0/1 ContainerCreating 0 5s

 当向node添加标签之后,马上就可以调度到该node节点了

  2.6 删除该node节点上面的标签,观察该pod是否也会被删除

[root@node01 Chapter04]# k label node node02 machine=debian --overwrite
node/node02 labeled

[root@node01 Chapter04]# k get po -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ex-daemonset-xbvhh 1/1 Terminating 0 2m38s 10.244.1.13 node02

  可以看到当修改了标签之后,由于node 的标签已经不和DS匹配,响应的pod也被删除