1. 程式人生 > 其它 >k8s之DaemonSet

k8s之DaemonSet

DS介紹

DS型別的控制器可以保證叢集中的每一臺(或指定)節點上都執行一個副本,一般適用於日誌收集,節點監控等場景。也就是說,如果一個pod提供的功能是節點級別的(每個節點都需要且只需要一個),那麼這類pod就適合使用DS型別的控制器建立

DaemonSet控制器的特點

  • 每當向叢集中新增一個節點時,指定的pod副本也將新增到該節點上
  • 當節點從叢集中移除時,pod就被垃圾回收

DaemonSet資源清單檔案

apiVersion: apps/v1  #版本號
kind: DaemonSet   #型別
metadata:  #元資料
  name:
  namespace:
  labels:
    controller: daemonset
spec:  #詳情描述
  revisionHistoryLimit: 
3 #保留歷史版本 updateStrategy: #更新策略 type: RollingUpdate #滾動更新策略 rollingUpdate: #滾動更新 maxUnavailable: 1 #最大不可用狀態的pod值,可以為百分比,也可以為整數 selector: #選擇器,通過它指定該控制器管理哪些pod matchLabels: #labels匹配規則 app: nginx-pod matchExpressions: #Expressions匹配規則 - {key: app, operator: In, values: [nginx-pod]} template: #模板,當副本數量不足時,會根據下面的模板建立pod副本 metadata: labels: app: nginx
-pod spec: containers: - name: nginx image: nginx:1.17.1 ports: - containerPort: 80

使用DS

建立pc-daemonset.yaml,內容如下

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: pc-daemonset
  namespace: dev
spec:
 selector:
  matchLabels:
    app: nginx-pod
 template:
metadata:
labels: app: nginx
-pod spec: containers: - name: nginx image: nginx:1.17.1

使用配置檔案

[root@master ~]# vim pc-daemonset.yaml 
[root@master ~]# kubectl create -f pc-daemonset.yaml 
daemonset.apps/pc-daemonset created
[root@master ~]# kubectl get ds pc-daemonset -n dev
NAME           DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
pc-daemonset   2         2         2       2            2           <none>          36s

檢視pod,可以發現node1和node2上都配置了daemonset

[root@master ~]# kubectl get pod -n dev -o wide
NAME                 READY   STATUS    RESTARTS   AGE    IP           NODE    NOMINATED NODE   READINESS GATES
pc-daemonset-bqrk7   1/1     Running   0          109s   10.244.1.2   node1   <none>           <none>
pc-daemonset-dx4qh   1/1     Running   0          109s   10.244.2.2   node2   <none>           <none>