国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

k8s控制器之DaemonSet--第五彈更新 DaemonSet

這篇具有很好參考價(jià)值的文章主要介紹了k8s控制器之DaemonSet--第五彈更新 DaemonSet。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

DaemonSet 更新策略

DaemonSet 有兩種更新策略:

  • OnDelete: 使用 OnDelete 更新策略時(shí),在更新 DaemonSet 模板后,只有當(dāng)你手動(dòng)刪除老的 DaemonSet pods 之后,新的 DaemonSet Pod 才會(huì)被自動(dòng)創(chuàng)建。跟 Kubernetes 1.6 以前的版本類似。
  • RollingUpdate: 這是默認(rèn)的更新策略。使用 RollingUpdate 更新策略時(shí),在更新 DaemonSet 模板后, 老的 DaemonSet Pod 將被終止,并且將以受控方式自動(dòng)創(chuàng)建新的 DaemonSet Pod。 更新期間,最多只能有 DaemonSet 的一個(gè) Pod 運(yùn)行于每個(gè)節(jié)點(diǎn)上。

執(zhí)行滾動(dòng)更新

要啟用 DaemonSet 的滾動(dòng)更新功能,必須設(shè)置 .spec.updateStrategy.typeRollingUpdate

你可能想設(shè)置 .spec.updateStrategy.rollingUpdate.maxUnavailable (默認(rèn)為 1), .spec.minReadySeconds (默認(rèn)為 0) 和 .spec.updateStrategy.rollingUpdate.maxSurge (默認(rèn)為 0)。

創(chuàng)建帶有 RollingUpdate 更新策略的 DaemonSet

下面的 YAML 包含一個(gè) DaemonSet,其更新策略為 'RollingUpdate

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd-elasticsearch
  namespace: kube-system
  labels:
    k8s-app: fluentd-logging
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  updateStrategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
    spec:
      tolerations:
      # 這些容忍度設(shè)置是為了讓該守護(hù)進(jìn)程集在控制平面節(jié)點(diǎn)上運(yùn)行
      # 如果你不希望自己的控制平面節(jié)點(diǎn)運(yùn)行 Pod,可以刪除它們
      - key: node-role.kubernetes.io/master
        effect: NoSchedule
      containers:
      - name: fluentd-elasticsearch
        image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
        volumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
      terminationGracePeriodSeconds: 30
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers

檢查了 DaemonSet 清單中更新策略的設(shè)置之后,創(chuàng)建 DaemonSet:

kubectl create -f fluentd-daemonset.yaml

另一種方式是如果你希望使用 kubectl apply 來更新 DaemonSet 的話, 也可以使用 kubectl apply 來創(chuàng)建 DaemonSet:

kubectl apply -f fluentd-daemonset.yaml

檢查 DaemonSet 的滾動(dòng)更新策略

首先,檢查 DaemonSet 的更新策略,確保已經(jīng)將其設(shè)置為 RollingUpdate:

kubectl get ds/fluentd-elasticsearch -o go-template='{{.spec.updateStrategy.type}}{{"\n"}}' -n kube-system

如果還沒在系統(tǒng)中創(chuàng)建 DaemonSet,請(qǐng)使用以下命令檢查 DaemonSet 的清單:

kubectl apply -f fluentd-daemonset.yaml --dry-run=client -o go-template='{{.spec.updateStrategy.type}}{{"\n"}}'

兩個(gè)命令的輸出都應(yīng)該為:

RollingUpdate

如果輸出不是 RollingUpdate,請(qǐng)返回并相應(yīng)地修改 DaemonSet 對(duì)象或者清單。

更新 DaemonSet 模板

對(duì) RollingUpdate DaemonSet 的 .spec.template 的任何更新都將觸發(fā)滾動(dòng)更新。 這可以通過幾個(gè)不同的 kubectl 命令來完成。

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd-elasticsearch
  namespace: kube-system
  labels:
    k8s-app: fluentd-logging
spec:
  selector:
    matchLabels:
      name: fluentd-elasticsearch
  updateStrategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
  template:
    metadata:
      labels:
        name: fluentd-elasticsearch
    spec:
      tolerations:
      # 這些容忍度設(shè)置是為了讓該守護(hù)進(jìn)程集在控制平面節(jié)點(diǎn)上運(yùn)行
      # 如果你不希望自己的控制平面節(jié)點(diǎn)運(yùn)行 Pod,可以刪除它們
      - key: node-role.kubernetes.io/control-plane
        operator: Exists
        effect: NoSchedule
      - key: node-role.kubernetes.io/master
        operator: Exists
        effect: NoSchedule
      containers:
      - name: fluentd-elasticsearch
        image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 200Mi
        volumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
      terminationGracePeriodSeconds: 30
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers

聲明式命令

如果你使用配置文件來更新 DaemonSet,請(qǐng)使用 kubectl apply

