1. 程式人生 > 實用技巧 >kubernets之DaemonSet

kubernets之DaemonSet

一 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 <none> <none> app=k8s,controller-revision-hash=697679dd9c,pod-template-generation=1 ex-daemonset-dzfjh 1/1 Running 0 7m32s 10.244.2.10 node01 <none> <none> 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 <none> <none>

  可以看到當修改了標籤之後,由於node 的標籤已經不和DS匹配,響應的pod也被刪除