Kubernetes ---- Pod控制器之DaemonSet

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章