kubectl apply -f fluentd-daemonset-update.yaml
指令式命令

如果你使用指令式命令來更新 DaemonSets,請(qǐng)使用 kubectl edit

kubectl edit ds/fluentd-elasticsearch -n kube-system
只更新容器鏡像

如果你只需要更新 DaemonSet 模板里的容器鏡像,比如 .spec.template.spec.containers[*].image, 請(qǐng)使用 kubectl set image

kubectl set image ds/fluentd-elasticsearch fluentd-elasticsearch=quay.io/fluentd_elasticsearch/fluentd:v2.6.0 -n kube-system

監(jiān)視滾動(dòng)更新狀態(tài)

最后,觀察 DaemonSet 最新滾動(dòng)更新的進(jìn)度:

kubectl rollout status ds/fluentd-elasticsearch -n kube-system

當(dāng)滾動(dòng)更新完成時(shí),輸出結(jié)果如下:

daemonset "fluentd-elasticsearch" successfully rolled out

故障排查

DaemonSet 滾動(dòng)更新卡住

有時(shí),DaemonSet 滾動(dòng)更新可能卡住,以下是一些可能的原因:

一些節(jié)點(diǎn)可用資源耗盡

DaemonSet 滾動(dòng)更新可能會(huì)卡住,其 Pod 至少在某個(gè)節(jié)點(diǎn)上無法調(diào)度運(yùn)行。 當(dāng)節(jié)點(diǎn)上可用資源耗盡時(shí), 這是可能的。

發(fā)生這種情況時(shí),通過對(duì) kubectl get nodes 和下面命令行的輸出作比較, 找出沒有調(diào)度 DaemonSet Pod 的節(jié)點(diǎn):

kubectl get pods -l name=fluentd-elasticsearch -o wide -n kube-system

一旦找到這些節(jié)點(diǎn),從節(jié)點(diǎn)上刪除一些非 DaemonSet Pod,為新的 DaemonSet Pod 騰出空間。

PS: 當(dāng)所刪除的 Pod 不受任何控制器管理,也不是多副本的 Pod時(shí),上述操作將導(dǎo)致服務(wù)中斷。 同時(shí),上述操作也不會(huì)考慮 PodDisruptionBudget 所施加的約束。

不完整的滾動(dòng)更新

如果最近的 DaemonSet 模板更新被破壞了,比如,容器處于崩潰循環(huán)狀態(tài)或者容器鏡像不存在 (通常由于拼寫錯(cuò)誤),就會(huì)發(fā)生 DaemonSet 滾動(dòng)更新中斷。

要解決此問題,需再次更新 DaemonSet 模板。新的滾動(dòng)更新不會(huì)被以前的不健康的滾動(dòng)更新阻止。

時(shí)鐘偏差

如果在 DaemonSet 中指定了 .spec.minReadySeconds,主控節(jié)點(diǎn)和工作節(jié)點(diǎn)之間的時(shí)鐘偏差會(huì)使 DaemonSet 無法檢測(cè)到正確的滾動(dòng)更新進(jìn)度。

清理

從名字空間中刪除 DaemonSet:文章來源地址http://www.zghlxwxcb.cn/news/detail-501422.html

kubectl delete ds fluentd-elasticsearch -n kube-system

