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

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


咨詢
建站咨詢
