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

【Kubernetes資源篇】DaemonSet控制器入門實(shí)戰(zhàn)詳解

這篇具有很好參考價(jià)值的文章主要介紹了【Kubernetes資源篇】DaemonSet控制器入門實(shí)戰(zhàn)詳解。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

一、DaemonSet控制器理論知識

中文官方文檔參考:

1、DaemonSet控制器是什么?

Kubernetes中的DaemonSet(簡寫ds)控制器是一種用來運(yùn)行守護(hù)進(jìn)程應(yīng)用程序的控制器,它確保每個(gè)Node節(jié)點(diǎn)都運(yùn)行具有指定配置的 Pod副本,當(dāng)Node節(jié)點(diǎn)的加入或刪除DaemonSet控制器會(huì)自動(dòng)創(chuàng)建或刪除相應(yīng)的 Pod副本。

特點(diǎn):

  1. 每個(gè)節(jié)點(diǎn)只運(yùn)行一個(gè)實(shí)例:DaemonSet確保每個(gè)節(jié)點(diǎn)上只運(yùn)行一個(gè) Pod 實(shí)例。這確保了在每個(gè)節(jié)點(diǎn)上部署的守護(hù)進(jìn)程能夠與主機(jī)緊密結(jié)合,以提供更高的可用性和可靠性。

  2. 滾動(dòng)升級:在更新 DaemonSet 時(shí),可以通過幾種不同的方式控制滾動(dòng)升級??梢赃x擇一次更新所有 Pod 實(shí)例,也可以在運(yùn)行新版本之前逐步刪除舊的 Pod 實(shí)例。

  3. 在啟動(dòng)前執(zhí)行任務(wù):可以通過 DaemonSet 的

2、DaemonSet控制器工作原理

DaemonSet控制器會(huì)監(jiān)聽K8s的daemonset對象、pod對象、node對象,如果這些被監(jiān)聽的對象變動(dòng),就會(huì)觸發(fā)syncLoop循環(huán),讓K8s集群朝著daemonset對象描述的狀態(tài)進(jìn)行演進(jìn)。

3、DaemonSet典型應(yīng)用場景

  • 日志和指標(biāo)收集:在每個(gè)節(jié)點(diǎn)上運(yùn)行日志和指標(biāo)收集器,比如flunentd 、 logstash、filebeat等。

  • 數(shù)據(jù)存儲:在每個(gè)節(jié)點(diǎn)上運(yùn)行數(shù)據(jù)存儲,比如glusterd 、ceph等。

  • 監(jiān)控組件:在每個(gè)節(jié)點(diǎn)上運(yùn)行監(jiān)控組件,比如prometheus、node_exporter、collectd等。

4、DaemonSet與Deployment的區(qū)別

  • deployment創(chuàng)建出來的Pod,會(huì)分布在各個(gè)Node節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)都可能運(yùn)行好幾個(gè)副本。
  • daemonset創(chuàng)建出來的Pod,每個(gè)Node節(jié)點(diǎn)上最多只能運(yùn)行一個(gè)Pod副本,通常用來運(yùn)行后臺服務(wù)和守護(hù)進(jìn)程應(yīng)用程序。

因此,一般情況下,如果要部署后臺服務(wù)和守護(hù)進(jìn)程等單節(jié)點(diǎn)應(yīng)用程序,可以使用DaemonSet;如果需要部署復(fù)雜的應(yīng)用程序,如Web服務(wù)等,那就需要使用deployment了。

二、案例:DaemonSet控制器實(shí)戰(zhàn)演示

1、使用DaemonSet部署日志收集組件

部署 fluentd 日志收集組件(只簡單演示DaemonSet使用,并非做ELK整體實(shí)驗(yàn))YAML資源清單如下:

cat fluentd-daemonset.yaml 
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: elasticsearch-fluentd
  namespace: default
spec:
  selector:
    matchLabels:
      app: elasticsearch-fluentd
  template:
    metadata:
      labels:
        app: elasticsearch-fluentd
    spec:
      tolerations:              # 定義容忍度,運(yùn)行在master節(jié)點(diǎn)運(yùn)行(根據(jù)自己master的污點(diǎn)定義)
      - effect: NoSchedule  
        key: node-role.kubernetes.io/control-plane
      volumes:                 # 定義卷名稱為 system-log
      - name: system-log
        hostPath: 
          path: /var/log
      containers:
      - name: elasticsearch-fluentd
        image: qinziteng/fluentd:2.5.1 
        imagePullPolicy: IfNotPresent
        resources:              # 定義資源限制
          requests:
            cpu: 100m
            memory: 300Mi
          limits:
            memory: 300Mi
        volumeMounts:
        - name: system-log    # 使用system-log卷,掛載到容器/var/log目錄
          mountPath: /var/log