到了這里,關(guān)于k8s控制器之DaemonSet--第五彈更新 DaemonSet的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • K8s(Kubernetes)學(xué)習(xí)(四):Controller 控制器:Deployment、StatefulSet、Daemonset、Job

    K8s(Kubernetes)學(xué)習(xí)(四):Controller 控制器:Deployment、StatefulSet、Daemonset、Job

    什么是 Controller 以及作用 常見的 Controller 控制器 Controller 如何管理 Pod Deployment 基本操作與應(yīng)用 通過控制器實(shí)現(xiàn) Pod 升級(jí)回滾和彈性伸縮 StatefulSet 基本操作與應(yīng)用 Daemonset 基本操作與應(yīng)用 Job 基本操作與應(yīng)用 Controller 無法解決問題 1 Controller 控制器 官網(wǎng): http://kubernetes.p2hp.com/

    2024年02月09日
    瀏覽(59)
  • 18-k8s控制器資源-cronjob控制器

    18-k8s控制器資源-cronjob控制器

    ? ? ? ? job控制器是執(zhí)行完一次任務(wù),就結(jié)束; ? ? ? ? cronjob控制器,是基于job控制器,定期頻率性執(zhí)行任務(wù);等同于linux系統(tǒng)中的crontab一樣; [root@k8s231 pi]# vim cronjob.yaml apiVersion: batch/v1 kind: CronJob metadata: ? name: xinjizhiwa spec: ? schedule: \\\"* * * * *\\\" ? #定義job的模板 ? jobTemplate

    2024年02月22日
    瀏覽(112)
  • K8s控制器

    K8s控制器

    kubectl create tabtab 下面的所有都可以創(chuàng)建模板文件 --dry-run=client -o yaml 查詢資源對(duì)象的幫助信息 ????????kubectl explain pod.spec.restartPolicy? ? ? ? ? ? #這里對(duì)上下層級(jí)關(guān)系需要清楚 獲取Pod模板 ????????kubectl run mypod --image=xxxx --dry-run=client -o yaml 獲取Deployment ????????ku

    2024年02月03日
    瀏覽(53)
  • k8s 控制器

    Kubernetes(K8S)是一種開源的容器編排平臺(tái),它可以自動(dòng)化地管理容器化應(yīng)用程序的部署、擴(kuò)展和運(yùn)行。K8S中的控制器是一種重要的組件,它可以確保應(yīng)用程序的狀態(tài)與期望的狀態(tài)一致。在K8S中,有五種常見的控制器,它們分別是: 1. ReplicaSet控制器 ReplicaSet控制器用于確保P

    2024年02月13日
    瀏覽(23)
  • 15-k8s控制器資源-deployment/部署控制器

    15-k8s控制器資源-deployment/部署控制器

    ? ? ? ? 在學(xué)習(xí)rc和rs控制器資源時(shí),我們指導(dǎo),這兩個(gè)資源都是控制pod的副本數(shù)量的,但是,他們兩個(gè)有個(gè)缺點(diǎn),就是在部署新版本pod或者回滾代碼的時(shí)候,需要先apply資源清單,然后再刪除現(xiàn)有pod,通過資源控制,重新拉取新的pod來實(shí)現(xiàn)回滾或者迭代升級(jí); ? ? ? ? 那么

    2024年02月21日
    瀏覽(30)
  • 14-k8s控制器資源-rs控制器replicasets

    14-k8s控制器資源-rs控制器replicasets

    ? ? ? ? replicaset副本控制器,簡稱:rs控制器; ? ? ? ? 用法:與rc控制器“幾乎”相同; ? ? ? ? 能力:可以指定pod的副本始終存活,相比于rc控制器;支持標(biāo)簽匹配,也支持標(biāo)簽表達(dá)式 ????????注意:不論是rc還是rs資源,都是通過“標(biāo)簽”驚醒匹配pod的,如果有同樣

    2024年02月21日
    瀏覽(36)
  • k8s---pod控制器

    k8s---pod控制器

    工作負(fù)載,workload用于管理pod的中間層,確保pod資源符合預(yù)期的狀態(tài)。 預(yù)期狀態(tài): 1、副本數(shù) 2、容器重啟策略 3、鏡像拉取策略 pod出故障的出去等等 1、replicaset:指定pod副本的數(shù)量 三個(gè)組件: ????????????????1、pod的副本 ????????????????2、標(biāo)簽選擇器,判斷

    2024年01月18日
    瀏覽(25)
  • 13-k8s的控制器資源-rc控制器replicationcontrollers

    13-k8s的控制器資源-rc控制器replicationcontrollers

    ? ? ? ? replicationcontrollers控制器資源,簡稱:rc控制器; ? ? ? ? 簡單理解,rc控制器就是控制相同的pod副本數(shù)量; ? ? ? ? 使用rc控制器資源創(chuàng)建pod,就可以設(shè)定創(chuàng)建pod的數(shù)量; [root@k8s231 rc]# vim rc.yaml apiVersion: v1 kind: ReplicationController metadata: ? name: rc01 spec: ? #控制pod的副本

    2024年02月20日
    瀏覽(35)
  • 17-k8s控制器資源-job控制

    17-k8s控制器資源-job控制

    job控制器:就是一次性任務(wù)的pod控制器,pod完成作業(yè)后不會(huì)重啟,其重啟策略是:Never ? ? ? ? 啟動(dòng)一個(gè)pod,執(zhí)行完成一個(gè)事件,然后pod關(guān)閉; ? ? ? ? 事件:計(jì)算π的值,取前5000位; [root@k8s231 pi]# vim job.yaml apiVersion: batch/v1 kind: Job metadata: ? name: job-pi spec: ? #定義pod模板 ?

    2024年02月20日
    瀏覽(23)
  • 帶你深入學(xué)習(xí)k8s--(四) 控制器(k8s核心)

    帶你深入學(xué)習(xí)k8s--(四) 控制器(k8s核心)

    目錄 一、概念 1、什么是控制器 2、控制器執(zhí)行流程 3、控制器類型 二、控制器的使用 1、ReplicaSet 2、Deployment 1、版本迭代 2、回滾? 3、修改滾動(dòng)更新策略 4、暫停與恢復(fù) 3、daemonset 4、job 5、cronjob 前言: 上一章我們說到,pod有兩種,分別為自主式 Pod,Pod 退出后不會(huì)被創(chuàng)建;

    2024年02月06日
    瀏覽(35)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包