共計 2854 個字符,預(yù)計需要花費 8 分鐘才能閱讀完成。
本篇內(nèi)容介紹了“Kubernetes 聯(lián)邦機制是什么”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
Federation(聯(lián)邦)
此頁面解釋了為什么以及如何使用聯(lián)邦來管理多個 Kubernetes 集群。
Why federation
Caveats
Hybrid cloud capabilities
Setting up federation
API resources
Cascading deletion
Scope of a single cluster
Selecting the right number of clusters
What’s next
為什么聯(lián)邦
聯(lián)合可以輕松管理多個群集。它通過提供 2 個主要構(gòu)件來實現(xiàn):
跨群集同步資源:聯(lián)邦可以使多個群集中的資源保持同步。例如,可以確保多個群集中部署相同的程序。
跨群集發(fā)現(xiàn):聯(lián)邦提供了自動配置 DNS 服務(wù)器和負(fù)載均衡器與所有群集后端的功能。例如,您可以確保可以使用全局 VIP 或 DNS 記錄來訪問多個群集的后端。
聯(lián)邦的一些其它用處如下:
高可用:通過在群集之間傳播負(fù)載并自動配置 DNS 服務(wù)器和負(fù)載平衡器,聯(lián)邦會將群集故障的影響降至最低。
避免提供者鎖定(lock-in):通過更輕松地跨群集遷移應(yīng)用程序,聯(lián)邦會阻止群集提供者鎖定(lock-in)。
除非有多個集群,否則聯(lián)邦并沒有任何用。你可能需要多個集群的一些原因有:
低延遲:讓多個區(qū)域中的集群通過向距離它們最近的集群提供服務(wù)來最大限度地減少延遲。
故障隔離:最好有多個小型集群而不是一個單獨人大型集群來進(jìn)行故障隔離(例如:云提供商的不同可用區(qū)域中有多個集群)。
可擴展性:單個 kubernetes 集群具有可擴展性限制(大多數(shù)用戶不應(yīng)該這樣做,更多詳情請參閱 Kubernetes Scaling 和 Performance Goals)。
混合云:可以在不同的云提供商或本地數(shù)據(jù)中心上擁有多個群集。
注意事項
雖然聯(lián)邦有很多有吸引力的用處,但也有一些注意事項:
增加網(wǎng)絡(luò)帶寬和成本:聯(lián)邦控制臺監(jiān)視所有群集以確保當(dāng)前狀態(tài)符合預(yù)期。如果集群在云提供商或不同云提供商的不同區(qū)域 (regions) 運行,這可能會導(dǎo)致顯著的網(wǎng)絡(luò)成本。
減少跨群集隔離:聯(lián)邦控制臺中的錯誤可能影響所有群集。通過將聯(lián)邦控制臺中的邏輯保持最簡,可以緩解這一問題。只要可能,它大部分都會委托給控制臺的 kubernetes 集群中。設(shè)計和實施也在安全方面做了很多考慮,并避免發(fā)生錯誤時多集群停機。
成熟度:聯(lián)邦項目相對較新,不太成熟。并非所有資源都可用,許多資源仍然是 alpha 狀態(tài)。Issue 88 列舉了團(tuán)隊忙于解決的系統(tǒng)已知問題。
混合云功能
Kubernetes 集群聯(lián)邦可以運行在不同云提供商(例如 Google Cloud,AWS)和本地(例如 OpenStack)中的集群。Kubefed 是部署聯(lián)邦集群的推薦方式。
此后,您的 API 資源可以跨越不同的集群和云提供商。
設(shè)置聯(lián)邦
為了能夠聯(lián)合多個集群,首先需要設(shè)置聯(lián)邦控制臺。按照設(shè)置指南進(jìn)行設(shè)置。
API 資源
一旦設(shè)置了控制臺,就可以開始創(chuàng)建聯(lián)邦 API 資源。以下指南詳細(xì)解釋了一些資源:
Cluster
ConfigMap
DaemonSets
Deployment
Events
Hpa
Ingress
Jobs
Namespaces
ReplicaSets
Secrets
Services
API 參考文檔列出了聯(lián)邦 apiserver 支持的所有資源。
級聯(lián)刪除
Kubernetes 1.6 版支持級聯(lián)刪除聯(lián)邦資源。當(dāng)從聯(lián)邦控制臺中刪除資源時,還會刪除所有基礎(chǔ)集群中的相應(yīng)資源。
在使用 REST API 時,級聯(lián)刪除在默認(rèn)情況下不會啟用。要啟用它,請在使用 REST API 從聯(lián)邦控制臺中刪除資源時設(shè)置 DeleteOptions.orphanDependents=false 選項。使用 kubectl delete 可以在默認(rèn)情況下啟用級聯(lián)刪除。還可以通過運行 kubectl delete –cascade=false 來禁用它
注意:Kubernetes 版本 1.5 包括對聯(lián)邦資源子集的級聯(lián)刪除支持。
單個群集的范圍
在諸如 Google Compute Engine 或 Amazon Web Services 之類的 IaaS 供應(yīng)商中,虛擬機存在于 zone 或 AZ 中。我們建議 Kubernetes 集群中的所有虛擬機應(yīng)位于相同的可用區(qū)域中,因為:
與具有單個全局 Kubernetes 集群相比,單點故障的數(shù)量更少。
與跨越可用區(qū)域的集群相比,更容易推斷單區(qū)域群集的可用性屬性。
當(dāng) Kubernetes 開發(fā)人員正在設(shè)計系統(tǒng)時(例如對延遲,帶寬或相關(guān)故障進(jìn)行假設(shè)),他們假設(shè)所有機器都位于單個數(shù)據(jù)中心或連接非常近。
建議在每個可用區(qū)域運行更少的虛擬機群集; 但可以在每個可用區(qū)域運行多個群集。
選擇每個可用區(qū)域較少群集的理由是:
在某些情況下,在一個群集中有更多節(jié)點(更少的資源),可以改進(jìn) Pod 的裝箱包裝。
降低了運維開銷(盡管隨著操作工具和流程的成熟,優(yōu)勢沒那么明顯了)。
降低每個集群固定資源花費的成本,例如,apiserver 虛擬機(但對于大中型集群整體集群成本的比例很小)。
有多個集群的原因包括:
嚴(yán)格的安全策略要求將一類工作與另一類工作隔離(但請參閱下面的分區(qū)集群)
測試群集 canary 到新 Kubernetes 版本或其他群集軟件。
選擇正確數(shù)量的集群
選擇 Kubernetes 集群的數(shù)量一般是不會變的,只是偶爾會重新審視(revisited occasionally)。相比之下,集群中的節(jié)點數(shù)量和服務(wù)中的 pod 數(shù)量可能會隨著負(fù)載和業(yè)務(wù)增長頻繁變化。
要選擇集群數(shù)量,首先需要確定您需要在哪些區(qū)域 (region) 進(jìn)行部署,以便在 Kubernetes 上運行的服務(wù)為所有最終用戶提供最低的延遲,(如果使用內(nèi)容分發(fā)網(wǎng)絡(luò),則 CDN- 托管內(nèi)容不需要考慮)。法律問題也可能會對此產(chǎn)生影響。例如,一家擁有全球客戶群的公司可能會決定在美國,歐盟,美聯(lián)社和南非地區(qū)擁有集群。需要使用的區(qū)域的數(shù)量為 R。
其次,確定在不影響整體業(yè)務(wù)的情況下,最多可以容忍有多少個群集同時不可用。將不最多不可用集群數(shù)量設(shè)為 U. 如果您不確定,那么 U = 1 是一個不錯的選擇。
如果允許負(fù)載平衡在發(fā)生集群故障時將流量引導(dǎo)至任何區(qū)域,則至少需要較大的 R 或 U + 1 集群。如果不是(例如,如果要確保發(fā)生群集故障時所有用戶的延遲較低),則需要具有 R *(U + 1)群集(每個 R 區(qū)域中的 U + 1)。無論如何,嘗試將每個集群放入不同的區(qū)域。
最后,如果需要構(gòu)建一個比 Kubernetes 的最大建議節(jié)點數(shù)量多的集群,則可能需要多個群集。Kubernetes v1.3 支持最多 1000 個節(jié)點的群集。Kubernetes v1.8 支持多達(dá) 5000 個節(jié)點的集群。有關(guān)更多指導(dǎo),請參閱構(gòu)建大型集群。
“Kubernetes 聯(lián)邦機制是什么”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注丸趣 TV 網(wǎng)站,丸趣 TV 小編將為大家輸出更多高質(zhì)量的實用文章!