怎樣做企業(yè)的網(wǎng)站首頁微信公眾號推廣軟文案例
公司簡介
某國家級智能網(wǎng)聯(lián)汽車研究中心成立于 2018 年,是擔(dān)當(dāng)產(chǎn)業(yè)發(fā)展咨詢與建議、共性技術(shù)研發(fā)中心、創(chuàng)新成果轉(zhuǎn)化的國家級創(chuàng)新平臺,旨在提高我國在智能網(wǎng)聯(lián)汽車及相關(guān)產(chǎn)業(yè)在全球價(jià)值鏈中的地位。
目前著力建設(shè)基于大數(shù)據(jù)與云計(jì)算的智能汽車云端運(yùn)營控制中心平臺。推進(jìn)云端運(yùn)營控制中心建設(shè)的過程中,運(yùn)控中心平臺的集成、部署、運(yùn)維方案經(jīng)歷了 3 代的升級迭代過程。
第一代部署方案是直接將平臺的前后端各個模塊手動部署在自有物理機(jī)中,并將物理機(jī)托管在 ICT 的機(jī)房中。
第二代方案是將物理機(jī)集群用 Vmware ESXi 做了虛擬化,平臺前后端各模塊部署在虛擬機(jī),提升了資源利用率,降低了資源使用量。
第三代,目前以容器化的方式部署在公有云的 KubeSphere 集群中。購買公有云的服務(wù)器資源,使用 KubeKey 安裝 KubeSphere 集群,應(yīng)用級服務(wù)采用 DevOps 流水線一鍵以容器化方式發(fā)布到 KubeSphere 集群中,真正實(shí)現(xiàn)了持續(xù)集成持續(xù)發(fā)布。應(yīng)用研發(fā)工程師只需要在自己本地實(shí)現(xiàn) feature 或者 fix bug,然后 commit 代碼到 GitLab,之后通過 KubeSphere 的 DevOps 流水線一鍵發(fā)布到測試環(huán)境或者生產(chǎn)環(huán)境。通過使用 KubeSphere 以容器化的方式部署服務(wù),減輕了各位研發(fā)工程師的發(fā)布工作負(fù)擔(dān),釋放了研發(fā)資源。
目前團(tuán)隊(duì)組成:1 名架構(gòu)師負(fù)責(zé)架構(gòu)設(shè)計(jì)、項(xiàng)目管理等全局工作,4 名研發(fā)工程師負(fù)責(zé)研發(fā)工作,1 名 DevOps 工程師負(fù)責(zé) DevOps 建設(shè)和運(yùn)維工作,這樣的一個小團(tuán)隊(duì)就可以高效順利完成大系統(tǒng)的建設(shè)工作。
背景介紹
云計(jì)算的發(fā)展已經(jīng)逐漸成熟,基于云計(jì)算的大數(shù)據(jù)、人工智能行業(yè)發(fā)展的越來越成熟,汽車領(lǐng)域與云計(jì)算、大數(shù)據(jù)、人工智能的融合創(chuàng)新發(fā)展勢不可擋,自動駕駛已經(jīng)在全球范圍內(nèi)陸續(xù)落地。我國汽車科學(xué)家基于我國國情和汽車行業(yè)發(fā)展趨勢,提出了自動駕駛汽車的中國方案,也即車路協(xié)同方案,以彌補(bǔ)國際上單車智能方案的不足。
在這種行業(yè)發(fā)展背景下,推進(jìn)建設(shè)車路協(xié)同的自動駕駛云端運(yùn)營控制中心是亟待突破的行業(yè)共性關(guān)鍵技術(shù)。
在建設(shè)自動駕駛云端運(yùn)營控制中心的過程中,面臨許多的實(shí)際困難,比如軟硬件資源比較緊張,研發(fā)人員非常少,建設(shè)任務(wù)特別繁重,運(yùn)控中心平臺對車輛側(cè)、道路側(cè)物理基礎(chǔ)設(shè)施的依賴比較種等方面的因素,為了提高有限的存儲、計(jì)算、網(wǎng)絡(luò)等硬件資源的利用率和減輕有限研發(fā)人員工作負(fù)擔(dān)、高質(zhì)高效完成運(yùn)控中心平臺的建設(shè)任務(wù),建設(shè)團(tuán)隊(duì)的集成和部署經(jīng)歷了物理機(jī)部署、虛擬機(jī)部署直到當(dāng)前的基于 KubeSphere 的容器化部署方案的迭代和升級過程。
選型說明
在研究上云過程中,想過直接購買阿里云的 K8s 集群,但是由于公司本身有一些物理服務(wù)器要利用起來,所以就繼續(xù)調(diào)研,最終選擇 KubeSphere 作為容器化的解決方案。
我們選擇 KubeSphere 的原因有以下幾點(diǎn):
- 得益于 KubeKey 這個安裝工具,安裝起來更加方便,比以前單純安裝 K8s 要簡便、容易的多。
- KubeSphere 相當(dāng)于給 K8s 做了圖形界面,從 web 界面打開查看集群狀態(tài),對集群進(jìn)行運(yùn)維非常方便,比在命令行下敲命令簡單明了的多。
- KubeSphere 支持流水線功能,在不安裝額外的軟件的情況下就可以實(shí)現(xiàn)持續(xù)發(fā)布功能,持續(xù)發(fā)布和 K8s 結(jié)合在一起,工作起來減輕很多繁瑣的操作。
實(shí)踐過程
由于使用 KubeSphere 和 K8s 以容器化方式部署應(yīng)用對項(xiàng)目組成員來說都是第一次,無論是比較資深的專家架構(gòu)師,還是各位研發(fā)和運(yùn)維人員來說,都是在做了基本調(diào)研和學(xué)習(xí)后首次使用,所以,我們的應(yīng)用容器化之路是學(xué)習(xí)中使用、使用中提高的一個過程。
為了保障最后生產(chǎn)環(huán)境的服務(wù)容器化后能更加穩(wěn)定可控,所以我們采取了 2 步走的戰(zhàn)略:
- 第一步,私有云測試環(huán)境部署運(yùn)行以積累經(jīng)驗(yàn)。先在測試環(huán)境搭建 Harbor、KubeSphere、K8s、Docker,建設(shè)測試環(huán)境的發(fā)布流水線將測試環(huán)境的各個服務(wù)以容器化的方式部署,讓前后端的六十多個服務(wù)在測試環(huán)境先以容器化的方式穩(wěn)定運(yùn)行,這樣通過測試環(huán)境的運(yùn)行積累經(jīng)驗(yàn),等測試環(huán)境的容器云運(yùn)行比較穩(wěn)定,各種坑都趟過以后,再開始做生產(chǎn)環(huán)境的容器化。
- 第二步,私有云生產(chǎn)環(huán)境服務(wù)部署。首先在物理機(jī)上部署了所有服務(wù),讓物理機(jī)上的運(yùn)控中心平臺穩(wěn)定運(yùn)行,以便領(lǐng)導(dǎo)隨時(shí)檢查線上平臺運(yùn)行情況,其次,再做了一份 KubeSphere、K8s、Docker,以容器化方式部署運(yùn)控中心平臺。這樣雙份的生產(chǎn)環(huán)境運(yùn)控中心平臺,當(dāng)生產(chǎn)環(huán)境容器化的運(yùn)控中心平臺運(yùn)行穩(wěn)定以后,再將運(yùn)控平臺對外的域名綁定到容器化的運(yùn)控中心平臺上,逐步停用物理機(jī)中部署的運(yùn)控中心平臺。
基礎(chǔ)設(shè)施與部署架構(gòu)
測試環(huán)境和生產(chǎn)環(huán)境的 KubeSphere 部署架構(gòu)基本是一樣的。
集群規(guī)劃:
節(jié)點(diǎn) IP | 節(jié)點(diǎn)角色 | 組件 |
---|---|---|
192.168.16.70 | kp-master01 | kube-apiserver kube-Scheduler kube-controller-manager Etcd |
192.168.16.80 | kp-master02 | api-server Scheduler controller-manager Etcd |
192.168.16.100 | kp-node01 | Kubelet kube-proxy Docker |
192.168.16.110 | kp-node02 | Kubelet kube-proxy Docker |
192.168.16.120 | kp-node03 | Kubelet kube-proxy Docker |
192.168.16.140 | kp-node05 | Kubelet kube-proxy Docker |
具體部署架構(gòu)圖如下圖所示:
線上環(huán)境參考:
- 有狀態(tài)服務(wù)主要是一些基礎(chǔ)設(shè)施服務(wù),比如 MySQL、Redis、ClickHouse 等這種,對于這些有狀態(tài)服務(wù)還是采用虛擬機(jī)部署。
- 無狀態(tài)服務(wù)在 KubeSphere 中的服務(wù)如下圖所示,包括應(yīng)用層的前端模塊、后端模塊,都是采用容器化部署的方式部署。
存儲與網(wǎng)絡(luò)
運(yùn)控中心平臺的一些常規(guī)的業(yè)務(wù)數(shù)據(jù)采用 MySQL 存儲,為了做數(shù)據(jù)的聚合 OLAP 分析采用 ClickHouse 存儲分析性的歷史數(shù)據(jù),采用 Hadoop 和 Flink 對數(shù)據(jù)倉庫中的數(shù)據(jù)做分布式的分析處理。采用 ELK 采集了容器集群中的服務(wù)日志。
DevOps 方案
測試環(huán)境和生產(chǎn)環(huán)境都在私有云中搭建,兩套環(huán)境基本是完全一致。
項(xiàng)目代碼統(tǒng)一使用 GitLab 進(jìn)行配置管理,Docker 鏡像采用 Harbor 進(jìn)行存儲,KubeSphere 中建立 DevOps 項(xiàng)目,在 DevOps 項(xiàng)目中為每一個模塊建立發(fā)布流水線。流水線中的每一個環(huán)境都由一臺發(fā)布服務(wù)器上的 shell 腳本具體執(zhí)行。
使用效果
通過使用 KubeSphere 明顯地減輕了工程師們的發(fā)布部署工作負(fù)擔(dān),提升了人員生產(chǎn)力和研發(fā)效能。研發(fā)工程師只需要在本地實(shí)現(xiàn) feature 或者修復(fù) bug,之后 commit 代碼到 GitLab,然后在 KubeSphere 的 DevOps 流水線上點(diǎn)擊運(yùn)行,發(fā)布到測試環(huán)境或者生產(chǎn)環(huán)境的部署工作就徹底完成了,非常輕松簡單。
通過使用 KubeSphere 以容器化的方式部署服務(wù),最明顯的收益如下:
- 研發(fā)工程師在軟件的部署上唯一需要做就是登陸 KubeSphere,點(diǎn)擊運(yùn)行流水線,極大地減輕了部署工作量,再也不用記憶各種奇怪的命令,省心省力。
- 使用 KubeSphere 和 K8s 的進(jìn)行應(yīng)用容器化部署后,優(yōu)化了硬件的資源利用率,降低了成本。
未來規(guī)劃
通過 KubeSphere 的應(yīng)用實(shí)踐,發(fā)現(xiàn) K8s 確實(shí)解決分布式微服務(wù)系統(tǒng)的很多問題,比如負(fù)載均衡、自動擴(kuò)展等,DevOps 流水線功能尤其實(shí)用。
在未來,我們計(jì)劃進(jìn)一步改進(jìn)運(yùn)控中心平臺的容器化,將有狀態(tài)服務(wù)也盡量容器化,并將自動化測試加入到發(fā)布流水線中。
本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!