執(zhí)行YAML文件:

kubectl apply -f fluentd-daemonset.yaml

查看Pod狀態(tài),如下圖可以看到分包在K8s集群每個(gè)節(jié)點(diǎn)上創(chuàng)建Pod

kubectl get pods -o wide

【Kubernetes資源篇】DaemonSet控制器入門實(shí)戰(zhàn)詳解

2、DaemonSet管理Pod滾動(dòng)更新

DaemonSet更新策略在 spec.updateStrategy 字段定義,目前支持兩種更新策略:

  • rollingUpdate:由于daemonset不支持一個(gè)節(jié)點(diǎn)運(yùn)行多個(gè)Pod,所以rollingUpdate更新策略是先刪除在更新。
  • OnDelete:默認(rèn)不做更新,需要手動(dòng)刪除后更新。

第一步:創(chuàng)建daemonset資源并使用 nginx:1.18.0 鏡像,YAML 如下:

cat web-daemonset.yaml 
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: web-daemonset
  namespace: default
spec:
  updateStrategy:
    rollingUpdate:
      maxUnavailable: 1
  selector:
    matchLabels:
      app: web-daemonset
  template:
    metadata:
      labels:
        app: web-daemonset
    spec:
      tolerations:            
      - effect: NoSchedule    # 容忍度根據(jù)master 污點(diǎn)定義
        key: node-role.kubernetes.io/control-plane
      containers:
      - name: web-daemonset
        image: nginx:1.18.0
        imagePullPolicy: IfNotPresent
        resources:             
          requests:
            cpu: 100m
            memory: 300Mi
          limits:
            memory: 300Mi

執(zhí)行YAML 文件:

kubectl apply -f web-daemonset.yaml

查看Pod狀態(tài):

kubectl get pods -o wide -l app=web-daemonset

【Kubernetes資源篇】DaemonSet控制器入門實(shí)戰(zhàn)詳解

第二步:更新鏡像使用nginx:latest

只更改image地方,其余地方不做操作,然后重新apply 使其生效。

【Kubernetes資源篇】DaemonSet控制器入門實(shí)戰(zhàn)詳解

kubectl apply -f web-daemonset.yaml

第三步:驗(yàn)證鏡像是否更新

kubectl describe pod web-daemonset-2vtd9|grep Image

【Kubernetes資源篇】DaemonSet控制器入門實(shí)戰(zhàn)詳解

可以看到鏡像版本更新成功了,這種更新其實(shí)就是先刪除舊版本,再使用新的鏡像版本進(jìn)行創(chuàng)建。文章來源地址http://www.zghlxwxcb.cn/news/detail-498172.html

三、總結(jié)

  • DaemonSet控制器用于控制每個(gè)Node節(jié)點(diǎn)有運(yùn)行指定Pod副本集,當(dāng)添加或刪除Node節(jié)點(diǎn)時(shí),DaemonSet會(huì)自動(dòng)創(chuàng)建指定的Pod副本集,來保證每一個(gè)Node節(jié)點(diǎn)都運(yùn)行此Pod。用于收集日志、監(jiān)控等場景。
  • DaemonSet rollingUpdate更新策略是先刪除舊版本Pod,在創(chuàng)建新版本Pod,因?yàn)槊總€(gè)Node節(jié)點(diǎn)只能創(chuàng)建一個(gè)Pod副本集。

