k8s之DaemonSet
阿新 • • 發佈:2021-08-08
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>