Pod控制器詳解(DaemonSet)
DaemonSet(DS)
DaemonSet類型的控制器可以保證在集群中的每一臺(或指定)節(jié)點上都運行一個副本。一般適用于日志收集、節(jié)點監(jiān)控等場景。
也就是說,如果一個Pod提供的功能是節(jié)點級別的(每個節(jié)點都需要且只需要一個),那么這類Pod就適合使用DaemonSet類型的控制器創(chuàng)建。

DaemonSet控制器的特點:
- 每當(dāng)向集群中添加一個節(jié)點時,指定的 Pod 副本也將添加到該節(jié)點上
- 當(dāng)節(jié)點從集群中移除時,Pod 也就被垃圾回收了
資源清單文件
下面先來看下DaemonSet的資源清單文件
apiVersion: apps/v1 # 版本號 kind: DaemonSet # 類型 metadata: # 元數(shù)據(jù) name: namespace: labels: #標(biāo)簽 controller: daemonset spec: # 詳情描述 revisionHistoryLimit: 3 # 保留歷史版本 updateStrategy: # 更新策略 type: RollingUpdate # 滾動更新策略 rollingUpdate: # 滾動更新 maxUnavailable: 1 # 最大不可用狀態(tài)的 Pod 的最大值,可以為百分比,也可以為整數(shù) selector: # 選擇器,通過它指定該控制器管理哪些pod matchLabels: # Labels匹配規(guī)則 app: nginx-pod matchExpressions: # Expressions匹配規(guī)則 - {key: app, operator: In, values: [nginx-pod]} template: # 模板,當(dāng)副本數(shù)量不足時,會根據(jù)下面的模板創(chuàng)建pod副本 metadata: labels: app: nginx-pod spec: containers: - name: nginx image: nginx:1.17.1 ports: - containerPort: 80
創(chuàng)建
創(chuàng)建pc-daemonset.yaml,內(nèi)容如下:
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
創(chuàng)建并觀察
創(chuàng)建daemonset [root@master ~]# kubectl create -f pc-daemonset.yaml # 查看daemonset [root@master ~]# kubectl get ds -n dev -o wide # 查看pod,發(fā)現(xiàn)在每個Node上都運行一個pod [root@master ~]# kubectl get pods -n dev -o wide # 刪除daemonset [root@master ~]# kubectl delete -f pc-daemonset.yaml

參考
黑馬B站k8s課程https://www.bilibili.com/video/BV1Qv41167ck/
https://gitee.com/yooome/golang/blob/main/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B-%E8%B0%83%E6%95%B4%E7%89%88/k8s%E8%AF%A6%E7%BB%86%E6%95%99%E7%A8%8B.md
https://www.yuque.com/fairy-era/yg511q/xyqxge
浙公網(wǎng)安備 33010602011771號