在后续我们会说如何收集kubernetes中的pod日志,在收集日志的时候,需要在每个k8s node节点上运行一个收集日志的进程 ,如fluentd。我们知道在通常情况下,kubernetes基于它内部的调度算法来自动分配pod运行在哪个节点上,没有办法保证在每个node上运行一个fluentd pod。这个时候,Daemon Sets就派上了用场。简单来说,Daemon Sets就是让一个pod在所有的k8s集群节点上都运行一个。

我们直接看下面的示例,在所有节点上都启动一个busybox:

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: busybox
spec:
  template:
    metadata:
      labels:
        app: busybox
    spec:
      containers:      - name: busybox
        p_w_picpath: myhub.mingyuanyun.com/library/busybox
        command:        - sleep
        - "3600"

我们通过kubectl get daemonset可以看到启动了6个busybox的pod,因为我们有6个kubernetes节点。而事实上,我们并没有指定复制的个数,这就是daemon sets的作用:

NAME      DESIRED   CURRENT   READY     NODE-SELECTOR   AGE
busybox   6         6         6                   1m