您當(dāng)前的位置是:  首頁 > 新聞 > 文章精選 >
 首頁 > 新聞 > 文章精選 >

如何打造一個(gè)企業(yè)級(jí) Kubernetes 發(fā)行版

--知行學(xué)院總結(jié)

2019-01-23 15:46:13   作者:   來源:CTI論壇   評(píng)論:0  點(diǎn)擊:


  知行學(xué)院是青云QingCloud 為廣大 CIO、架構(gòu)師、開發(fā)者、運(yùn)維工程師、技術(shù)愛好者提供的一個(gè)云計(jì)算、大數(shù)據(jù)、容器等技術(shù)的最佳分享與實(shí)踐平臺(tái)。其中包括線上技術(shù)公開課、云產(chǎn)品解析、線下實(shí)踐課堂、行業(yè)沙龍等眾多知識(shí)分享形式。
  本次我們邀請(qǐng)了青云QingCloud 容器平臺(tái)產(chǎn)品經(jīng)理于爽(Calvin Yu),帶來《如何打造一個(gè)企業(yè)級(jí)Kubernetes 發(fā)行版》。
  正文:
  作為 KubeSphere 線上培訓(xùn)教程的第一節(jié)課,今天的內(nèi)容覆蓋幾個(gè)方面:第一個(gè)是介紹一下 KubeSphere 這款容器產(chǎn)品產(chǎn)生的背景,第二給大家比較一下 KubeSphere 和原生的 Kubernetes 的區(qū)別,第三部分會(huì)介紹一下 KubeSphere 高級(jí)版 1.0.0 里面主要的功能,最后會(huì)有一個(gè) Demo,給大家展示一下 KubeSphere 整體的使用方式。
  第一部分
  KubeSphere 產(chǎn)生的背景
  這個(gè)是 Gartner 在今年發(fā)布的調(diào)研報(bào)告,Gartner 認(rèn)為到 2020 年大概有 50% 的企業(yè)會(huì)將內(nèi)部非常重要的業(yè)務(wù)容器化,放到容器里面去跑、而且是放在生產(chǎn)環(huán)境里面跑。2018 年這個(gè)比例只有 5%,而兩年的時(shí)間將會(huì)有十倍的提升。
  那么,為什么現(xiàn)在越來越多的企業(yè)要采用容器呢?
  容器帶來的改變
  第一個(gè)原因就是相比于傳統(tǒng)的虛擬化技術(shù),容器可以把主機(jī)資源的利用率最大化,可以帶來更輕量地資源消耗,避免無意義的資源損耗;
  第二個(gè)就是通過容器我們可以把IT界討論的比較熱的一些話題,比如 CI/CD、微服務(wù)這些從理論變?yōu)楝F(xiàn)實(shí)。特別是 CI/CD 這一塊,這也是很多使用容器的客戶的主要訴求,在沒有容器之前,并不是說無法做CI/CD,但缺少了容器這種輕量的標(biāo)準(zhǔn)化的交付方式,帶了架構(gòu)沉重、效率低下、環(huán)境不一致等問題。
  基于標(biāo)準(zhǔn)化容器鏡像的構(gòu)建方式以及統(tǒng)一鏡像的分發(fā)倉庫,用戶可以使用一系列自動(dòng)化運(yùn)維的工具完成從開發(fā)、代碼提交、測(cè)試、預(yù)發(fā)布、發(fā)布一整套完整的流水線,它相比較于傳統(tǒng)的基于虛擬機(jī)的交互方式更經(jīng)濟(jì)、更高效。同時(shí)基于容器我們可以實(shí)現(xiàn)跨平臺(tái)的部署,企業(yè)就沒有平臺(tái)綁定的風(fēng)險(xiǎn)了。
  使用容器需要管理調(diào)度平臺(tái),Kubernetes 無疑是現(xiàn)在這種管理平臺(tái)市場(chǎng)里最主流、最受認(rèn)可的一個(gè)平臺(tái),我們知道用戶想使用 Kubernetes 的熱情是非常高漲的,但是它有一系列的問題。
  使用 Kubernetes 的問題與挑戰(zhàn)
  首先就是學(xué)習(xí)成本比較高。Kubernetes 是由谷歌初始開源的一個(gè)項(xiàng)目,它起源于谷歌自己的 Borg 系統(tǒng),大家都了解谷歌是一家技術(shù)出身的公司,Borg 系統(tǒng)或者說 Kubernetes 發(fā)布之初的時(shí)候給人的印象也是如此——是面向開發(fā)者、面向技術(shù)人員的,使用起來非常的復(fù)雜。谷歌在里面又抽象了很多他自己理解的調(diào)度層面的一些概念,用戶想要去了解、然后再去使用這個(gè)平臺(tái)需要很長(zhǎng)的學(xué)習(xí)過程。
  同時(shí) Kubernetes 部署安裝非常復(fù)雜。在兩年前你要想搭建一套 Kubernetes 的平臺(tái),可能要花一周甚至更長(zhǎng)的時(shí)間。當(dāng)然到了現(xiàn)在,由于它越來越得到大家的認(rèn)可,有很多自動(dòng)化工具可以幫助你做這件事情,但即使有了這些工具的支撐幫助,去了解這些自動(dòng)化工具其實(shí)也是一個(gè)二次學(xué)習(xí)的成本。
  另外,Kubernetes 專注做的是底層分布式的容器調(diào)度平臺(tái),它把上游的一些業(yè)務(wù)場(chǎng)景以及跟底層資源的對(duì)接都開放出來,通過各種開源項(xiàng)目和廠商去支持。比如說存儲(chǔ),它通過 CSI 標(biāo)準(zhǔn),把標(biāo)準(zhǔn)定出來之后,存儲(chǔ)廠商可以接進(jìn)來,網(wǎng)絡(luò)、容器運(yùn)行環(huán)境也都是如此;包括上游的一些場(chǎng)景,比如 CI/CD、微服務(wù)、這些都是通過其他開源項(xiàng)目去支持的。
  所以當(dāng)企業(yè)想要去通過 Kubernetes 完成這種業(yè)務(wù)場(chǎng)景的交付,那么就要去選型、去選擇合適自己的開源項(xiàng)目,這些對(duì)企業(yè)來說也是很麻煩的一件事情。
  綜上可以看出,想使用 k8s 它的隱形成本是很高的,企業(yè)需要運(yùn)維一個(gè)專業(yè)的團(tuán)隊(duì)去負(fù)責(zé)這個(gè)平臺(tái),同時(shí) Kubernetes 多租戶的模式非常復(fù)雜、安全性低,另外它作為通過開源社區(qū)支持的一個(gè)項(xiàng)目,缺乏本土化支持,這都是在使用 Kubernetes 過程中非常典型的一些問題和挑戰(zhàn)。
  所以基于客戶的這些痛點(diǎn),我們開發(fā)了我們自己的 k8s 發(fā)行版 KubeSphere,我們的 KubeSphere 和原生的 Kubernetes 的區(qū)別是什么呢?
  第二部分
  KubeSphere 和原生的 Kubernetes 的區(qū)別
  首先來說原生的 k8s 它的安裝是非常復(fù)雜的,但是我們的 KubeSphere 非常簡(jiǎn)單,只需要配置兩個(gè)配置文件,然后就可以一鍵安裝了。
  另外,由于它整個(gè)安裝過程是需要拉取各種容器鏡像的,有些鏡像由于網(wǎng)絡(luò)等原因,拉取起來比較復(fù)雜,而 KubeSphere 支持離線安裝,在網(wǎng)絡(luò)環(huán)境比較限制的情況下或者說在一些私有云的場(chǎng)景、私有化網(wǎng)絡(luò)情況下,通過離線安裝,你可以很方便地搭建一個(gè) k8s 管理集群。
  原先的 Kubernetes 是沒有界面性的東西來輔助工作的,你可以額外使用開源的 Dashboard,但是 Dashboard 提供的功能是比較弱的,體驗(yàn)也不是很好,而 KubeSphere 的界面功能比較強(qiáng)大,大家可以自己去體驗(yàn)一下。
  原先的 Kubernetes 的多租戶和權(quán)限控制是通過配置文件和命令行去完成的,我們的 KubeSphere 提供了統(tǒng)一的管理入口、多租戶的管理方式,可以提供資源和操作級(jí)別的權(quán)限配置。
  另外,Kubernetes 沒有應(yīng)用管理的概念,它是通過 Helm 去做的,使用命令行可以完成 Helm 應(yīng)用包的部署、升級(jí)、刪除的工作。而 KubeSphere 提供了完整的應(yīng)用生命周期的管理,從應(yīng)用的開發(fā)、發(fā)布、版本管控、后面使用的運(yùn)維,都可以提供一整套的完整的工具。
  另外原生的 Kubernetes 是沒有 CI/CD、微服務(wù)這些業(yè)務(wù)場(chǎng)景支持的,在我們的 KubeSphere 里面提供了這些業(yè)務(wù)場(chǎng)景的支持。
  監(jiān)控告警,Kubernetes 它的配置是相對(duì)比較復(fù)雜的,需要基于不同的開源項(xiàng)目去選型。而我們提供了更簡(jiǎn)便的方式,同時(shí)我們也可以做第三方的集成支持,可以把你的監(jiān)控?cái)?shù)據(jù)導(dǎo)入到企業(yè)現(xiàn)有的監(jiān)控系統(tǒng)里面。
  然后是存儲(chǔ)網(wǎng)絡(luò)。Kubernetes 存儲(chǔ)網(wǎng)絡(luò)是兩大塊,有很多開源項(xiàng)目的支持,我們 KubeSphere 也集成了這些主流開源的網(wǎng)絡(luò)存儲(chǔ)的解決方案,同時(shí)青云作為一個(gè)云廠商,我們也開發(fā)并開源了我們自己的存儲(chǔ)網(wǎng)絡(luò)插件去對(duì)接青云現(xiàn)在的 SDN 網(wǎng)絡(luò)、SDS 塊存儲(chǔ),可以使用青云的云平臺(tái)上的硬盤。
  我們還有另外一款分布式存儲(chǔ)產(chǎn)品 NeonSAN,它是可以獨(dú)立部署的,我們也開發(fā)了對(duì)應(yīng)的 NeonSAN 的存儲(chǔ)插件。另外像云平臺(tái)上有負(fù)載均衡器,我們也開發(fā)了負(fù)載均衡器插件,如果你把 KubeSphere 部署在青云的云平臺(tái)之上,那么你可以通過我們的負(fù)載均衡器插件,在暴露服務(wù)的時(shí)候選擇負(fù)載均衡器的類型,那么你的服務(wù)就通過負(fù)載均衡器去暴露了。
  簡(jiǎn)單地概括一下:KubeSphere 是在 Kubernetes 之上構(gòu)建的企業(yè)級(jí)分布式多租戶容器管理平臺(tái)。
  它的幾大亮點(diǎn)包括:統(tǒng)一門戶、實(shí)現(xiàn)跨平臺(tái)管理多種 k8s;學(xué)習(xí)成本比較低,UI 體驗(yàn)比較好;提供了多場(chǎng)景支持的整體化解決方案;可以很方便地集成第三方的系統(tǒng);我們提供多租戶、更細(xì)粒度的權(quán)限管理方式;我們除了提供開源的網(wǎng)絡(luò)和存儲(chǔ)解決方案,還有我們自己特色的網(wǎng)絡(luò)和存儲(chǔ)方案。
  這是 KubeSphere 一個(gè)簡(jiǎn)單的架構(gòu)圖,底層可以支持不同的基礎(chǔ)設(shè)施,如物理機(jī)、vmware 虛擬機(jī)或者是公有云上的云主機(jī),中間的門戶管理多種 k8s 集群,網(wǎng)絡(luò)和存儲(chǔ)我們支持各種存儲(chǔ)插件、網(wǎng)絡(luò)插件,同時(shí)我們還有自己的網(wǎng)絡(luò)和存儲(chǔ)插件的支持。
  我們自己作為云廠商有自己的負(fù)載均衡器插件,同時(shí)我們還提供基于物理交換機(jī)的負(fù)載均衡器解決方案,這對(duì)物理機(jī)的部署是非常重要的。
  它的上層提供了幾大場(chǎng)景的支持,包括多集群的運(yùn)維調(diào)度、CI/CD、微服務(wù)治理、應(yīng)用生命周期管理。其中應(yīng)用生命周期管理,我們是基于 OpenPitrix——由我們主導(dǎo)開源的一個(gè)項(xiàng)目,大家可以在 GitHub 上搜到,它是實(shí)現(xiàn)多云應(yīng)用管理的一個(gè)平臺(tái)。
  第三部分
  KubeSphere 高級(jí)版 1.0.0 的主要功能
  這是 KubeSphere 的全景功能圖,大家可以看到這里面體現(xiàn)了剛才提到的幾大功能的支持。
  多租戶管理
  比如說多租戶這一塊,從集群層面我們提供了平臺(tái)管理角色;在集群下面我們提供了多租戶的支持,我們叫做企業(yè)空間;企業(yè)空間底下我們提供了項(xiàng)目,對(duì)應(yīng) k8s 里面的就是 Namespace;另外基于 CI/CD 的場(chǎng)景,我們有 DevOps 工程層級(jí)的資源支持,如果企業(yè)想去運(yùn)行自己的 CI/CD 流水線,可以創(chuàng)建一個(gè) DevOps 工程,然后在里面跑自己的流水線。
  KubeSphere 定義了集群層級(jí)、企業(yè)空間層級(jí)、項(xiàng)目的 DevOps 工程層級(jí),這是三個(gè)層級(jí),它綁定的是每個(gè)層級(jí)資源不同的角色,角色底下關(guān)聯(lián)的是不同的用戶。關(guān)于多租戶,我們接下來會(huì)專門有一期線上培訓(xùn),給大家介紹里面詳細(xì)的概念和操作。
  從右邊這一塊能看到,我們支持的 k8s 資源工作負(fù)載類型有很多,包括部署、有狀態(tài)副本集、守護(hù)進(jìn)程集、任務(wù)和定時(shí)任務(wù)。存儲(chǔ)這邊除了主流的開源存儲(chǔ)插件,我們還有 NeonSAN 分布式塊存儲(chǔ),以及支持青云的塊存儲(chǔ);暴露服務(wù)可以通過 Ingress 的方式;配置上我們支持 Secret 和 Configmap。
  DevOps 工程里面我們提供了可視化流水線,我們支持 Jenkinsfile in&out of SCM。這是什么意思呢?其實(shí)有很多企業(yè)已經(jīng)用了 Jenkins 這種流水線管理平臺(tái)了,他們已經(jīng)有了自己的 Jenkinsfile 去跑自己的流水線,并把 Jenkinsfile 作為他們代碼管理的一部分,放在自己的代碼倉庫里面。
  比如說 OA 項(xiàng)目,我要跑自己的流水線,有一個(gè)代碼倉庫,你把 Jenkinsfile 放在這個(gè)代碼倉庫里面了,我們支持這種方式,那么你在配置流水線的時(shí)候,告訴我代碼倉庫的位置,我會(huì)自動(dòng)地去拉取你已有 Jenkinsfile 里面的內(nèi)容,去把流水線構(gòu)建出來并運(yùn)行。
  如果你之前沒有 Jenkinsfile 、,那么通過我們提供的這種可視化流水線構(gòu)建工具,你可以在頁面上簡(jiǎn)單地去操作、創(chuàng)建自己的流水線。
  同時(shí)我們的 DevOps 工程支持憑證管理,可以去幫助你訪問各種代碼倉庫、鏡像倉庫等等。
  另外在高級(jí)版 1.0.0 中我們提供了獨(dú)立的監(jiān)控中心,可以提供不同維度的監(jiān)控功能,比如說我們可以從集群視角去查看各種指標(biāo),包括內(nèi)存、CPU、磁盤、容器組運(yùn)行情況、網(wǎng)絡(luò)等等。從應(yīng)用視角也可以去監(jiān)控整個(gè)業(yè)務(wù)的運(yùn)行狀況,比如說你的項(xiàng)目里面使用多少資源,你的項(xiàng)目底下的應(yīng)用使用多少資源,都是可以去查看的。
  總結(jié)一下多租戶的部分:
  我們現(xiàn)在已經(jīng)支持了 LDAP 和 AD 的統(tǒng)一認(rèn)證,同時(shí)我們支持 OAuth 的認(rèn)證集成。
  網(wǎng)絡(luò)與存儲(chǔ)
  除了支持各種主流的網(wǎng)絡(luò)存儲(chǔ)插件,我們也提供了自主可控的網(wǎng)絡(luò)和存儲(chǔ)。特別是在一些關(guān)鍵性業(yè)務(wù)上,如果你使用一些開源的插件去跑一些關(guān)鍵性業(yè)務(wù)的話,一旦出了問題,服務(wù)、支持都是很頭疼的事情。這種自主可控的、可以得到及時(shí)支持的網(wǎng)絡(luò)和存儲(chǔ)的方案,對(duì)于某些客戶還是非常重要的。
  作為我們青云平臺(tái)的企業(yè)用戶,在網(wǎng)絡(luò)上您可以使用我們提供的開源的 hostnic 網(wǎng)絡(luò)方案,pod 上直接綁定青云 SDN 的網(wǎng)卡,可以實(shí)現(xiàn)網(wǎng)卡的直通。
  然后我們還提供基于物理交換機(jī)的負(fù)載均衡器解決方案,且不綁定設(shè)備,比如說你可以自己采購華三的交換機(jī),通過物理交換器達(dá)到負(fù)載均衡器暴露服務(wù)的場(chǎng)景支持。
  我們自己的 CSI 存儲(chǔ)插件可以直接掛載青云的 SDS 塊存儲(chǔ),我們也開發(fā)了 QingStor CSI 的插件,這個(gè) pod 可以直接掛載 NeonSAN 的塊存儲(chǔ)。
  CI/CD on KubeSphere
  基于 CI/CD 我們可以實(shí)現(xiàn)容器的標(biāo)準(zhǔn)化交付物,快速構(gòu)建、升級(jí)、回滾應(yīng)用環(huán)境,提供完整的自動(dòng)化工具的鏈條,降低運(yùn)維成本,同時(shí) CI/CD 為微服務(wù)場(chǎng)景提供了強(qiáng)有力的支持。比如說把一些業(yè)務(wù)拆分放在不同的容器里面去,然后再通過 CI/CD 構(gòu)建整個(gè)的開發(fā)、測(cè)試和部署的鏈條,實(shí)現(xiàn)快速發(fā)布,降低管理成本。
  我們現(xiàn)在發(fā)布的是 1.0.0,剛才也提到 Jenkinsfile In and out 和 Source Code Management 兩種方式,我們即將發(fā)布的 2.0.0 版本會(huì)支持 source to image,代碼到鏡像的構(gòu)建,還支持代碼安全掃描。
  集群運(yùn)維
  我們?cè)陧?xiàng)目這個(gè)層級(jí)提供配額管理,比如這個(gè)項(xiàng)目底下你可以去使用多少 CPU、多少內(nèi)存、可以創(chuàng)建多少個(gè)部署、多少個(gè)服務(wù),這些都可以通過配額去配置。在工作負(fù)載上除了支持 k8s 原生之外我們還支持 HPA,即 pod 的自動(dòng)彈性伸縮,你可以設(shè)置自己的CPU指標(biāo),pod 的下限和上限,當(dāng)指標(biāo)達(dá)到、超過的時(shí)候,pod 會(huì)自動(dòng)的擴(kuò)容。
  應(yīng)用的生命周期管理
  這個(gè)是通過我們自己開源的一個(gè)項(xiàng)目 OpenPitrix 做的,OpenPitrix 是多云應(yīng)用的全生命周期管理,支持不同的云廠商,如阿里云、AWS 等,k8s 也是 OpenPitrix 支持的運(yùn)行平臺(tái)。
  它底層是基于 Helm 去做的,也就是說 OpenPitrix 是去調(diào)用 Helm 的 API,在應(yīng)用層實(shí)現(xiàn)包的管理。但是 OpenPitrix 比 Helm 能做的事情更多,因?yàn)?Helm 其實(shí)就是簡(jiǎn)單地實(shí)現(xiàn)應(yīng)用打包,然后部署、版本管控、升級(jí)這些功能,但是其實(shí)應(yīng)用管理、生命周期管理是非常復(fù)雜的場(chǎng)景,它不單單是 Helm 考慮到的那些東西,它還包括了不同角色人員的需求,還有不同場(chǎng)景的支持。
  比如說我作為一個(gè)應(yīng)用開發(fā)者,我怎么去開發(fā)自己的應(yīng)用、怎么發(fā)布、版本管控,以及應(yīng)用發(fā)布之后,我的計(jì)費(fèi)計(jì)量、用戶使用的情況是什么樣的?它碰到的各種問題怎么通過我的平臺(tái)去獲取支持?這都是整個(gè)應(yīng)用生命周期管理里面各種場(chǎng)景的訴求,這個(gè)在 Helm 是沒有的。而 OpenPitrix 提供了整個(gè)應(yīng)用生命周期管理的功能。
  這里簡(jiǎn)單畫了一個(gè) KubeSphere 和 OpenPitrix 怎么做集成支持的場(chǎng)景介紹。比如說我是一個(gè)應(yīng)用開發(fā)者,我開發(fā)一個(gè)應(yīng)用,那么我可以通過 OpenPitrix 把我的應(yīng)用打包上傳,上傳之后發(fā)布應(yīng)用,再通過我的 KubeSphere 的 CI/CD 流水線跑一些測(cè)試,都通過之后把它發(fā)布,發(fā)布之后我就可以在我的應(yīng)用倉庫里面看到這個(gè)應(yīng)用了。作為一個(gè)應(yīng)用的消費(fèi)者、使用者,他可以在應(yīng)用倉庫的界面里面看到并使用這個(gè)應(yīng)用。
  這個(gè)是 KubeSphere 高級(jí)版的產(chǎn)品路線圖。高級(jí)版 1.0.0 里面我們提供的是多租戶、監(jiān)控和 CI/CD,高級(jí)版 2.0 的時(shí)候我們會(huì)提供微服務(wù)治理、日志、告警的支持。
  2019 年,我們會(huì)在公有云上線我們自己的 QingCloud Kubernetes Service,提供容器超融合一體機(jī)。我們的 AppCenter 里提供了各種 PaaS 和 SaaS 的應(yīng)用,我們會(huì)把線上比較關(guān)鍵性的 PaaS 應(yīng)用容器化,放到 KubeSphere 的內(nèi)置應(yīng)用倉庫里,同時(shí)我們?cè)诿髂赀會(huì)支持 GPU 和 arm 的架構(gòu),可以支持大數(shù)據(jù)深度學(xué)習(xí)的場(chǎng)景。
  最后,這是 KubeSphere 產(chǎn)品從開發(fā)至今累計(jì)的開源項(xiàng)目的地址,第一個(gè)就是 KubeSphere 這個(gè)項(xiàng)目的地址,然后是文檔的項(xiàng)目,大家使用時(shí)碰到的各種問題、各種需求都可以在這上面告訴我們,我們會(huì)及時(shí)去解答。
  比如說我剛才講到的我們自己對(duì)接云平臺(tái)的各種插件,像負(fù)載均衡器插件、網(wǎng)卡插件、存儲(chǔ)插件,還有我剛才提到的多云的應(yīng)用管理平臺(tái) OpenPitrix,我們都在 Github 上開源。
  另外我們提供了兩個(gè)在線網(wǎng)站,KubeSphere.io 和 KubeSphere.qingcloud.com ,大家可以在這些地址上獲取想了解的信息。
  KubeSphere 系列培訓(xùn)課程(二)——如何通過 KubeSphere 玩轉(zhuǎn) Kubernetes 存儲(chǔ),將在 1 月 23 日 20:00 準(zhǔn)時(shí)開講,歡迎掃碼訂閱??
 
【免責(zé)聲明】本文僅代表作者本人觀點(diǎn),與CTI論壇無關(guān)。CTI論壇對(duì)文中陳述、觀點(diǎn)判斷保持中立,不對(duì)所包含內(nèi)容的準(zhǔn)確性、可靠性或完整性提供任何明示或暗示的保證。請(qǐng)讀者僅作參考,并請(qǐng)自行承擔(dān)全部責(zé)任。

專題

CTI論壇會(huì)員企業(yè)