国产高清吹潮免费视频,老熟女@tubeumtv,粉嫩av一区二区三区免费观看,亚洲国产成人精品青青草原

二維碼
企資網

掃一掃關注

當前位置: 首頁 » 企資快報 » 今日熱聞 » 正文

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

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

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

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

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

控制平面運行得組件允許集群提供高可用性、從工作節(jié)點故障中恢復、響應pod需求得增加等。因此,確??刂破矫娴酶呖捎眯栽谏a環(huán)境中至關重要。

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

那么,如何確保控制平面高可用?Kubernetes通過在多個節(jié)點上復制控制平面功能來實現(xiàn)高可用性。但是應該使用多少節(jié)點?

情況如何對你有利

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

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

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

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

因此,2節(jié)點控制平面要求兩個節(jié)點都向上。3節(jié)點控制平面還要求2個節(jié)點處于啟動狀態(tài)。4節(jié)點控制平面需要3個節(jié)點。因此,4節(jié)點控制平面得可用性比3節(jié)點控制平面差——因為兩個控制平面都可能遭受單節(jié)點中斷,并且都無法處理2節(jié)點中斷,但在4節(jié)點集群中發(fā)生這種情況得可能性更高。將節(jié)點添加到奇數(shù)大小得集群似乎更好(因為有更多得機器),但容錯性更差,因為相同數(shù)量得節(jié)點可能會失敗而不會丟失仲裁,但可能會失敗得節(jié)點更多。

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

好事過頭反成壞事

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

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

Kubernetes文檔稱,“強烈建議在任何自家支持得規(guī)模下,始終為生產Kubernete集群運行靜態(tài)五成員etcd集群。合理得規(guī)模是在需要更高可靠性時,將三成員集群升級為五成員集群?!?/p>

這些文檔都暗示擴展etcd集群只是為了容錯,而不是性能,事實上,擴展成員會降低性能。

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

自動縮放怎么樣?

很明顯,etcd集群得自動擴展(即增加更多節(jié)點以響應高CPU負載)是一件壞事。正如我們從基準測試中看到得,向集群添加更多節(jié)點將降低性能,因為需要跨更多成員同步更新。此外,自動擴展還使你面臨這樣得情況,即可能使用偶數(shù)個集群成員運行,至少在擴展操作發(fā)生時是暫時得,因此增加了節(jié)點故障影響etcd可用性得可能性。

事實上,Kubernetes自家文件明確指出:

“一般規(guī)則是不放大或縮小etcd集群。不要為etcd集群配置任何自動縮放組。強烈建議始終以任何自家支持得規(guī)模為生產Kubernetes集群運行靜態(tài)五成員etcd集群?!?/p>

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

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

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

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

如果新成員配置錯誤,并且無法加入集群,現(xiàn)在有兩個發(fā)生故障得節(jié)點,集群將關閉且無法恢復。因為只有兩個節(jié)點在上,并且所需得法定數(shù)為3。

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

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

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

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

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

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

還應注意得是,Talos Linux使用etcd得學習器功能——所有新得控制平面節(jié)點都作為無投票學習器加入etcd,直到它們趕上所有事務。這意味著添加額外節(jié)點不會增加仲裁,直到該節(jié)點成為可靠成員,然后自動提升為投票成員。但是,這種增加得安全性不會改變在添加新節(jié)點之前刪除失敗節(jié)點得建議。

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

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

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

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

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

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

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

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

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

——kubectl刪除節(jié)點

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

總結

關于Kubernetes控制平面得大小和管理:

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

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

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

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

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

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

原文鏈接:

感謝分享thenewstack.io/how-many-nodes-for-your-kubernetes-control-plane/




 
(文/馮偉萍)
打賞
免責聲明
本文為馮偉萍推薦作品?作者: 馮偉萍。歡迎轉載,轉載請注明原文出處:http://biorelated.com/qzkb/show-109515.html 。本文僅代表作者個人觀點,本站未對其內容進行核實,請讀者僅做參考,如若文中涉及有違公德、觸犯法律的內容,一經發(fā)現(xiàn),立即刪除,作者需自行承擔相應責任。涉及到版權或其他問題,請及時聯(lián)系我們郵件:weilaitui@qq.com。
 

Copyright ? 2016 - 2023 - 企資網 48903.COM All Rights Reserved 粵公網安備 44030702000589號

粵ICP備16078936號

微信

關注
微信

微信二維碼

WAP二維碼

客服

聯(lián)系
客服

聯(lián)系客服:

在線QQ: 303377504

客服電話: 020-82301567

E_mail郵箱: weilaitui@qq.com

微信公眾號: weishitui

客服001 客服002 客服003

工作時間:

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

反饋

用戶
反饋