本篇內(nèi)容主要講解“SpringCloud應(yīng)用在Kubernetes上的方法是什么”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“SpringCloud應(yīng)用在Kubernetes上的方法是什么”吧!
公司主營業(yè)務(wù):成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、移動網(wǎng)站開發(fā)等業(yè)務(wù)。幫助企業(yè)客戶真正實(shí)現(xiàn)互聯(lián)網(wǎng)宣傳,提高企業(yè)的競爭能力。創(chuàng)新互聯(lián)是一支青春激揚(yáng)、勤奮敬業(yè)、活力青春激揚(yáng)、勤奮敬業(yè)、活力澎湃、和諧高效的團(tuán)隊(duì)。公司秉承以“開放、自由、嚴(yán)謹(jǐn)、自律”為核心的企業(yè)文化,感謝他們對我們的高要求,感謝他們從不同領(lǐng)域給我們帶來的挑戰(zhàn),讓我們激情的團(tuán)隊(duì)有機(jī)會用頭腦與智慧不斷的給客戶帶來驚喜。創(chuàng)新互聯(lián)推出回民免費(fèi)做網(wǎng)站回饋大家。
從應(yīng)用的部署變更層次來看,可以分為以下三層:
所以對應(yīng)了以下的回滾場景:
回滾應(yīng)用內(nèi)的配置,適用于由于應(yīng)用配置變更導(dǎo)致的問題,此時如果應(yīng)用能夠?qū)崿F(xiàn)動態(tài)的配置加載,通過回滾配置就能實(shí)現(xiàn)業(yè)務(wù)恢復(fù)的目的,否則需要重啟應(yīng)用;
回滾應(yīng)用代碼的版本,適用于代碼修改導(dǎo)致的問題。此時需要回滾代碼的版本(鏡像),重啟應(yīng)用;
回滾應(yīng)用的工作負(fù)載與運(yùn)維配置(基礎(chǔ)設(shè)施層)。
應(yīng)用內(nèi)的配置通常與應(yīng)用系統(tǒng)需要或業(yè)務(wù)邏輯配置有關(guān),如配置數(shù)據(jù)庫的連接信息,業(yè)務(wù)規(guī)則配置等,配置的變更也很容易造成線上系統(tǒng)的問題,一般的做法是通過 configmap 或 properties 配置文件來實(shí)現(xiàn),這種情況下很難做到動態(tài)推送和回滾的能力,因?yàn)榛貪L需要保存不同版本的配置。
通過 分布配置管理(ACM)(EDAS 默認(rèn)支持)很容易實(shí)現(xiàn)配置的集中管理,回滾和灰度,分布式推送,審計(jì)等功能??梢栽?ACM 或 EDAS 的控制臺上實(shí)現(xiàn)一鍵回滾,如下圖所示:
Deployment 是一種常見部署的應(yīng)用的 workload,回滾代碼其實(shí)對應(yīng)了回滾對應(yīng)代碼版本的鏡像,其實(shí)就是對應(yīng)就是 Deployment 的回滾,Kubernetes 可以通過以下方式支持 Deployment 的回滾。
在一個標(biāo)準(zhǔn)的 Kubernetes 體系下,如果出現(xiàn)新版本的 pod 不能正常工作,需要將 deployment 回滾到歷史版本,Kubernetes 提供了原生的支持;其原理是在默認(rèn)情況下,Kubernetes 會將歷史記錄保留在系統(tǒng)中,直接使用使用 rollout 命令回滾即可,如下:
回滾到上一個版本
kubectl rollout undo deployment.v1.apps/{deployment.name}
回滾到指定的版本:可以通過kubectl rollout history
查看歷史的版本
kubectl rollout history deployment.v1.apps/{deployment.name}
可以通過以下命令回滾到指定的版本
kubectl rollout undo deployment.v1.apps/{deployment.name} --to-revision={version}
而在 EDAS 中,結(jié)合了原生的能力做了更豐富的白屏的體驗(yàn),我們就發(fā)布過程中和發(fā)布完成后兩個場景分別描述。
發(fā)布過程中回滾是指在應(yīng)用發(fā)布過程中,就發(fā)現(xiàn)了問題,需要將應(yīng)用回滾到前一個版本。此時的操作就是中斷發(fā)布流程,將已經(jīng)升級完成后或正在升級的服務(wù)器回滾到前一個版本。
EDAS 在每次變更時候,可以直接中斷發(fā)布流程,一鍵回滾。如下圖所示:
另外,EDAS 發(fā)布系統(tǒng)提供單批,分批,金絲雀灰度等多種發(fā)布形式,在分批和金絲雀灰度的發(fā)布的時候,EDAS 還提供不同批次的監(jiān)控信息,如系統(tǒng)指標(biāo),應(yīng)用指標(biāo),應(yīng)用異常檢測等能力,提供快速發(fā)現(xiàn)問題能力,如果存在問題,可以立即進(jìn)行回滾。如下圖所示:
我們推薦的方式也是在發(fā)布過程中盡量使用分批和金絲雀的能力,以將發(fā)布引起的不可用降至最小。
發(fā)布后回滾是指一次部署過程已經(jīng)完成,包含部署成功或失敗。這個時候,可以通過部署歷史的版本來實(shí)現(xiàn)回滾的功能。EDAS 默認(rèn)會存儲最多十個部署過的版本,如下圖所示:
通過以上的功能,基本上可以覆蓋應(yīng)用在上線過程中需要回滾的場景。減少由于系統(tǒng)發(fā)布出問題,造成系統(tǒng)功能使用上的影響。
從上面的介紹,可以看到回滾的操作都是人工進(jìn)行的,其實(shí)在一些場景里,可以根據(jù)一些監(jiān)控指標(biāo),如CPU,load,內(nèi)存等維度,快速發(fā)現(xiàn)問題,就能做到自動回滾,可以能夠更快地恢復(fù)系統(tǒng)。在 Kubernetes 的體系中,F(xiàn)lagger就是能夠?qū)崿F(xiàn)自動回滾的一個很好的工具。
上面介紹了應(yīng)用內(nèi)配置和應(yīng)用代碼回滾的方式,在常見的變更中,還存在工作負(fù)載及運(yùn)維配置的變更,如更改工作負(fù)載的類型,變更 JVM 參數(shù),日志配置, 彈性伸縮等。其中 JVM 參數(shù)等通??梢噪S Deployment 進(jìn)行回滾,但是類似 Kubernetes service,日志,彈性伸縮規(guī)則等這些基礎(chǔ)設(shè)施和運(yùn)維相關(guān)的能力回滾就很難做到了。需要將應(yīng)用的代碼,工作負(fù)載,運(yùn)維配置等實(shí)現(xiàn)配置化來實(shí)現(xiàn)回滾的能力。
這里推薦阿里巴巴與微軟聯(lián)合提出的 OAM(Open Application Model)的規(guī)范,它定義了應(yīng)用的統(tǒng)一交付模型。
在 OAM 中,一個應(yīng)用程序包含以下幾個核心的理念:
Component:是指應(yīng)用中的組件,可以是應(yīng)用運(yùn)行所依賴的服務(wù)如 MySQL 數(shù)據(jù)庫等,也可以是應(yīng)用的本身,如 Spring cloud 的服務(wù)提供者。可以通過 Component 的定義規(guī)范來編寫一個組件;
Trait:是指應(yīng)用的運(yùn)維特征,描述了應(yīng)用部署在具體環(huán)境中的運(yùn)維特征,比如彈性伸縮規(guī)則和 Ingress 配置等,這些運(yùn)維特征會應(yīng)用到具體的組件上;
Applicationconfiguration:是將 Components 和 traits 組裝成一個真正能運(yùn)行起來應(yīng)用的定義。這個配置文件就是 OAM 規(guī)范中的一個聲明式 API,通過它就能實(shí)例化出對應(yīng)的,真實(shí)運(yùn)行的應(yīng)用。
一個 OAM 的應(yīng)用例子如下:
apiVersion: core.oam.dev/v1alpha2 kind: ApplicationConfiguration metadata: name: springcloud-provider-deployment annotations: version: v1.0.0 description: "Description of this deployment" spec: components: - componentName: springcloud-provider-component parameterValues: - name: PARAMETER_NAME value: SUPPLIED_VALUE - name: ANOTHER_PARAMETER value: "AnotherValue" traits: - name: manualscaler.core.oam.dev version: v1 spec: replicaCount: 3 scopes: - scopeRef: apiVersion: core.oam.dev/v1alpha2 kind: NetworkScope name: example-vpc-network
通過 OAM 的 ApplicationConfiguration 這份配置,就能描述線上真正運(yùn)行的應(yīng)用,結(jié)合能將配置版本化的系統(tǒng),如 Git,ACM 等,采用對應(yīng)的 ApplicationConfiguration 的版本,就能實(shí)現(xiàn)應(yīng)用的一鍵回滾。EDAS 里就是通過 OAM 規(guī)范來管理 Kubernetes 的應(yīng)用,結(jié)合 OAM 聲明式 API 的方式,EDAS 里將會實(shí)現(xiàn)多種應(yīng)用回滾的場景,為線上業(yè)務(wù)保駕護(hù)航。
到此,相信大家對“SpringCloud應(yīng)用在Kubernetes上的方法是什么”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
網(wǎng)頁題目:SpringCloud應(yīng)用在Kubernetes上的方法是什么
標(biāo)題鏈接:http://jinyejixie.com/article16/jjpjdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、建站公司、營銷型網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站內(nèi)鏈、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)