首頁 > 軟體

DaemonSet服務守護行程的使用場景

2022-03-18 19:00:28

DaemonSet又是什麼?

DaemonSet是守護行程集,簡寫為ds;是在所有的節點或者匹配的節點上都部署一個Pod。

[root@k8s-master01 ~]# kubectl get nodes
NAME           STATUS   ROLES    AGE   VERSION
k8s-master01   Ready    <none>   8d    v1.23.3
k8s-master02   Ready    <none>   8d    v1.23.3
k8s-master03   Ready    <none>   8d    v1.23.3
k8s-node01     Ready    <none>   8d    v1.23.3
k8s-node02     Ready    <none>   8d    v1.23.3

比如從上段程式碼中可以看到我們叢集有五個節點,Daemon會在這五個節點都部署一個Pod;又或者我們只需要在node節點部署,那麼可以利用標籤的方式只在node節點上部署Pod。比如我們的calico網路外掛就是用DaemonSet部署的。

DaemonSet 的使用場景:

  • 監控資料收集:需要每個節點上收集資料
  • 監控節點狀態
  • 負責每個節點的網路、儲存等元件,如calico、ceph等

DaemonSet的使用:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.18.0
        imagePullPolicy: Always
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      dnsPolicy: ClusterFirst
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      terminationGracePeriodSeconds: 30

注意:沒有副本數的引數

建立一個ds;然後檢視可以看到每個節點上都生成了一個nginx副本。

[root@k8s-master01 ~]# kubectl create -f nginx-ds.yaml 
daemonset.apps/nginx created
[root@k8s-master01 ~]# kubectl get pod -o wide 
NAME          READY   STATUS    RESTARTS         AGE    IP               NODE           NOMINATED NODE   READINESS GATES
busybox       1/1     Running   21 (2m45s ago)   8d     172.27.14.193    k8s-node02     <none>           <none>
nginx-2c7xf   1/1     Running   0                2m2s   172.25.92.79     k8s-master02   <none>           <none>
nginx-kjdx8   1/1     Running   0                2m2s   172.25.244.200   k8s-master01   <none>           <none>
nginx-wwltz   1/1     Running   0                2m2s   172.27.14.199    k8s-node02     <none>           <none>
nginx-zl2lr   1/1     Running   0                2m2s   172.18.195.19    k8s-master03   <none>           <none>
nginx-znprg   1/1     Running   0                2m2s   172.17.125.7     k8s-node01     <none>           <none>

需要注意的地方:

  • restartPolicy欄位預設是Always
  • Daemon Set沒有副本數
  • 最大失敗數需要寫數位,建議1
  • 更新策略建議使用OnDelete,保留歷史版本為1

其他地方與Deployment和StatefulSet類似,就不說了,可以看我另外兩篇!

以上就是DaemonSet服務守護行程的使用場景的詳細內容,更多關於DaemonSet服務守護行程的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com