新聞中心
背景
Kubernetes 從設(shè)計上允許同一個 Kubernetes 集群跨多個失效區(qū)來運行, 通常這些區(qū)位于某個稱作 區(qū)域(region) 邏輯分組中。 主要的云提供商都將區(qū)域定義為一組失效區(qū)的集合(也稱作 可用區(qū)(Availability Zones)), 能夠提供一組一致的功能特性:每個區(qū)域內(nèi),各個可用區(qū)提供相同的 API 和服務(wù)。

10余年的普寧網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都全網(wǎng)營銷的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整普寧建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“普寧網(wǎng)站設(shè)計”,“普寧網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
典型的云體系結(jié)構(gòu)都會嘗試降低某個區(qū)中的失效影響到其他區(qū)中服務(wù)的概率。
控制面行為
所有的控制面組件 都支持以一組可相互替換的資源池的形式來運行,每個組件都有多個副本。
當你部署集群控制面時,應(yīng)將控制面組件的副本跨多個失效區(qū)來部署。 如果可用性是一個很重要的指標,應(yīng)該選擇至少三個失效區(qū),并將每個 控制面組件(API 服務(wù)器、調(diào)度器、etcd、控制器管理器)復(fù)制多個副本, 跨至少三個失效區(qū)來部署。如果你在運行云控制器管理器,則也應(yīng)該將 該組件跨所選的三個失效區(qū)來部署。
Note:
Kubernetes 并不會為 API 服務(wù)器端點提供跨失效區(qū)的彈性。 你可以為集群 API 服務(wù)器使用多種技術(shù)來提升其可用性,包括使用 DNS 輪轉(zhuǎn)、SRV 記錄或者帶健康檢查的第三方負載均衡解決方案等等。
節(jié)點行為
Kubernetes 自動為負載資源(如Deployment 或 StatefulSet)) 跨集群中不同節(jié)點來部署其 Pods。 這種分布邏輯有助于降低失效帶來的影響。
節(jié)點啟動時,每個節(jié)點上的 kubelet 會向 Kubernetes API 中代表該 kubelet 的 Node 對象 添加 標簽。 這些標簽可能包含區(qū)信息。
如果你的集群跨了多個可用區(qū)或者地理區(qū)域,你可以使用節(jié)點標簽,結(jié)合 Pod 拓撲分布約束 來控制如何在你的集群中多個失效域之間分布 Pods。這里的失效域可以是 地理區(qū)域、可用區(qū)甚至是特定節(jié)點。 這些提示信息使得調(diào)度器 能夠更好地分布 Pods,以實現(xiàn)更好的可用性,降低因為某種失效給整個工作負載 帶來的風險。
例如,你可以設(shè)置一種約束,確保某個 StatefulSet 中的三個副本都運行在 不同的可用區(qū)中,只要其他條件允許。你可以通過聲明的方式來定義這種約束, 而不需要顯式指定每個工作負載使用哪些可用區(qū)。
跨多個區(qū)分布節(jié)點
Kubernetes 的核心邏輯并不會幫你創(chuàng)建節(jié)點,你需要自行完成此操作,或者使用 類似 Cluster API 這類工具來替你管理節(jié)點。
使用類似 Cluster API 這類工具,你可以跨多個失效域來定義一組用做你的集群 工作節(jié)點的機器,以及當整個區(qū)的服務(wù)出現(xiàn)中斷時如何自動治愈集群的策略。
為 Pods 手動指定區(qū)
你可以應(yīng)用節(jié)點選擇算符約束 到你所創(chuàng)建的 Pods 上,或者為 Deployment、StatefulSet 或 Job 這類工作負載資源 中的 Pod 模板設(shè)置此類約束。
跨區(qū)的存儲訪問
當創(chuàng)建持久卷時,?PersistentVolumeLabel ?準入控制器 會自動向那些鏈接到特定區(qū)的 PersistentVolume 添加區(qū)標簽。 調(diào)度器通過其 ?NoVolumeZoneConflict ?斷言確保申領(lǐng)給定 PersistentVolume 的 Pods 只會 被調(diào)度到該卷所在的可用區(qū)。
你可以為 PersistentVolumeClaim 指定StorageClass 以設(shè)置該類中的存儲可以使用的失效域(區(qū))。
網(wǎng)絡(luò)
Kubernetes 自身不提供與可用區(qū)相關(guān)的聯(lián)網(wǎng)配置。 你可以使用網(wǎng)絡(luò)插件 來配置集群的聯(lián)網(wǎng),該網(wǎng)絡(luò)解決方案可能擁有一些與可用區(qū)相關(guān)的元素。 例如,如果你的云提供商支持 ?type=LoadBalancer? 的 Service,則負載均衡器 可能僅會將請求流量發(fā)送到運行在負責處理給定連接的負載均衡器組件所在的區(qū)。 請查閱云提供商的文檔了解詳細信息。
對于自定義的或本地集群部署,也可以考慮這些因素 Service Ingress 的行為, 包括處理不同失效區(qū)的方法,在很大程度上取決于你的集群是如何搭建的。
失效恢復(fù)
在搭建集群時,你可能需要考慮當某區(qū)域中的所有失效區(qū)都同時掉線時,是否以及如何 恢復(fù)服務(wù)。例如,你是否要求在某個區(qū)中至少有一個節(jié)點能夠運行 Pod? 請確保任何對集群很關(guān)鍵的修復(fù)工作都不要指望集群中至少有一個健康節(jié)點。 例如:當所有節(jié)點都不健康時,你可能需要運行某個修復(fù)性的 Job, 該 Job 要設(shè)置特定的容忍度 以便修復(fù)操作能夠至少將一個節(jié)點恢復(fù)為可用狀態(tài)。
Kubernetes 對這類問題沒有現(xiàn)成的解決方案;不過這也是要考慮的因素之一。
文章名稱:創(chuàng)新互聯(lián)kubernetes教程:Kubernetes運行于多可用區(qū)環(huán)境
轉(zhuǎn)載來源:http://m.fisionsoft.com.cn/article/dhjeopi.html


咨詢
建站咨詢
