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

【云原生】Kubernetes工作負(fù)載-StatefulSet

這篇具有很好參考價值的文章主要介紹了【云原生】Kubernetes工作負(fù)載-StatefulSet。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

StatefulSet

StatefulSet 是用來管理有狀態(tài)應(yīng)用的工作負(fù)載 API 對象

StatefulSet 用來管理某 Pod 集合的部署和擴(kuò)縮, 并為這些 Pod 提供持久存儲和持久標(biāo)識符

和 Deployment 類似, StatefulSet 管理基于相同容器規(guī)約的一組 Pod。但和 Deployment 不同的是, StatefulSet 為它們的每個 Pod 維護(hù)了一個有粘性的 ID。這些 Pod 是基于相同的規(guī)約來創(chuàng)建的, 但是不能相互替換:無論怎么調(diào)度,每個 Pod 都有一個永久不變的 ID

如果希望使用存儲卷為工作負(fù)載提供持久存儲,可以使用 StatefulSet 作為解決方案的一部分。 盡管 StatefulSet 中的單個 Pod 仍可能出現(xiàn)故障, 但持久的 Pod 標(biāo)識符使得將現(xiàn)有卷與替換已失敗 Pod 的新 Pod 相匹配變得更加容易

使用 StatefulSet

StatefulSet 對于需要滿足以下一個或多個需求的應(yīng)用程序很有價值:

  • 穩(wěn)定的、唯一的網(wǎng)絡(luò)標(biāo)識符。
  • 穩(wěn)定的、持久的存儲。
  • 有序的、優(yōu)雅的部署和擴(kuò)縮。
  • 有序的、自動的滾動更新。
    在上面描述中,“穩(wěn)定的”意味著 Pod 調(diào)度或重調(diào)度的整個過程是有持久性的。 如果應(yīng)用程序不需要任何穩(wěn)定的標(biāo)識符或有序的部署、刪除或擴(kuò)縮, 則應(yīng)該使用由一組無狀態(tài)的副本控制器提供的工作負(fù)載來部署應(yīng)用程序,比如 Deployment 或者 ReplicaSet 可能更適用于你的無狀態(tài)應(yīng)用部署需要

限制

  • 給定 Pod 的存儲必須由 PersistentVolume Provisioner 基于所請求的 storage class 來制備,或者由管理員預(yù)先制備。
  • 刪除或者擴(kuò)縮 StatefulSet 并不會刪除它關(guān)聯(lián)的存儲卷。 這樣做是為了保證數(shù)據(jù)安全,它通常比自動清除 StatefulSet 所有相關(guān)的資源更有價值。
  • StatefulSet 當(dāng)前需要無頭服務(wù)來負(fù)責(zé) Pod 的網(wǎng)絡(luò)標(biāo)識。你需要負(fù)責(zé)創(chuàng)建此服務(wù)。
  • 當(dāng)刪除一個 StatefulSet 時,該 StatefulSet 不提供任何終止 Pod 的保證。 為了實現(xiàn) StatefulSet 中的 Pod 可以有序且體面地終止,可以在刪除之前將 StatefulSet 縮容到 0。
  • 在默認(rèn) Pod 管理策略(OrderedReady) 時使用滾動更新, 可能進(jìn)入需要人工干預(yù)才能修復(fù)的損壞狀態(tài)

示例

apiVersion: v1
kind: Service
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  ports:
  - port: 80
    name: web
  clusterIP: None
  selector:
    app: nginx
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  selector:
    matchLabels:
      app: nginx # 必須匹配 .spec.template.metadata.labels
  serviceName: "nginx"
  replicas: 3 # 默認(rèn)值是 1
  minReadySeconds: 10 # 默認(rèn)值是 0
  template:
    metadata:
      labels:
        app: nginx # 必須匹配 .spec.selector.matchLabels
    spec:
      terminationGracePeriodSeconds: 10
      containers:
      - name: nginx
        image: registry.k8s.io/nginx-slim:0.8
        ports:
        - containerPort: 80
          name: web
        volumeMounts:
        - name: www
          mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: "my-storage-class"
      resources:
        requests:
          storage: 1Gi

上述示例中:

  • nginx 的 Headless Service 用來控制網(wǎng)絡(luò)域名。
  • web 的 StatefulSet 有一個 Spec,它表明將在獨立的 3 個 Pod 副本中啟動 nginx 容器。
  • volumeClaimTemplates 將通過 PersistentVolume 制備程序所準(zhǔn)備的 PersistentVolumes 來提供穩(wěn)定的存儲

穩(wěn)定的網(wǎng)絡(luò) ID

StatefulSet 中的每個 Pod 根據(jù) StatefulSet 的名稱和 Pod 的序號派生出它的主機(jī)名。 組合主機(jī)名的格式為 ( S t a t e f u l S e t 名稱 ) ? (StatefulSet 名稱)- (StatefulSet名稱)?(序號)。 上例將會創(chuàng)建三個名稱分別為 web-0、web-1、web-2 的 Pod。 StatefulSet 可以使用無頭服務(wù)控制它的 Pod 的網(wǎng)絡(luò)域。管理域的這個服務(wù)的格式為: ( 服務(wù)名稱 ) . (服務(wù)名稱). (服務(wù)名稱).(名字空間).svc.cluster.local,其中 cluster.local 是集群域。 一旦每個 Pod 創(chuàng)建成功,就會得到一個匹配的 DNS 子域,格式為: ( p o d 名稱 ) . (pod 名稱). (pod名稱).(所屬服務(wù)的 DNS 域名),其中所屬服務(wù)由 StatefulSet 的 serviceName 域來設(shè)定。

取決于集群域內(nèi)部 DNS 的配置,有可能無法查詢一個剛剛啟動的 Pod 的 DNS 命名。 當(dāng)集群內(nèi)其他客戶端在 Pod 創(chuàng)建完成前發(fā)出 Pod 主機(jī)名查詢時,就會發(fā)生這種情況。 負(fù)緩存 (在 DNS 中較為常見) 意味著之前失敗的查詢結(jié)果會被記錄和重用至少若干秒鐘, 即使 Pod 已經(jīng)正常運(yùn)行了也是如此。

如果需要在 Pod 被創(chuàng)建之后及時發(fā)現(xiàn)它們,可使用以下選項:

  • 直接查詢 Kubernetes API(比如,利用 watch 機(jī)制)而不是依賴于 DNS 查詢
  • 縮短 Kubernetes DNS 驅(qū)動的緩存時長(通常這意味著修改 CoreDNS 的 ConfigMap,目前緩存時長為 30 秒)

更新策略

StatefulSet 的 .spec.updateStrategy 字段讓你可以配置和禁用掉自動滾動更新 Pod 的容器、標(biāo)簽、資源請求或限制、以及注解。有兩個允許的值:

OnDelete
當(dāng) StatefulSet 的 .spec.updateStrategy.type 設(shè)置為 OnDelete 時, 它的控制器將不會自動更新 StatefulSet 中的 Pod。 用戶必須手動刪除 Pod 以便讓控制器創(chuàng)建新的 Pod,以此來對 StatefulSet 的 .spec.template 的變動作出反應(yīng)
RollingUpdate
RollingUpdate 更新策略對 StatefulSet 中的 Pod 執(zhí)行自動的滾動更新。這是默認(rèn)的更新策略

滾動更新

當(dāng) StatefulSet 的 .spec.updateStrategy.type 被設(shè)置為 RollingUpdate 時, StatefulSet 控制器會刪除和重建 StatefulSet 中的每個 Pod。 它將按照與 Pod 終止相同的順序(從最大序號到最小序號)進(jìn)行,每次更新一個 Pod

Kubernetes 控制平面會等到被更新的 Pod 進(jìn)入 Running 和 Ready 狀態(tài),然后再更新其前身。 如果你設(shè)置了 .spec.minReadySeconds(查看最短就緒秒數(shù)), 控制平面在 Pod 就緒后會額外等待一定的時間再執(zhí)行下一步

分區(qū)滾動更新

通過聲明 .spec.updateStrategy.rollingUpdate.partition 的方式,RollingUpdate 更新策略可以實現(xiàn)分區(qū)。 如果聲明了一個分區(qū),當(dāng) StatefulSet 的 .spec.template 被更新時, 所有序號大于等于該分區(qū)序號的 Pod 都會被更新。 所有序號小于該分區(qū)序號的 Pod 都不會被更新,并且,即使它們被刪除也會依據(jù)之前的版本進(jìn)行重建。 如果 StatefulSet 的 .spec.updateStrategy.rollingUpdate.partition 大于它的 .spec.replicas,則對它的 .spec.template 的更新將不會傳遞到它的 Pod。 在大多數(shù)情況下,你不需要使用分區(qū),但如果你希望進(jìn)行階段更新、執(zhí)行金絲雀或執(zhí)行分階段上線,則這些分區(qū)會非常有用

最大不可用 Pod

特性狀態(tài): Kubernetes v1.24 [alpha]
你可以通過指定 .spec.updateStrategy.rollingUpdate.maxUnavailable 字段來控制更新期間不可用的 Pod 的最大數(shù)量。 該值可以是絕對值(例如,“5”)或者是期望 Pod 個數(shù)的百分比(例如,10%)。 絕對值是根據(jù)百分比值四舍五入計算的。 該字段不能為 0。默認(rèn)設(shè)置為 1

該字段適用于 0 到 replicas - 1 范圍內(nèi)的所有 Pod。 如果在 0 到 replicas - 1 范圍內(nèi)存在不可用 Pod,這類 Pod 將被計入 maxUnavailable 值文章來源地址http://www.zghlxwxcb.cn/news/detail-608419.html

到了這里,關(guān)于【云原生】Kubernetes工作負(fù)載-StatefulSet的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 5、Kubernetes核心技術(shù) - Controller控制器工作負(fù)載

    5、Kubernetes核心技術(shù) - Controller控制器工作負(fù)載

    目錄 一、Deployments - 控制器應(yīng)用 二、Deployment升級回滾和彈性收縮 2.1、創(chuàng)建一個 1.14 版本的 pod 2.2、應(yīng)用升級 2.3、查看升級狀態(tài) 2.4、查看歷史版本 2.5、應(yīng)用回滾 2.6、彈性伸縮? 三、StatefulSet - 有狀態(tài)應(yīng)用 四、DaemonSet - 守護(hù)進(jìn)程 五、Job - 單次任務(wù) 六、Cronjob - 定時任務(wù) Deplo

    2024年02月15日
    瀏覽(24)
  • 【云原生】容器編排工具Kubernetes

    【云原生】容器編排工具Kubernetes

    目錄 一、 K8S介紹 官網(wǎng)地址: 1.1docker編排與k8s編排相比 1.2特性 1.3功能 二、K8S重要組件 2.1核心組件 (1)Kube-apiserver (2)Kube-controller-manager (3)Kube-scheduler (4)Node ①kubelet ②kube-proxy ③docker (5)etcd 2.2Kubernetes工作原理 三、Pod 3.1 Pod控制器 (1)Deployment (2)ReplicaSet (3)

    2024年02月09日
    瀏覽(32)
  • 【云原生】Kubernetes容器編排工具

    【云原生】Kubernetes容器編排工具

    目錄 1. K8S介紹 1.1 k8s的由來 下載地址 1.2 docker編排與k8s編排相比 1.3 傳統(tǒng)后端部署與k8s 的對比 傳統(tǒng)部署 k8s部署? ?2. k8s的集群架構(gòu)與組件 (1) Kube-apiserver (2)Kube-controller-manager? (3)Kube-scheduler?? 2.2?k8s的配置存儲中心 2.3? k8s的Node 組件? ?(1)Kubelet? ?(2)Kube-Proxy?

    2024年02月10日
    瀏覽(23)
  • 云原生、容器化、Kubernetes、微服務(wù)

    作者:禪與計算機(jī)程序設(shè)計藝術(shù) 云原生(Cloud Native)是一個開放且社區(qū)驅(qū)動的項目,它定義了一組架構(gòu)原則、最佳實踐和工具集,這些原則、實踐和工具圍繞業(yè)務(wù)需求和工程實踐而設(shè)計,可用于開發(fā)人員在構(gòu)建和運(yùn)行分布式系統(tǒng)時更加順暢地交付可靠的軟件。云原生可以幫助

    2024年02月07日
    瀏覽(27)
  • 【云原生】kubernetes中容器的資源限制

    【云原生】kubernetes中容器的資源限制

    目錄 1 metrics-server 2 指定內(nèi)存請求和限制 3 指定 CPU 請求和限制 資源限制 在k8s中對于容器資源限制主要分為以下兩類: 內(nèi)存資源限制: 內(nèi)存 請求 (request)和內(nèi)存 限制 (limit)分配給一個容器。 我們保障容器擁有它請求數(shù)量的內(nèi)存,但不允許使用超過限制數(shù)量的內(nèi)存。 官網(wǎng)參

    2024年02月14日
    瀏覽(24)
  • 【云原生|探索 Kubernetes 系列 5】簡化 Kubernetes 的部署,深入解析其工作流程

    【云原生|探索 Kubernetes 系列 5】簡化 Kubernetes 的部署,深入解析其工作流程

    大家好,我是秋意零。 在前面 4 個章節(jié)中,我們充分了解了容器技術(shù)和 Kubernes 原生時代引擎的架構(gòu)和設(shè)計思想,今天分享的主要內(nèi)容是,探索 Kubernetes 部署,深入解析其工作流程 ?? 簡介 ?? 個人主頁 : 秋意零 ?? 個人介紹 :在校期間參與眾多云計算相關(guān)比賽,如:??

    2024年02月06日
    瀏覽(32)
  • 云原生Kubernetes:CRI 容器運(yùn)行時接口

    云原生Kubernetes:CRI 容器運(yùn)行時接口

    目錄 一、理論 1.?CRI 2.容器運(yùn)行時層級 3.容器運(yùn)行時比較 二、總結(jié) (1)概念 ? ? ? Kubernetes Node (kubelet) 的主要功能就是啟動和停止容器的組件,我們 稱之為容器運(yùn)行時( Container Runtime) ,其中最知名的就是 Docker 。為了 更具擴(kuò)展性, Kubernetes 1.5 版本開始就加入了容器運(yùn)行

    2024年02月09日
    瀏覽(27)
  • 【云原生|Kubernetes】08-Pod中的Init容器

    Init 容器是一種特殊容器,在 Pod內(nèi)的應(yīng)用容器啟動之前運(yùn)行。Init 容器可以包括一些應(yīng)用鏡像中不存在的實用工具和安裝腳本。 你可以在 Pod 的spec中與用來描述應(yīng)用容器的 containers 數(shù)組平行的位置指定 Init 容器。 Init 容器的狀態(tài)在 status.initContainerStatuses 字段中以容器狀態(tài)數(shù)組

    2024年02月09日
    瀏覽(50)
  • 容器和云原生(三):kubernetes搭建與使用

    容器和云原生(三):kubernetes搭建與使用

    ? ? ? ? 目錄 單機(jī)K8S docker containerd image依賴 kubeadm初始化 驗證 crictl工具 K8S核心組件 上文安裝單機(jī)docker是很簡單docker,但是生產(chǎn)環(huán)境需要多個主機(jī),主機(jī)上啟動多個docker容器,相同容器會綁定形成1個服務(wù)service,微服務(wù)場景中多個service會互相調(diào)用,那么就需要保證多個servi

    2024年02月11日
    瀏覽(27)
  • 【云原生-深入理解Kubernetes-1】容器的本質(zhì)是進(jìn)程

    【云原生-深入理解Kubernetes-1】容器的本質(zhì)是進(jìn)程

    大家好,我是秋意零。 ?? CSDN作者主頁 ?? 博客主頁 ?? 簡介 ?? 普通本科生在讀 在校期間參與眾多計算機(jī)相關(guān)比賽,如:?? “省賽”、“國賽” ,斬獲多項獎項榮譽(yù)證書 ?? 各個平臺, 秋意零/秋意臨 賬號創(chuàng)作者 ?? 云社區(qū) 創(chuàng)建者 點贊、收藏+關(guān)注下次不迷路! 歡迎加

    2024年02月02日
    瀏覽(29)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包