<strike id="ca4is"><em id="ca4is"></em></strike>
  • <sup id="ca4is"></sup>
    • <s id="ca4is"><em id="ca4is"></em></s>
      <option id="ca4is"><cite id="ca4is"></cite></option>
    • 二維碼
      企資網(wǎng)

      掃一掃關(guān)注

      當(dāng)前位置: 首頁 » 企資快報(bào) » 精準(zhǔn) » 正文

      你的Kubernetes控制平面該有有多少個(gè)節(jié)

      放大字體  縮小字體 發(fā)布日期:2023-02-22 16:47:36    作者:馮偉萍    瀏覽次數(shù):93
      導(dǎo)讀

      控制平面節(jié)點(diǎn)數(shù)并不是“越多越好”那么簡單。節(jié)點(diǎn)太少可能會(huì)導(dǎo)致系統(tǒng)無法運(yùn)行,但節(jié)點(diǎn)太多會(huì)導(dǎo)致延遲增加。以下是確定K8s控制平面尺寸得超級(jí)指南。Kubernetes集群通常由兩類節(jié)點(diǎn)組成:運(yùn)行應(yīng)用程序得工作節(jié)點(diǎn)和控制

      控制平面節(jié)點(diǎn)數(shù)并不是“越多越好”那么簡單。節(jié)點(diǎn)太少可能會(huì)導(dǎo)致系統(tǒng)無法運(yùn)行,但節(jié)點(diǎn)太多會(huì)導(dǎo)致延遲增加。以下是確定K8s控制平面尺寸得超級(jí)指南。

      Kubernetes集群通常由兩類節(jié)點(diǎn)組成:運(yùn)行應(yīng)用程序得工作節(jié)點(diǎn)和控制集群得控制平面節(jié)點(diǎn),它們調(diào)度工作節(jié)點(diǎn)上得作業(yè),在負(fù)載需要時(shí)創(chuàng)建pod得新副本等。

      控制平面運(yùn)行得組件允許集群提供高可用性、從工作節(jié)點(diǎn)故障中恢復(fù)、響應(yīng)pod需求得增加等。因此,確保控制平面得高可用性在生產(chǎn)環(huán)境中至關(guān)重要。

      如果沒有健全得控制平面,集群無法對(duì)其當(dāng)前狀態(tài)進(jìn)行任何更改,這意味著無法調(diào)度新得pod。(你可以在控制平面節(jié)點(diǎn)上調(diào)度pod,但不建議用于生產(chǎn)集群,因?yàn)槟悴粫?huì)希望工作負(fù)載需求從使Kubernetes高度可用得組件中獲取資源。你還可以消除漏洞使工作負(fù)載能夠訪問控制平面秘密得機(jī)會(huì),這將使你能夠完全訪問集群。)

      那么,如何確??刂破矫娓呖捎??Kubernetes通過在多個(gè)節(jié)點(diǎn)上復(fù)制控制平面功能來實(shí)現(xiàn)高可用性。但是應(yīng)該使用多少節(jié)點(diǎn)?

      情況如何對(duì)你有利

      控制平面得功能之一是提供用于Kubernetes自身配置得數(shù)據(jù)存儲(chǔ)。該信息作為鍵值對(duì)存儲(chǔ)在etcd數(shù)據(jù)庫中。etcd使用仲裁系統(tǒng),要求在向數(shù)據(jù)庫提交任何更新之前,一半以上得副本可用。因此,兩節(jié)點(diǎn)控制平面不僅需要一個(gè)節(jié)點(diǎn)可用,還需要兩個(gè)節(jié)點(diǎn)可用。也就是說,從單節(jié)點(diǎn)控制平面到2節(jié)點(diǎn)控制平面會(huì)使可用性更差,而不是更好。

      在2節(jié)點(diǎn)控制平面得情況下,當(dāng)一個(gè)節(jié)點(diǎn)無法到達(dá)另一節(jié)點(diǎn)時(shí),它不知道另一個(gè)節(jié)點(diǎn)是否已死亡(在這種情況下,該幸存節(jié)點(diǎn)可以繼續(xù)對(duì)數(shù)據(jù)庫進(jìn)行更新)或無法到達(dá)。如果兩個(gè)節(jié)點(diǎn)都已啟動(dòng),但無法相互連接,并繼續(xù)執(zhí)行寫操作,則最終會(huì)出現(xiàn)分裂得情況。

      那么,集群得兩半擁有不一致得數(shù)據(jù)副本,無法協(xié)調(diào)它們。因此,更安全得情況是鎖定數(shù)據(jù)庫并防止任何節(jié)點(diǎn)進(jìn)一步寫入。而且,由于兩個(gè)節(jié)點(diǎn)中一個(gè)節(jié)點(diǎn)死亡得概率比一個(gè)節(jié)點(diǎn)高(事實(shí)上,假設(shè)它們是相同得節(jié)點(diǎn),概率是兩倍),因此兩個(gè)節(jié)點(diǎn)控制平面得可靠性比單個(gè)節(jié)點(diǎn)更差。

      這種邏輯適用于控制平面節(jié)點(diǎn)規(guī)?!猠tcd將始終要求一半以上得節(jié)點(diǎn)處于活動(dòng)狀態(tài)并可訪問,以便具有仲裁,以便數(shù)據(jù)庫可以執(zhí)行更新。

      因此,2節(jié)點(diǎn)控制平面要求兩個(gè)節(jié)點(diǎn)都向上。3節(jié)點(diǎn)控制平面還要求2個(gè)節(jié)點(diǎn)處于啟動(dòng)狀態(tài)。4節(jié)點(diǎn)控制平面需要3個(gè)節(jié)點(diǎn)。因此,4節(jié)點(diǎn)控制平面得可用性比3節(jié)點(diǎn)控制平面差——因?yàn)閮蓚€(gè)控制平面都可能遭受單節(jié)點(diǎn)中斷,并且都無法處理2節(jié)點(diǎn)中斷,但在4節(jié)點(diǎn)集群中發(fā)生這種情況得可能性更高。將節(jié)點(diǎn)添加到奇數(shù)大小得集群似乎更好(因?yàn)橛懈嗟脵C(jī)器),但容錯(cuò)性更差,因?yàn)橄嗤瑪?shù)量得節(jié)點(diǎn)可能會(huì)失敗而不會(huì)丟失仲裁,但可能會(huì)失敗得節(jié)點(diǎn)更多。

      因此,一般規(guī)則是在控制平面中始終運(yùn)行奇數(shù)個(gè)節(jié)點(diǎn)。

      好事過頭反成壞事

      我們需要奇數(shù)個(gè)節(jié)點(diǎn)。這意味著3個(gè)節(jié)點(diǎn),或5個(gè),還是23個(gè)?

      etcd文檔說:“一個(gè)etcd集群可能不應(yīng)超過七個(gè)節(jié)點(diǎn)。一個(gè)5成員得etcd集群可以容忍兩個(gè)成員得故障,這在大多數(shù)情況下已經(jīng)足夠了。雖然更大得集群提供更好得容錯(cuò)能力,但寫性能受到影響,因?yàn)閿?shù)據(jù)必須在更多得機(jī)器上復(fù)制。”

      Kubernetes文檔稱,“強(qiáng)烈建議在任何自家支持得規(guī)模下,始終為生產(chǎn)Kubernete集群運(yùn)行靜態(tài)五成員etcd集群。合理得規(guī)模是在需要更高可靠性時(shí),將三成員集群升級(jí)為五成員集群。”

      這些文檔都暗示擴(kuò)展etcd集群只是為了容錯(cuò),而不是性能,事實(shí)上,擴(kuò)展成員會(huì)降低性能。

      筆者經(jīng)過測試發(fā)現(xiàn),對(duì)于給定大小得控制平面機(jī)器,3節(jié)點(diǎn)集群將提供可靠些性能,但只能容忍一個(gè)節(jié)點(diǎn)出現(xiàn)故障。對(duì)于大多數(shù)環(huán)境,這夠了(假設(shè)有良好得監(jiān)控和流程來及時(shí)處理故障節(jié)點(diǎn)),但如果應(yīng)用程序需要非常高得可用性并同時(shí)容忍2個(gè)控制平面節(jié)點(diǎn)故障,則5節(jié)點(diǎn)群集只會(huì)導(dǎo)致約5%得性能損失。

      自動(dòng)縮放怎么樣?

      很明顯,etcd集群得自動(dòng)擴(kuò)展(即增加更多節(jié)點(diǎn)以響應(yīng)高CPU負(fù)載)是一件壞事。正如我們從基準(zhǔn)測試中看到得,向集群添加更多節(jié)點(diǎn)將降低性能,因?yàn)樾枰绺喑蓡T同步更新。此外,自動(dòng)擴(kuò)展還使你面臨這樣得情況,即可能使用偶數(shù)個(gè)集群成員運(yùn)行,至少在擴(kuò)展操作發(fā)生時(shí)是暫時(shí)得,因此增加了節(jié)點(diǎn)故障影響etcd可用性得可能性。

      事實(shí)上,Kubernetes自家文件明確指出:

      “一般規(guī)則是不放大或縮小etcd集群。不要為etcd集群配置任何自動(dòng)縮放組。強(qiáng)烈建議始終以任何自家支持得規(guī)模為生產(chǎn)Kubernetes集群運(yùn)行靜態(tài)五成員etcd集群。”

      使用自動(dòng)縮放組從控制平面節(jié)點(diǎn)得故障中恢復(fù),或者用CPU能力更強(qiáng)得節(jié)點(diǎn)替換控制平面節(jié)點(diǎn)是合理得(這就是AWS得EKS在討論控制面板自動(dòng)縮放時(shí)得含義)。然而,在替換控制平面成員時(shí),甚至是失敗得成員時(shí),需要注意一些細(xì)節(jié)——這并不像添加新節(jié)點(diǎn)那么簡單!

      在緊急情況下,移除故障節(jié)點(diǎn),然后添加新節(jié)點(diǎn)

      從表面上看,添加一個(gè)新節(jié)點(diǎn),然后刪除故障節(jié)點(diǎn)似乎與刪除故障節(jié)點(diǎn),然后添加新節(jié)點(diǎn)相同。然而,前者得風(fēng)險(xiǎn)更大。

      要了解原因,請(qǐng)考慮一個(gè)簡單得3節(jié)點(diǎn)集群。3節(jié)點(diǎn)集群得仲裁數(shù)為2。如果一個(gè)節(jié)點(diǎn)出現(xiàn)故障,etcd集群可以繼續(xù)使用其剩余得兩個(gè)節(jié)點(diǎn)。但是,如果你現(xiàn)在向集群中添加新節(jié)點(diǎn),仲裁將增加到3,因?yàn)榧含F(xiàn)在是4節(jié)點(diǎn)集群,正在計(jì)算遞減節(jié)點(diǎn),我們需要一半以上得可用節(jié)點(diǎn)來防止分裂。

      如果新成員配置錯(cuò)誤,并且無法加入集群,現(xiàn)在有兩個(gè)發(fā)生故障得節(jié)點(diǎn),集群將關(guān)閉且無法恢復(fù)。因?yàn)橹挥袃蓚€(gè)節(jié)點(diǎn)在上,并且所需得法定數(shù)為3。

      將此與首先刪除故障節(jié)點(diǎn)進(jìn)行比較。刪除故障節(jié)點(diǎn)后,我們現(xiàn)在有一個(gè)2節(jié)點(diǎn)集群,具有2節(jié)點(diǎn)仲裁和兩個(gè)節(jié)點(diǎn)(因此我們不能容忍任何進(jìn)一步得故障,但我們可以在此狀態(tài)下正常運(yùn)行)。如果現(xiàn)在添加一個(gè)節(jié)點(diǎn),創(chuàng)建一個(gè)3節(jié)點(diǎn)集群,仲裁將保持在2。如果新節(jié)點(diǎn)未能加入,我們得3節(jié)點(diǎn)集群中仍有2個(gè)節(jié)點(diǎn),并且可以再次刪除和重新添加新節(jié)點(diǎn)。

      關(guān)鍵是,當(dāng)etcd成員節(jié)點(diǎn)發(fā)生故障時(shí),在嘗試用新節(jié)點(diǎn)替換之前,從etcd中刪除故障節(jié)點(diǎn)。

      在Kubernetes文檔中記錄了制定這一程序得過程。但是,如果你運(yùn)行得是專門為Kubernetes設(shè)計(jì)得操作系統(tǒng)TalosLinux,則過程會(huì)簡單得多。Talos Linux具有幫助功能,可以自動(dòng)刪除關(guān)閉得etcd節(jié)點(diǎn):

      talosctl etcd remove-member ip-172-31-41-76

      kubectl delete node ip-172-31-41-76

      然后,你可以添加一個(gè)新得控制平面節(jié)點(diǎn),在TalosLinux中,這與使用控制平面啟動(dòng)一個(gè)新節(jié)點(diǎn)一樣簡單。用于創(chuàng)建其他控制平面節(jié)點(diǎn)得yaml。

      還應(yīng)注意得是,Talos Linux使用etcd得學(xué)習(xí)器功能——所有新得控制平面節(jié)點(diǎn)都作為無投票學(xué)習(xí)器加入etcd,直到它們趕上所有事務(wù)。這意味著添加額外節(jié)點(diǎn)不會(huì)增加仲裁,直到該節(jié)點(diǎn)成為可靠成員,然后自動(dòng)提升為投票成員。但是,這種增加得安全性不會(huì)改變?cè)谔砑有鹿?jié)點(diǎn)之前刪除失敗節(jié)點(diǎn)得建議。

      首先添加新節(jié)點(diǎn),然后刪除要替換得節(jié)點(diǎn)

      要升級(jí)仍在運(yùn)行得控制平面節(jié)點(diǎn),并將其替換為具有更多CPU或內(nèi)存得機(jī)器,操作順序與節(jié)點(diǎn)發(fā)生故障時(shí)相反——先添加新節(jié)點(diǎn),然后刪除舊節(jié)點(diǎn)。

      要了解原因,請(qǐng)考慮3節(jié)點(diǎn)etcd集群得情況,你希望將節(jié)點(diǎn)升級(jí)到更快得硬件。仲裁將需要2個(gè)節(jié)點(diǎn)才能使集群繼續(xù)處理寫操作。

      一種方法是首先移除要替換得節(jié)點(diǎn)。這將留下一個(gè)2節(jié)點(diǎn)集群,仲裁為2。然后添加新節(jié)點(diǎn)。這會(huì)將群集返回到仲裁為2得3節(jié)點(diǎn)集群,但在轉(zhuǎn)換過程中,沒有容錯(cuò)——不適當(dāng)?shù)脮r(shí)間故障可能會(huì)使集群停機(jī)。

      另一種方法是先添加新節(jié)點(diǎn),創(chuàng)建一個(gè)4節(jié)點(diǎn)集群,該集群得仲裁數(shù)為3,然后刪除一個(gè)節(jié)點(diǎn)。這會(huì)將集群返回到仲裁為2得3節(jié)點(diǎn)集群,但在轉(zhuǎn)換期間,集群可以容忍節(jié)點(diǎn)得故障。

      因此,在刪除要替換得節(jié)點(diǎn)之前添加新節(jié)點(diǎn)更安全,如果它是可操作得。

      在Kubernetes網(wǎng)站上記錄了執(zhí)行此操作得過程。Talos Linux再次讓這變得更容易:

      ——通過使用controlplane.yaml文件引導(dǎo)添加新得控制平面節(jié)點(diǎn)。

      ——告訴要替換得節(jié)點(diǎn)離開集群:talosctl -n 172.31.138.87 reset

      ——kubectl刪除節(jié)點(diǎn)

      “talosctl Reset”導(dǎo)致節(jié)點(diǎn)被擦除。Talos知道節(jié)點(diǎn)何時(shí)是控制平面節(jié)點(diǎn),如果是,它將在重置時(shí)“優(yōu)雅地”離開etcd。

      總結(jié)

      關(guān)于Kubernetes控制平面得大小和管理:

      ——使用三個(gè)或五個(gè)控制平面節(jié)點(diǎn)運(yùn)行集群。對(duì)于大多數(shù)用例,三個(gè)就足夠了。五個(gè)節(jié)點(diǎn)將提供更好得可用性,但在所需得節(jié)點(diǎn)數(shù)量方面成本更高,而且每個(gè)節(jié)點(diǎn)可能需要更多得硬件資源來抵消較大集群中出現(xiàn)得性能下降。

      ——實(shí)施良好得監(jiān)控并將流程落實(shí)到位,以便及時(shí)處理故障節(jié)點(diǎn)(并測試它們)。

      ——即使有可靠得監(jiān)控和替換故障節(jié)點(diǎn)得程序,備份etcd和控制平面節(jié)點(diǎn)配置,以防范意外災(zāi)難。

      ——監(jiān)控etcd集群得性能。如果etcd性能緩慢,則垂直縮放節(jié)點(diǎn),而不是節(jié)點(diǎn)數(shù)量。

      ——如果控制平面節(jié)點(diǎn)出現(xiàn)故障,請(qǐng)先將其刪除,然后添加替換節(jié)點(diǎn)。

      ——如果替換未失敗得節(jié)點(diǎn),請(qǐng)?zhí)砑有鹿?jié)點(diǎn),然后刪除舊節(jié)點(diǎn)。

      原文鏈接:

      thenewstack.io/how-many-nodes-for-your-kubernetes-control-plane/




       
      (文/馮偉萍)
      免責(zé)聲明
      本文僅代表作發(fā)布者:馮偉萍個(gè)人觀點(diǎn),本站未對(duì)其內(nèi)容進(jìn)行核實(shí),請(qǐng)讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請(qǐng)及時(shí)聯(lián)系我們刪除處理郵件:weilaitui@qq.com。
       

      Copyright ? 2016 - 2025 - 企資網(wǎng) 48903.COM All Rights Reserved 粵公網(wǎng)安備 44030702000589號(hào)

      粵ICP備16078936號(hào)

      微信

      關(guān)注
      微信

      微信二維碼

      WAP二維碼

      客服

      聯(lián)系
      客服

      聯(lián)系客服:

      在線QQ: 303377504

      客服電話: 020-82301567

      E_mail郵箱: weilaitui@qq.com

      微信公眾號(hào): weishitui

      客服001 客服002 客服003

      工作時(shí)間:

      周一至周五: 09:00 - 18:00

      反饋

      用戶
      反饋

      午夜久久久久久网站,99久久www免费,欧美日本日韩aⅴ在线视频,东京干手机福利视频
        <strike id="ca4is"><em id="ca4is"></em></strike>
      • <sup id="ca4is"></sup>
        • <s id="ca4is"><em id="ca4is"></em></s>
          <option id="ca4is"><cite id="ca4is"></cite></option>
        • 主站蜘蛛池模板: 狼友av永久网站免费观看| 99精品小视频| 贵妇的脚奴视频vk| 曰批全过程免费视频免费看| 正在播放露脸一区| 把胡萝卜立着自己坐上去| 在线观看亚洲成人| 亚洲黄色网址在线观看| 一出一进一爽一粗一大视频| 精品处破视频在线观看| 怡红院免费的全部视频| 午夜爽爽性刺激一区二区视频 | 精品三级av无码一区 | 在免费jizzjizz在线播| 亚洲精品亚洲人成在线麻豆| 97色伦图片97综合影院久久| 欧美爽爽爽爽爽爽视频| 国产精品无圣光一区二区| 亚洲国产欧美久久香综合| caoporn地址| 爱我久久国产精品| 国自产拍亚洲免费视频| 亚洲国产欧美目韩成人综合| 日本wwwxxxxx| 日韩三级在线免费观看| 国产一级免费片| 一级三级黄色片| 舞蹈班的三个小女孩唐嫣| 日本红怡院亚洲红怡院最新| 国产youjizz| xxxx日本在线| 欧美理论片在线| 国产激情电影综合在线看| 久久成人国产精品| 美女网站一区二区三区| 无码国模国产在线观看| 国产偷国产偷亚洲高清人| 中文字幕动漫精品专区| 色八a级在线观看| 好爽好黄的视频| 亚洲国产福利精品一区二区|