您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關(guān)如何分析基于k8s的容器云Paas平臺概要設(shè)計,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。
基于K8s的容器云Paas平臺應(yīng)該是每個使用k8s的公司必須要做的一件事,今天我們嘗試以應(yīng)用為中心,采用搭積木的方式完成一個最小版本的容器云Paas平臺的設(shè)計,Let's Go
我們期望是實現(xiàn)一個盡可能自助的服務(wù),所以里面先不考慮一些諸如審批,之類的操作,在此部分我們要完成應(yīng)用從打包到上線的關(guān)鍵流程
研發(fā)編寫好代碼,此時就要進行代碼的生產(chǎn)環(huán)境部署,而部署的最小單元通常就是Docker鏡像,那么我們就要實現(xiàn)一個自助的鏡像打包服務(wù),來實現(xiàn)從源代碼到docker鏡像的交付
研發(fā)將代碼提交到GIt代碼倉庫后,可以讓代碼倉庫管理員設(shè)定一個回調(diào)鉤子,通知我們的部署流水線,按照部署流水線按照之前設(shè)定的步驟來進行目標(biāo)鏡像的構(gòu)建,并將構(gòu)建的鏡像發(fā)布到我們的鏡像倉庫中
其中部署流水線我們可以直接使用老牌的Jenkins,也可以選擇Tekton這種云原生的部署工具
如果僅僅從應(yīng)用本身來說,除了基礎(chǔ)的運行環(huán)境和代碼,通常還會依賴于一些基礎(chǔ)服務(wù)(不考慮應(yīng)用層的依賴), 比如mysql、redis、kafka等基礎(chǔ)服務(wù),但是諸如這種服務(wù)通??赡懿⒉辉趉8s中(opeartor除外),則此時我們就需要一種自助的集成方式,這里我們通過service catalog 進行集成,用戶只需要進行申請,則就可以自助獲取對應(yīng)的基礎(chǔ)服務(wù)資源
應(yīng)用上線后,我們?nèi)绾潍@取到對應(yīng)的健康狀態(tài)呢?通常就需要日志和監(jiān)控來進行輔助,我們希望一種方式可以自助的進行服務(wù)的日志收集、監(jiān)控項的收集,此時我們就需要一種與監(jiān)控和日志系統(tǒng)集成的方式, 還會涉及到各自監(jiān)控告警,針對日志我們使用EFK來進行日志的收集,監(jiān)控則采用Prometheus完成,此外除了應(yīng)用的基礎(chǔ)資源監(jiān)控,可以讓業(yè)務(wù)也進行對應(yīng)業(yè)務(wù)指標(biāo)的暴露,這樣我們就可以實現(xiàn)業(yè)務(wù)層的指標(biāo)級別的監(jiān)控
應(yīng)用上線后,通常需要對外提供訪問,在k8s中因為網(wǎng)絡(luò)的原因,通常需要通過ingress來進行網(wǎng)絡(luò)內(nèi)部service的暴露,則要給用戶提供一個可以將服務(wù)和負載均衡自動關(guān)聯(lián)的組件負載均衡組件的選擇通常有兩種:老牌的負載均衡組件(Nginx/Kong/Haproxy)和微服務(wù)服務(wù)網(wǎng)關(guān)(Traefik)等,選擇的核心通常是我們要不要改造,比如我們想在ingress上做一些基礎(chǔ)驗證、熔斷、限流等實現(xiàn)則就需要進行二次開發(fā),則就需要選擇合適技術(shù)棧的ingress
這些Ingress通常我們需要一些專有節(jié)點,即只負責(zé)ingress的運行,即通常說的Proxy節(jié)點,我們需要結(jié)合K8s中的污點來進行一些控制,只允許ingress容器調(diào)度到這些節(jié)點上
大多數(shù)應(yīng)用都會隨著產(chǎn)品的迭代或者bug修復(fù),進行代碼的迭代,而在k8s中則通常就是我們說的鏡像更新,此過程可以借助k8s的deployment來進行自動完成
在應(yīng)用更新的時候,通常需要進行灰度測試,即只允許部分用戶進行訪問,如果出現(xiàn)異常,則就立刻回滾,如果正常就滾動更新整個應(yīng)用集群,而在k8s中實現(xiàn)該種方法主要包是通過Deployment來實現(xiàn),我們這里主要是按照用戶灰度的比例通過創(chuàng)建一個新的Deployment,如果成功就繼續(xù)更新舊的Deployment來實現(xiàn)
針對下線的應(yīng)用,通常我們要進行對應(yīng)的資源的釋放操作,這里可能需要一個gc模塊,負責(zé)應(yīng)用的各種資源的清理工作
至此我們基于k8s和應(yīng)用的一些基本需求,完成了基礎(chǔ)版本的應(yīng)用從代碼打包、上線監(jiān)控、部署更新、可觀測性(日志監(jiān)控)等基于云原生的應(yīng)用全生命周期管理
在本節(jié)中我們主要關(guān)注基于K8s平面完成一些Paas平臺相關(guān)的功能的實現(xiàn),主要包含:多租戶管理、彈性伸縮、容量規(guī)劃、配置管理、共享存儲、集群管理、應(yīng)用市場等功能
多租戶是基于paas平臺的一種重要機制,多租戶的本質(zhì)是實現(xiàn)資源的隔離,資源的隔離通常又包含物理隔離和軟件隔離,所謂物理隔離即在物理實體上(比如服務(wù)器)就進行隔離,而軟件隔離則是指通過準(zhǔn)入控制來進行資源的訪問隔離,考慮大多數(shù)的公司內(nèi)部通常不會對k8s進行物理隔離,所以我們這里可以直接使用k8s中的namespace來做軟件幾倍的隔離
彈性伸縮按需計費是Paas平臺的典型特點,而K8s中自帶了HPA(橫向自動伸縮),并且通過autoscaler實現(xiàn)了VPA(縱向自動伸縮)以及Cluster自動伸縮, 依靠這些控制器我們可以很容易的為用戶提供彈性伸縮的功能(一般還是橫向的多一些)
容量規(guī)劃主要的目標(biāo)是通過限定各業(yè)務(wù)線的資源配額實現(xiàn)資源隔離,同時通過容量計算可以進行資源計費,并且進行未來容量的規(guī)劃決策資源采購,進行企業(yè)的成本核算與控制, 此部分主要是依賴于k8s的ResourceQuota來實現(xiàn)配額功能,通過監(jiān)控數(shù)據(jù)來做成本核算
在應(yīng)用開發(fā)的過程中通常會使用一些配置信息,比如基礎(chǔ)的日志、緩存、數(shù)據(jù)庫等配置信息,在以前的環(huán)境中要么是基于env文件,要么是基于配置中心來進行管理,而在k8s中文名可以通過configMap和Secret兩種資源來實現(xiàn)基礎(chǔ)的配置管理,即將配置數(shù)據(jù)與鏡像分離,實現(xiàn)按環(huán)境進行自動的配置加載
在k8s中共享存儲主要是依賴于PV/PVC來實現(xiàn),這部分由于每個公司的基礎(chǔ)設(shè)施差異相對較大,通常需要根據(jù)公司現(xiàn)有的技術(shù)能力來進行調(diào)整,具體的實現(xiàn)則依賴于CSI相關(guān)的實現(xiàn),這里不再進行說明
在公司內(nèi)部的環(huán)境中有時候需要進行容災(zāi)備份等的考慮,則就需要進行多機房部署,那我們的PAAS的平臺也需要擁有這種多集群管理的能力, 其實也適用于生產(chǎn)、測試等多環(huán)境集群的管理,集群的管理主要是為了解決平臺多環(huán)境部署的問題,通過一套平臺來進行整個集團所有集群的管理
應(yīng)用市場主要是指的針對一些諸如redis、etcd、kafka中間件等應(yīng)用除了之前說的服務(wù)目錄的集成方式之外,我們還允許用戶通過opeartor來創(chuàng)建一些基礎(chǔ)服務(wù),從而推動基礎(chǔ)設(shè)施的容器化,這部分通常需要根據(jù)當(dāng)前的環(huán)境還有開源的opeartor來進行微調(diào),從而適配公司的內(nèi)部環(huán)境
在很多公司通常都會有一些企業(yè)內(nèi)部的用戶中心服務(wù),可以集成該部分來進行容器云平臺的用戶認證甚至一些權(quán)限控制,避免重復(fù)造輪子
除以上的業(yè)務(wù)功能外,通常我們還要進行基礎(chǔ)的功能,比如操作審計、權(quán)限控制、安全管控等基礎(chǔ)功能,至此我們已經(jīng)擁有了一個基礎(chǔ)可用的基于k8s的云原生Paas平臺
通過上面的的基礎(chǔ)建設(shè),我們通??梢缘玫揭粋€以應(yīng)用為中的基于K8s的容器PaaS平臺,并且從各種功能上來看,基于k8s的各種資源我們只需要很少的開發(fā)工作,就可以完成整個Paas平臺的建設(shè),從下一節(jié)我們開始進行一些關(guān)鍵部分的開發(fā)工作,并進行一些k8s operator的開發(fā), Let's Go。
看完上述內(nèi)容,你們對如何分析基于k8s的容器云Paas平臺概要設(shè)計有進一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道,感謝大家的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。