DaemonSet
官方介紹:https://kubernetes.io/zh/docs/concepts/workloads/controllers/daemonset/
DaemonSet確保全部(或者某些)節點上運行一個 Pod 的副本。當有節點加入集羣時, 也會爲他們新增一個 Pod 。當有節點從集羣移除時,這些 Pod 也會被回收。刪除 DaemonSet 將會刪除它創建的所有 Pod。
下面的案例是在每個節點上運行日誌收集工具"filebeat"
通過YAML文件創建DaemonSet控制器.
apiVersion: apps/v1 kind: DaemonSet metadata: name: ds-demo namespace: default spec: selector: matchLabels: app: filebeat release: stable template: metadata: labels: app: filebeat release: stable spec: containers: - name: filebeat-container image: ikubernetes/filebeat:5.6.5-alpine imagePullPolicy: IfNotPresent env: - name: REDIS_HOST value: redis.default.svc.cluster.local - name: REDIS_LOG_LEVEL value: info
# 查詢Pod會發現有兩個,因爲我們有兩個node,這兩個node上分別運行了一個Pod.
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
myapp-ds-rk6zw 1/1 Running 1 15h
myapp-ds-s5nxl 1/1 Running 1 15h
ds.spec.template.spec.hostNetwork <boolean> # 如果設爲True,則會使用宿主機的網絡名稱空間.
動態升級:
DaemonSet也可以像Deployment一樣動態的進行升級,也就是更改image;
$ kubectl set image ds myapp-ds filebeat=ikubernetes/filebeat:5.6.6-alpine