到了這里,關(guān)于【Kubernetes資源篇】DaemonSet控制器入門實(shí)戰(zhàn)詳解的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 【云原生|Kubernetes】13-Deployment資源控制器詳解

    kubernetes中有很多資源控制器,這些資源控制器我們只說一些重要且常用的。在介紹Deploymen之前,我們會(huì)逐個(gè)介紹這些控制器。 Pod控制器介紹 ? Pod控制器是用于實(shí)現(xiàn)管理pod的中間層,確保pod資源符合預(yù)期的狀態(tài),pod的資源出現(xiàn)故障時(shí),會(huì)嘗試 進(jìn)行重啟,當(dāng)根據(jù)重啟策略無效

    2024年02月16日
    瀏覽(54)
  • k8s控制器之DaemonSet--第二彈創(chuàng)建DaemonSet

    下面是 DaemonSet 的 YAML 文件示例 daemonset.yaml。該例子中的 DaemonSet 運(yùn)行了一個(gè) fluentd-elasticsearch 的 docker 鏡像: 執(zhí)行如下命令可創(chuàng)建該 DaemonSet: 執(zhí)行結(jié)果: 與其他所有 Kubernetes API 對象相同,DaemonSet 需要如下字段: apiVersion kind metadata 除此之外,DaemonSet 還需要 .spec 字段 .spec

    2024年02月10日
    瀏覽(25)
  • k8s控制器之DaemonSet--第五彈更新 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í),在更新 DaemonSe

    2024年02月11日
    瀏覽(25)
  • k8s控制器之DaemonSet--第三彈DaemonSet 是如何調(diào)度的

    v1.12以后默認(rèn)禁用 通常,Kubernetes Scheduler(調(diào)度器)決定了 Pod 在哪個(gè)節(jié)點(diǎn)上運(yùn)行。然而 DaemonSet Controller 創(chuàng)建的 Pod 已經(jīng)指定了 .spec.nodeName 字段,因此: Node 節(jié)點(diǎn)的 unschedulable (opens new window)字段將被 DaemonSet Controller 忽略 DaemonSet Controller 可以在 kubernetes scheduler 啟動(dòng)之前創(chuàng)建

    2024年02月10日
    瀏覽(23)
  • Kubernetes 啟動(dòng)Pod的方法-Pod的調(diào)度算法-Pod間的通信-k8s的控制器-Pod資源控制-發(fā)布Service服務(wù)

    Kubernetes 啟動(dòng)Pod的方法-Pod的調(diào)度算法-Pod間的通信-k8s的控制器-Pod資源控制-發(fā)布Service服務(wù)

    目錄 Pod 參考文檔:Pod | Kubernetes Pod配置文件:simple-pod.yaml 對master進(jìn)行如下操作 Pod的狀態(tài)有: 參考文檔:(70條消息) Pod生命周期中的狀態(tài)解釋_pod狀態(tài)_鬧玩兒扣眼珠子的博客-CSDN博客 進(jìn)入Pod內(nèi)的nginx容器: 當(dāng)我們創(chuàng)建一個(gè)Pod,其中的步驟是什么?(啟動(dòng)Pob的流程) 大概步驟:

    2024年02月13日
    瀏覽(100)
  • 學(xué)習(xí)筆記二十七:K8S控制器Statefulset入門到企業(yè)實(shí)戰(zhàn)應(yīng)用

    學(xué)習(xí)筆記二十七:K8S控制器Statefulset入門到企業(yè)實(shí)戰(zhàn)應(yīng)用

    用于管理有狀態(tài)應(yīng)用程序的部署。與無狀態(tài)應(yīng)用程序不同,有狀態(tài)應(yīng)用程序在運(yùn)行時(shí)通常要求穩(wěn)定的網(wǎng)絡(luò)標(biāo)識和持久性存儲。 有狀態(tài)服務(wù):StatefulSet是有狀態(tài)的集合,管理有狀態(tài)的服務(wù),它所管理的Pod的名稱不能隨意變化。數(shù)據(jù)持久化的目錄也是不一樣,每一個(gè)Pod都有自己獨(dú)

    2024年02月06日
    瀏覽(29)
  • 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)
  • kubernetes-控制器

    kubernetes-控制器

    目錄 一、replicaset 二、deployment 1、版本迭代 2、回滾 3、滾動(dòng)更新策略 4、暫停與恢復(fù) 三、daemonset 四、statefulset 五、job 六、cronjob ReplicaSet用于保證指定數(shù)量的 Pod 副本一直運(yùn)行 replicaset是通過標(biāo)簽匹配pod replicaset自動(dòng)控制副本數(shù)量,pod可以自愈 回收資源 Deployment 的主要作用是實(shí)

    2024年02月06日
    瀏覽(18)
  • Kubernetes 準(zhǔn)入控制器

    Kubernetes 準(zhǔn)入控制器

    Kubernetes 極大地提高了當(dāng)今生產(chǎn)中后端集群的速度和可管理性。由于靈活、可擴(kuò)展、易用,Kubernetes 已成為容器編排的事實(shí)標(biāo)準(zhǔn)。Kubernetes 還提供了一系列保護(hù)功能。而 Admission Controllers(準(zhǔn)入控制器) 是一組安全相關(guān)的插件,啟用后能進(jìn)一步使用 Kubernetes 更高級的安全功能。

    2024年02月06日
    瀏覽(20)
  • 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)回滾或者迭代升級; ? ? ? ? 那么

    2024年02月21日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包