Kubernetes資源對象之DaemonSet


簡介

DaemonSet好比Kubernetes集群Node的守護進程,可以保證在每個Node上(或者一部分Node上)都運行同一個Pod且只運行一個。適用的場景主要是一些agent,如日志收集的agent、監控的agent等。

daemonset 配置示例

daemonset的配置示例如下:

apiVersion: apps/v1 
kind: DaemonSet
metadata:
  name: fluentd
spec:
  selector:
      matchLabels:
        name: fluentd
  template:
    metadata:
      labels:
        name: fluentd 
    spec:
      nodeSelector:
        type: prod 
      containers:
      - name: fluentd
        image: gcr.azk8s.cn/google-containers/fluentd-elasticsearch:1.20
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 200Mi

Daemonset 滾動升級

滾動升級特性是Kubernetes服務發布的一個很有用的特性,而Kubernetes從1.6開始支持 DaemonSet的滾動升級,1.7開始支持DaemonSet滾動升級的回滾。

Daemonset升級策略

DaemonSet目前有兩種升級策略,可以通過.spec.updateStrategy.type指定:

  • OnDelete: 該策略表示當更新了DaemonSet的模板后,只有手動刪除舊的DaemonSet Pod才會創建新的DaemonSet Pod
  • RollingUpdate: 該策略表示當更新DaemonSet模板后會自動刪除舊的DaemonSet Pod並創建新的DaemonSetPod

示例

要使用DaemonSet的滾動升級,需要 .spec.updateStrategy.type設置為RollingUpdate。 也可以進一步設置.spec.updateStrategy.rollingUpdate.maxUnavailable,默認值為1; 設置.spec.minReadySeconds默認為0,用於指定認為DaemoSet Pod啟動可用所需的最小的秒數。

示例如下:

apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: test-ds
  namespace: kube-system
  labels:
    tier: node
    app: test
spec:
  updateStrategy:
    type: RollingUpdate
  selector:
    matchLabels:
      ...
  template:
    ...

然后執行:

kubectl apply -f test-ds.yaml

可以使用如下命令查看滾動升級狀態:

kubectl rollout status dsd/test-ds -n kube-system


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM