1.4kubernetes基本概念和術(shù)語(3)-- Deployment、HPA、stateful set

歡迎各位讀者評(píng)論留言,共同學(xué)習(xí),共同進(jìn)步。
《kubernetes權(quán)威指南》筆記
上一節(jié)見1.4kubernetes基本概念和術(shù)語(2)

5. Deployment
  • Deployment是1.2版本之后引入,為了更好的解決pod編排問題。
  • Deployment相對(duì)于RC的一個(gè)最大升級(jí)是我們可以隨時(shí)知道當(dāng)前Pod“部署”的進(jìn)度。實(shí)際上由于一個(gè)Pod的創(chuàng)建、調(diào)度、綁定節(jié)點(diǎn)及在目標(biāo)Node上啟動(dòng)對(duì)應(yīng)的容器這一完整過程需要一定的時(shí)間,所以我們期待系統(tǒng)啟動(dòng)N個(gè)Pod副本的目標(biāo)狀態(tài),實(shí)際上是一個(gè)連續(xù)變化的“部署過程”導(dǎo)致的最終狀態(tài)。

RC 、RS、Deployment的區(qū)別:
Replication Contoller: 支持Pod擴(kuò)縮,只支持Equal條件
Replica Set: 支持模糊包含條件,其他與RC相同
Deployment: 相對(duì)RC,在內(nèi)部使用了Replica Set來實(shí)現(xiàn)目的,同時(shí)它可以隨時(shí)知道當(dāng)前Pod部署進(jìn)度。

  • 應(yīng)用場(chǎng)景:
    ◎ 創(chuàng)建一個(gè)Deployment對(duì)象來生成對(duì)應(yīng)的Replica Set并完成Pod副本的創(chuàng)建。
    ◎ 檢查Deployment的狀態(tài)來看部署動(dòng)作是否完成(Pod副本數(shù)量是否達(dá)到預(yù)期的值)。
    ◎ 更新Deployment以創(chuàng)建新的Pod(比如鏡像升級(jí))。
    ◎ 如果當(dāng)前Deployment不穩(wěn)定,則回滾到一個(gè)早先的Deployment版本。
    ◎ 暫停Deployment以便于一次性修改多個(gè)PodTemplateSpec的配置項(xiàng),之后再恢復(fù)Deployment,進(jìn)行新的發(fā)布。
    ◎ 擴(kuò)展Deployment以應(yīng)對(duì)高負(fù)載。
    ◎ 查看Deployment的狀態(tài),以此作為發(fā)布是否成功的指標(biāo)。
    ◎ 清理不再需要的舊版本ReplicaSets。

6.Horizontal Pod Autoscaler (HPA)

  • HPA(Pod橫向自動(dòng)擴(kuò)容)目的是為了使分布式系統(tǒng)要能夠根據(jù)當(dāng)前負(fù)載的變化自動(dòng)觸發(fā)水平擴(kuò)容或縮容。
  • 實(shí)現(xiàn)原理:通過追蹤分析指定RC控制的所有目標(biāo)Pod的負(fù)載變化情況,來確定是否需要有針對(duì)性地調(diào)整目標(biāo)Pod的副本數(shù)量。
  • Pod負(fù)載的度量指標(biāo):
    ◎ CPUUtilizationPercentage。
    1). 指目標(biāo)Pod所有副本自身的CPU利用率的平均值,一個(gè)Pod自身的CPU利用率是該P(yáng)od當(dāng)前CPU的使用量除以它的Pod Request的值。
    2).如果目標(biāo)Pod沒有定義Pod Request的值,則無法使用CPUUtilizationPercentage實(shí)現(xiàn)Pod橫向自動(dòng)擴(kuò)容。
    ◎ 應(yīng)用程序自定義的度量指標(biāo),比如服務(wù)在每秒內(nèi)的相應(yīng)請(qǐng)求數(shù)(TPS或QPS)。

除了可以通過直接定義YAML文件并且調(diào)用kubectrl create的命令來創(chuàng)建一個(gè)HPA資源對(duì)象的方式,還可以通過下面的簡(jiǎn)單命令行直接創(chuàng)建等價(jià)的HPA對(duì)象。

$ kubectl autoscale deployment .. ..

7.Stateful Set

  • 用于管理有狀態(tài)的集群:
    (1)每個(gè)節(jié)點(diǎn)都有固定的身份ID,通過這個(gè)ID,集群中的成員可以相互發(fā)現(xiàn)并通信。
    (2)集群的規(guī)模是比較固定的,集群規(guī)模不能隨意變動(dòng)。
    (3)集群中的每個(gè)節(jié)點(diǎn)都是有狀態(tài)的,通常會(huì)持久化數(shù)據(jù)到永久存儲(chǔ)中。
    (4)如果磁盤損壞,則集群里的某個(gè)節(jié)點(diǎn)無法正常運(yùn)行,集群功能受損。
  • Stateful Set的特性:
    (1) StatefulSet里的每個(gè)Pod都有穩(wěn)定、唯一的網(wǎng)絡(luò)標(biāo)識(shí),可以用來發(fā)現(xiàn)集群內(nèi)的其他成員。假設(shè)StatefulSet的名稱為kafka,那么第1個(gè)Pod叫kafka-0,第2個(gè)叫kafka-1,以此類推。(有序命名)
    (2)StatefulSet控制的Pod副本的啟停順序是受控的,操作第n個(gè)Pod時(shí),前n-1個(gè)Pod已經(jīng)是運(yùn)行且準(zhǔn)備好的狀態(tài)。(有序啟停)
    (3)StatefulSet里的Pod采用穩(wěn)定的持久化存儲(chǔ)卷,通過PV或PVC來實(shí)現(xiàn),刪除Pod時(shí)默認(rèn)不會(huì)刪除與StatefulSet相關(guān)的存儲(chǔ)卷(為了保證數(shù)據(jù)的安全)。()
    (4)StatefulSet除了要與PV卷捆綁使用以存儲(chǔ)Pod的狀態(tài)數(shù)據(jù),還要與Headless Service配合使用,使得每個(gè)pod要生成對(duì)應(yīng)的DNS域名。(實(shí)現(xiàn)穩(wěn)定持久化存儲(chǔ)狀態(tài)數(shù)據(jù))
${podname}.${headlesss service name}

參考:(1)kubernetes之StatefulSet詳解
(2)K8S容器編排之Headless淺談

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文源自——《Kubernetes權(quán)威指南》 1. Kubernetes是什么? Kubernetes是一個(gè)全新的...
    王勇1024閱讀 541評(píng)論 0 1
  • 學(xué)習(xí)K8S的第一步,當(dāng)然是了解它基本概念了(說實(shí)話很多)。本文總結(jié)自《kubernetes權(quán)威指南》,個(gè)人學(xué)習(xí)筆記...
    ________方塊丶閱讀 1,208評(píng)論 0 1
  • 一、Kubernetes 是什么? 1.Kubernetes 定義: Kubernetes 是一個(gè)全新的基于容器技...
    小E的私房菜閱讀 1,159評(píng)論 0 4
  • 星辰,夜景, 我不在它眼底,它不在我眼里。 憑借著眼前 滿目狼藉, 揮灑最后的余力。 青春本有的色彩, 已早生花白...
    喬巧一汀閱讀 245評(píng)論 3 2
  • 作者在書中闡述的觀點(diǎn)是父母的愛決定了孩子教育的好壞,父母應(yīng)該在家庭教育中以身作則,以自身的自律和去影響孩子幫助孩子...
    lucky_8175閱讀 547評(píng)論 0 0

友情鏈接更多精彩內(nèi)容