您好,登錄后才能下訂單哦!
引 言
假設(shè)您的業(yè)務(wù)是在線的:您擁有自己的數(shù)據(jù)中心,擁有用于運(yùn)行您網(wǎng)站的私有云。您需要部署許多服務(wù)器來運(yùn)行應(yīng)用程序并存儲其數(shù)據(jù)。 也許大多數(shù)時(shí)候,您的網(wǎng)站的整體流量非常穩(wěn)定。但也許也有時(shí)候,網(wǎng)站的流量會面臨突然的增長,這時(shí)您該如何應(yīng)對? 首先,您需要能夠擴(kuò)展應(yīng)用程序,以應(yīng)對流量增加。若您不想在每年只使用幾次的新硬件上額外花錢,您可以考慮轉(zhuǎn)向混合云模式。 從私有云轉(zhuǎn)向混合云,可以大大節(jié)省時(shí)間和成本。將應(yīng)用程序(部分)擴(kuò)展到公有云后,您就只需在使用它們時(shí)、僅為您所使用的資源付費(fèi)。 但是,您該如何選擇公有云?您可以選擇多個(gè)公有云嗎? 簡短來說,回答是肯定的,您很有可能需要選擇多個(gè)公有云提供商。您也許有不同的團(tuán)隊(duì),需要處理不同的應(yīng)用程序,有不同的要求,因此一個(gè)云提供商可能無法滿足您的所有需求。此外,許多組織需要遵守某些法律、法規(guī)和政策,這些法律、法規(guī)和政策要求他們的數(shù)據(jù)必須實(shí)際駐留在某些特定地點(diǎn)。使用多個(gè)公有云的策略可以幫助組織滿足這些嚴(yán)格的、多樣化的要求。他們還可以從多個(gè)數(shù)據(jù)中心區(qū)域或可用區(qū)域中進(jìn)行選擇,以盡可能接近最終用戶,從而為他們提供最佳性能和最小延遲。 跨云擴(kuò)展的挑戰(zhàn) 你已經(jīng)決定使用云了,所以讓我們回過頭來思考一下最初的問題。您的應(yīng)用程序具有針對您的應(yīng)用程序的微服務(wù)部署架構(gòu),這一架構(gòu)上運(yùn)行著需要擴(kuò)展的容器。而這,就是Kubernetes發(fā)揮作用的地方。Kubernetes這一解決方案,可幫助您管理和編排節(jié)點(diǎn)集群中的容器化應(yīng)用程序。雖然Kubernetes將幫助您管理和擴(kuò)展部署、節(jié)點(diǎn)和集群,但它無法幫助您輕松地跨云提供商管理和擴(kuò)展它們。這一點(diǎn)我們會在稍后詳細(xì)介紹。 Kubernetes集群是一組機(jī)器(物理/虛擬),Kubernetes為集群提供資源以運(yùn)行應(yīng)用程序。首先,您需要了解的基本Kubernetes概念是: Pod是控制一個(gè)或多個(gè)容器的單元,它會作為一個(gè)應(yīng)用程序來被調(diào)度。通常,您應(yīng)該為每個(gè)應(yīng)用程序創(chuàng)建一個(gè)Pod,以便您可以單獨(dú)擴(kuò)展和控制它們。 節(jié)點(diǎn)組件是Kubernetes中的worker machine。節(jié)點(diǎn)可以是虛擬機(jī)(VM)或物理機(jī),具體取決于集群。每個(gè)節(jié)點(diǎn)都包含運(yùn)行pod所需的服務(wù),并由主組件管理。 主組件管理著Pod的生命周期。如果Pod死亡,Controller會創(chuàng)建一個(gè)新的Pod;如果你對Pod進(jìn)行擴(kuò)容或縮容,那么Controller會創(chuàng)建/銷毀你的Pod。有關(guān)Controller類型的更多信息,可以參閱此處: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/ 這三個(gè)組件的作用是擴(kuò)展和調(diào)度容器。主組件指示調(diào)度和擴(kuò)容的命令,然后節(jié)點(diǎn)相應(yīng)地根據(jù)命令來編排pod。 上述只是Kubernetes非?;A(chǔ)的概念,這篇《零基礎(chǔ)入門│帶你理解Kubernetes》可以帶你更詳細(xì)地理解Kubernetes。 嘗試使用Kubernetes解決跨云擴(kuò)展的問題時(shí),會遇到一些關(guān)鍵挑戰(zhàn): 難以管理多個(gè)云、多個(gè)集群,設(shè)置用戶,設(shè)置策略 安裝和配置的復(fù)雜性 不同環(huán)境的用戶或團(tuán)隊(duì)會有不同體驗(yàn) Rancher可以幫助您解決上述難題。Rancher是一個(gè)開源的容器管理平臺,用于在生產(chǎn)中運(yùn)行Kubernetes。Rancher的下述功能可以幫助我們管理和擴(kuò)展我們的應(yīng)用程序,無論計(jì)算資源是在本地托管還是在多個(gè)云上托管: 跨多個(gè)集群和云的通用基礎(chǔ)架構(gòu)管理 簡單易用的Kubernetes配置和部署界面 一鍵輕松擴(kuò)展Pod和集群 訪問控制和用戶管理(ldap,AD) 工作負(fù)載、RBAC、政策和項(xiàng)目管理 在多云、甚至有可能是多個(gè)任何可以運(yùn)行Kubernetes的基礎(chǔ)架構(gòu)上,Rancher都可以成為您的多個(gè)Kubernetes集群的單一控制點(diǎn)。 下面讓我們看看我們?nèi)绾喂芾韮蓚€(gè)不同區(qū)域的多個(gè)Kubernetes集群。 啟動(dòng)Rancher 2.0實(shí)例 首先,啟動(dòng)Rancher 2.0實(shí)例。具體方法可以參照這個(gè)快速上手指南:https://rancher.com/quick-start/ 上手Rancher和Kubernetes 讓我們在兩個(gè)不同的地區(qū)的GCP中創(chuàng)建兩個(gè)托管的Kubernetes集群。為此,您需要一個(gè)服務(wù)帳戶密鑰。 在Global選項(xiàng)卡中,我們可以看到所有可用的集群及其狀態(tài)。從Provisioning狀態(tài)開始,集群準(zhǔn)備好后,狀態(tài)會變成Active。 現(xiàn)在我們已經(jīng)從Kubernetes集群中為每個(gè)節(jié)點(diǎn)部署了許多pod。這些pod將由Kubernetes和Rancher的內(nèi)部系統(tǒng)使用。 下面繼續(xù)為兩個(gè)集群部署工作負(fù)載。按順序選擇默認(rèn)項(xiàng)目; 這將打開Workloads選項(xiàng)卡。單擊Deploy,將第一個(gè)集群的名稱及Docker鏡像設(shè)置為httpd,第二個(gè)集群的設(shè)置為nginx,因?yàn)槲覀兿M麑⑽覀兊腤eb服務(wù)器暴露給Port映射區(qū)域。選擇一個(gè)四層負(fù)載均衡中的Internet流量。 如果單擊nginx / httpd工作負(fù)載,您將看到Rancher實(shí)際上按照Kubernetes的建議創(chuàng)建了一個(gè)部署來管理ReplicaSet。您還將看到這個(gè)ReplicaSet創(chuàng)建的Pod。 擴(kuò)展Pod和集群 Rancher實(shí)例正在管理兩個(gè)集群: us-east1b-cluster,運(yùn)行5個(gè)httpd Pod europe-west4-a cluster,運(yùn)行1個(gè) nginx Pod 單擊Scale列下的“-”(減號圖標(biāo)),可以減少httpd Pod。我們很快就看到Pod數(shù)量減少了。 若想要擴(kuò)展pod,請單擊Scale列下的“+”(加號圖標(biāo))。完成后,您可以立即看到Pod正在被創(chuàng)建,以及ReplicaSet正在擴(kuò)展事件。使用Pod的右側(cè)菜單嘗試刪除其中一個(gè)pod,留意觀察ReplicaSet如何重新創(chuàng)建它,以匹配所需的狀態(tài)。 如此一來,第一個(gè)集群的httpd Pod數(shù)從5個(gè)變到了2個(gè),第二個(gè)集群的nginx Pod從1個(gè)變到了7個(gè)?,F(xiàn)在,第二個(gè)集群看起來幾乎耗盡了資源。 通過Rancher,我們還可以通過添加額外的節(jié)點(diǎn)來擴(kuò)展集群。下面嘗試這樣做一下,讓我們將節(jié)點(diǎn)數(shù)編輯為5。 雖然是Rancher向我們展示了“協(xié)調(diào)集群”,但其實(shí)是Kubernetes在幕后升級集了群主服務(wù)器并調(diào)整節(jié)點(diǎn)池的大小。 稍等一下,最終你應(yīng)該看到5個(gè)節(jié)點(diǎn)啟動(dòng)并運(yùn)行。 讓我們檢查一下Global選項(xiàng)卡,這樣我們就可以對Rancher正在管理的所有集群有一個(gè)全局的了解。 現(xiàn)在我們可以添加更多Pod(如果我們想的話),因?yàn)楝F(xiàn)在我們有新的可用資源了。下面試著把pod數(shù)變?yōu)?3。 最重要的是,所有這些操作都是在沒有停機(jī)的情況下完成的。在向上或向下擴(kuò)展Pod或調(diào)整集群大小時(shí),為httpd / nginx部署命中公有IP,HTTP響應(yīng)狀態(tài)代碼始終為200。 總 結(jié) 讓我們回顧一下我們的Kubernetes集群縮放練習(xí): 我們使用Rancher創(chuàng)建了兩個(gè)集群 我們部署了含有1個(gè) nginx Pod和5個(gè)httpd Pod的工作負(fù)載 對這兩個(gè)部署進(jìn)行擴(kuò)容和縮容 調(diào)整了集群的大小 所有這些操作,都是通過在Rancher友好且直觀的UI上,通過一些簡單點(diǎn)擊而完成的。當(dāng)然,您也可以完全使用API完成這些操作。 在任何一種情況下,您都有一個(gè)中心點(diǎn),您可以從中管理所有Kubernetes集群,觀察其狀態(tài)或根據(jù)需要擴(kuò)展部署。如果您正在尋找一種工具來幫助您在混合/多云、多區(qū)域集群中進(jìn)行基礎(chǔ)架構(gòu)管理和容器編排,那么開源的Rancher Kubernetes平臺可能非常適合您。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。