背景介紹
隨著業(yè)務(wù)升級改造與軟件產(chǎn)品專案的增多,常規(guī)的物理機(jī)和虛擬機(jī)方式逐漸暴露出一些問題:
- 大量服務(wù)部署在虛擬機(jī)上,資源預(yù)估和硬件浪費(fèi)較大;
- 大量服務(wù)部署在虛擬機(jī)上,部署時間和難度較大,自動化程度較低;
- 開發(fā)人員和運(yùn)維人員,由于開發(fā)和部署服務(wù)環(huán)境不同,服務(wù)不穩(wěn)定經(jīng)常報錯,產(chǎn)生的隔閡問題較多,效率較低;
- 排查問題原因不便利,開發(fā)沒權(quán)限上生產(chǎn)環(huán)境,服務(wù)日志和服務(wù)監(jiān)控狀態(tài)無法定位。
在競爭日益激烈和不斷變化的市場環(huán)境下,公司需要在產(chǎn)品上不停的迭代開發(fā),來滿足業(yè)務(wù)的需求,快速進(jìn)行響應(yīng)變化,所以解決上述問題變得愈發(fā)迫切。
選型說明
我們調(diào)研了兩款開源產(chǎn)品。經(jīng)過綜合評估和比較,我們最終選擇了 KubeSphere。KubeSphere 的定位是以應(yīng)用為中心的容器平臺,提供了簡單易用的操作界面,一定程度上降低了學(xué)習(xí)成本,同時集成了原生 Istio 等功能,更加符合開發(fā)的使用習(xí)慣。
實(shí)踐過程
加快開發(fā)對應(yīng)用需求的響應(yīng),快速交付價值,快速響應(yīng)變化。敏捷開發(fā)是用短的迭代周期來適應(yīng)更快的變化,而且保持增量的持續(xù)改進(jìn)的過程,Kubernetes + Docker 是 Dev 和 Ops 融合的一個橋梁,反過來說,敏捷開發(fā)與自動化運(yùn)維,推動企業(yè) DevOps 落地,提供端對端的從需求分析到部署監(jiān)控的全流程開發(fā)運(yùn)維一體化。
基礎(chǔ)設(shè)施與部署架構(gòu)
KubeSphere 的搭建也非常簡單,通過 KubeAdmin 安裝 Kubernetes,然后用 KubeSphere 官網(wǎng)推薦的方式安裝 KubeSphere。私有內(nèi)部云平臺環(huán)境來搭建 Kubernetes 與 KubeSphere?;A(chǔ)服務(wù)器采用的是 Linux Centos 7,內(nèi)核版本是 5.6。
在搭建 Kubernetes 集群時,我們選擇使用 Keepalived 和 HAproxy 創(chuàng)建高可用 Kubernetes 集群 master,其中包括負(fù)載均衡入口。
部署參考圖:
存儲與網(wǎng)絡(luò)
目前我們主要對接的是 Ceph 的分布式存儲,服務(wù)于各種持久化服務(wù),比如我們會做一些 Harbor 的鏡像,主要是 Rabbitmq、Redis、MySQL 等,生產(chǎn)環(huán)境主要是一些無狀態(tài)的開發(fā)的服務(wù),比如 Springboot、SpringCloud 開發(fā)的微服務(wù),還有 Python 服務(wù)。Python 服務(wù)主要是用來做 AI 模型的簡單分析。
同時也用 NFS 存儲做一些有狀態(tài)的數(shù)據(jù)備份和日志備份文件的存儲。
網(wǎng)絡(luò)選擇了 Calico 這種純?nèi)龑拥?BGP 的網(wǎng)絡(luò)。
平臺和應(yīng)用的日志、監(jiān)控、APM
我們采用了 ELK 采集各種基礎(chǔ)服務(wù)和業(yè)務(wù)服務(wù)的 log,并進(jìn)行日志報警監(jiān)控。
我們使用 Prometheus+grafana,進(jìn)行 OS、K8s 系統(tǒng)組件和 Pod 服務(wù)的采集和監(jiān)控。
同時,我們使用 SkyWalking 來監(jiān)控服務(wù)的 API 全鏈路性能。
CI/CD
我們使用的 KubeSphere 的 DevOps模塊,里面集成了 Jenkins,流水線的構(gòu)建,實(shí)現(xiàn)了項(xiàng)目從拉取代碼,質(zhì)量檢查到項(xiàng)目部署一鍵化的流程,在 DevOps 模塊中用的是自定義 GitLab 倉庫。
參考圖形如下:
有狀態(tài)服務(wù)管理
我們目前管理了 Redis、RabbitMQ 和 Elasticsearch 等集群。
- 唯一性——對于包含 N 個副本的 StatefulSet,每個 pod 會被分配一個
[0,N)
范圍內(nèi)的唯一序號。 - 順序性——StatefulSet 中 pod 的啟動、更新、銷毀默認(rèn)都是按順序進(jìn)行的。
- 穩(wěn)定的網(wǎng)絡(luò)身份標(biāo)識——pod 的主機(jī)名、DNS 地址不會隨著 pod 被重新調(diào)度而發(fā)生變化。
- 穩(wěn)定的持久化存儲——當(dāng) pod 被重新調(diào)度后,仍然能掛載原有的 PersistentVolume,保證了數(shù)據(jù)的完整性和一致性。
使用效果
KubeSphere 是一個非常流行的容器編排工具,它可以幫助用戶管理和部署容器化應(yīng)用程序。使用 KubeSphere 可以提高應(yīng)用程序的可靠性、可擴(kuò)展性和安全性。
- 開發(fā)人員幾乎不用耗費(fèi)時間在軟件的部署和監(jiān)控上,不需要關(guān)心過多的底層部署細(xì)節(jié),節(jié)省約 30% 時間,產(chǎn)品迭代速度更快。
- 按角色管理權(quán)限,開發(fā)人員排查服務(wù)的錯誤更加方便,直接在平臺上查看 log、指標(biāo)數(shù)據(jù)、監(jiān)控報表都很快捷,節(jié)省約 20% 的時間。
- 優(yōu)化了資源利用率,降低了成本,在以前我們都是在 VM 上進(jìn)行部署,服務(wù)器資源浪費(fèi)比較大,經(jīng)常也會進(jìn)行資源利用率的檢討,上 KubeSphere 之后,資源利用率提高了 30% 以上。
未來規(guī)劃
在未來,我們計(jì)劃進(jìn)一步發(fā)展和改進(jìn)我們的基礎(chǔ)設(shè)施環(huán)境和 DevOps 全流程效率,覆蓋自動化測試流程。我們將繼續(xù)關(guān)注新的技術(shù)趨勢(服務(wù)網(wǎng)格,服務(wù)治理等)和最佳實(shí)踐,并根據(jù)業(yè)務(wù)需求進(jìn)行相應(yīng)的升級和優(yōu)化。我們也將繼續(xù)加強(qiáng)團(tuán)隊(duì)的培訓(xùn)和技術(shù)能力,以更好地支持公司的業(yè)務(wù)發(fā)展。文章來源:http://www.zghlxwxcb.cn/news/detail-614720.html
本文由博客一文多發(fā)平臺 OpenWrite 發(fā)布!文章來源地址http://www.zghlxwxcb.cn/news/detail-614720.html
到了這里,關(guān)于某制造企業(yè)基于 KubeSphere 的云原生實(shí)踐的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!