從業(yè)務(wù)出發(fā),K8S環(huán)境自建和非自建整體架構(gòu)設(shè)計比較
隨著數(shù)字化轉(zhuǎn)型的大潮到來,越來越多的企業(yè)開始上云,同時也紛紛加入到微服務(wù)和K8S隊伍中。但在K8S整體環(huán)境究竟應(yīng)該用自建的還是非自建?以及他們需要用到的服務(wù),究竟應(yīng)該自建還是直接用PAAS服務(wù)?這些問題往往會困擾住大家。
我在這里以中立的角度闡述下各自的優(yōu)劣,給大家提供一些參考幫助大家能做出更利于公司發(fā)展的選擇。
在進行對比之前,我們先來了解一些概念。
1、什么是自建K8S?
所謂自建,就是使用自己在物理機和虛擬機上部署的開源Kubernetes平臺。
2、什么是非自建K8S?
非自建就是云上的PAAS服務(wù),全套的從物理層到容器層的環(huán)境都由云廠商提供,底層也是基于開源的Kubernetes打造的,云上一般都自帶管理工具。
k8S平臺對比
K8S平臺無論你用云上的還是自建的,其底層都是一樣的。云上的服務(wù)會比自建的多一個管理界面,讓管理K8S平臺變得更容易。在實際生產(chǎn)過程中,我們也很少需要登錄到Master節(jié)點上去進行命令行操作。
發(fā)布可以通過統(tǒng)一的發(fā)布平臺,看日志排錯可以通過統(tǒng)一的日志平臺。只有極少數(shù)的緊急突發(fā)情況需要登錄到K8S的容器環(huán)境里去進行生產(chǎn)的直接調(diào)試排錯。因為整個K8S環(huán)境是面向所有服務(wù)的,所以要盡可能的避免直接登錄到K8S服務(wù)器上進行操作。
然后回到對比這個問題的本身,個人認(rèn)為云上的服務(wù)比自建要好。云上優(yōu)勢如下:
1、維護成本低
云上K8S服務(wù)除了不需要你部署之外,產(chǎn)品自身出現(xiàn)問題均有客服幫你解決。且自帶的管理界面基本滿足日常的配置需求。
2、PAAS服務(wù)集成度更高
如果你要和NAS或其它PAAS服務(wù)做集成,那肯定是用云上的更方便,如果是自建的會有一定的定制開發(fā)成本甚至完全無法集成都有可能。
3、穩(wěn)定性更高
穩(wěn)定性為什么會比自建高呢?因為自建的是面向所有大眾的哪怕有人踩過了坑但他解決后不提交問題,所以這個問題仍然存在未被修復(fù)。而云上的只要有人反饋必定會被解決,而且廠商肯定會想辦法修復(fù)這些問題避免其它客戶踩坑。
4、環(huán)境部署速度快
不要小看這個優(yōu)勢,也許有一天他是你業(yè)務(wù)能快速恢復(fù)的救命稻草。
說完優(yōu)勢再來說下劣勢:
5、成本比自建略高
根據(jù)選擇的版本不同會有價格的差異,部分版本會收取額外的平臺增值費用。
6、對個人學(xué)習(xí)成長不利
如果你是一個技術(shù)控,那么自建更適合。
下面我再舉兩個實際案例:
案例1:某服裝電商K8S選型歷程
該公司最初為了不被云廠商綁定,選擇了自建k8S平臺,但在運行一段時間準(zhǔn)備上生產(chǎn)之前,突然K8S網(wǎng)絡(luò)出現(xiàn)故障,持續(xù)數(shù)日無法解決問題。最后,還是選擇云上K8S服務(wù),運行至今未出現(xiàn)任何問題。
案例2:某在線教育公司自建K8S故障
該公司初期資源都在IDC機房,和上面案例一樣,某一天突然K8S網(wǎng)絡(luò)出現(xiàn)故障,導(dǎo)致生產(chǎn)業(yè)務(wù)全部中斷,所幸當(dāng)時已過了業(yè)務(wù)高峰期,在確定無法修復(fù)的前提下進行重新環(huán)境部署和生產(chǎn)發(fā)布調(diào)試,整個過程持續(xù)了一天一夜。
K8S管理平臺對比
在做這個對比之前,我首先要靈魂拷問一下讀者,你要用這個管理平臺做什么?是想要一個能從創(chuàng)建到應(yīng)用發(fā)布多功能的平臺,還是要一個只管理K8S平臺自身的工具。
如果你想要一個多功能的平臺,那這個平臺是否直接支持云上K8S服務(wù)?功能是不是全部滿足?每個功能模塊是不是足夠出色?如果有新功能需求是否支持定制開發(fā)?還有如果是第三方產(chǎn)品,本身出問題或不更新維護了是否意味著業(yè)務(wù)將停止不前?
所以管理平臺我建議還是選用只管理K8S平臺自身的工具,讓非K8S自身的模塊交給其它專業(yè)的工具去處理。如果是用云服務(wù)的那用云服務(wù)自身的管理平臺就足夠了。
下面我分別介紹一個第三方的和阿里云自身K8S管理平臺,并做下比較供大家參考。
1、Rancher
Rancher是一個開源的企業(yè)級容器管理平臺。通過Rancher,企業(yè)再也不必自己使用一系列的開源軟件去從頭搭建容器服務(wù)平臺。Rancher提供了在生產(chǎn)環(huán)境中使用的管理Docker和Kubernetes的全?;萜鞑渴鹋c管理平臺。
Rancher由以下四個部分組成:
- 基礎(chǔ)設(shè)施編排
- 容器編排與調(diào)度
- 應(yīng)用商店
- 企業(yè)級權(quán)限管理
整體來說Rancher滿足企業(yè)日常的K8S平臺管理功能,同時他也能管理主流的云上K8S服務(wù)集群。如果作為一個K8S基礎(chǔ)管理平臺,它是完全符合的。
2、阿里云自帶K8S管理平臺
阿里云ACK平臺在經(jīng)過數(shù)年打磨之后已經(jīng)相當(dāng)成熟和穩(wěn)定,功能也比較豐富,并且可以結(jié)合服務(wù)網(wǎng)格服務(wù)進行流量的管控。
它主要功能如下:
? 集群管理
除了可以管理自身的集群外,也可以通過注冊集群管理外部的Kubernetes集群:
- 鏡像服務(wù)
- 編排模版
- 應(yīng)用市場
- 應(yīng)用中心
可以多云多集群的部署分發(fā):
? 備份中心
備份中心為Kubernetes集群中應(yīng)用/數(shù)據(jù)提供了備份、恢復(fù)與遷移的一站式的解決方案,并支持跨集群和混合云。從功能來說阿里云ACK平臺要比Racher更強大。完全可以滿足企業(yè)的日常需求。
針對K8S配套的數(shù)據(jù)庫和中間件
使用自建和PAAS服務(wù)選型
如果你是怕被綁定而選擇自建服務(wù),那大可不必。因為在你選擇擁抱公有云的那刻起你就注定了會被公有云給綁定。它的優(yōu)劣和選擇自建和非自建K8S服務(wù)基本是一樣。核心點也是穩(wěn)定性,PAAS服務(wù)的穩(wěn)定性要大于你自建服務(wù)。
而且PAAS服務(wù)通常會伴隨著各家云的一些特色功能。比如阿里云的RDS原生支持?jǐn)?shù)據(jù)存儲加密和傳輸加密,還支持讀寫分離。做備份和容災(zāi)也更容易。
也許你還會問如果你要遷移怎么辦?遷移的話無論你是用自建還是PAAS服務(wù)都是可以遷移的,兩者在耗時上實際是差不多的。遷移服務(wù)一直都不是一件容易的事。
K8S環(huán)境CICD的選擇
現(xiàn)在各家平臺和廠商都會在管理K8S的時候集成發(fā)布平臺。但要把發(fā)布這個工作做好并不容易。各家平臺提供的大多數(shù)是基礎(chǔ)的修改Yaml配置來達到發(fā)布的效果。如果要在發(fā)布流水線中集成代碼安全掃描和自動化測試會變得很困難。所以專業(yè)的發(fā)布工作還是要交給專業(yè)的發(fā)布工具。例如:Jenkins。
總結(jié)
K8S環(huán)境應(yīng)該為業(yè)務(wù)服務(wù),要力求穩(wěn)定、可彈性,其它任何理由均要在這個基礎(chǔ)上才能做進一步的分析。
以下為個人對上述觀點的總結(jié),僅供參考:
K8S平臺選擇自建還是非自建個人建議選擇非自建的PAAS服務(wù),原因是更穩(wěn)定。無論其它理由在怎么充分穩(wěn)定肯定是業(yè)務(wù)的首要關(guān)注點。如果非要嘗試自建則建議在非生產(chǎn)環(huán)境部署同樣版本的K8S環(huán)境。
K8S管理平臺選擇順序如下:
- 如果云環(huán)境自帶的管理平臺功能滿足則優(yōu)先使用云平臺自帶的。
- 如果云環(huán)境自帶功能不滿足則考慮多個產(chǎn)品同時使用,不建議綁死在一個產(chǎn)品上。
數(shù)據(jù)庫和中間件選擇云的PAAS服務(wù),如果是非核心業(yè)務(wù)且對穩(wěn)定性要求不高的可以考慮自建。
CICD使用專業(yè)的工具,前期維護成本略高,后期穩(wěn)定后只要修改下模板參數(shù)即可。
以下為總結(jié)的對比表:
最后建議,如果最終目標(biāo)是想要實現(xiàn)PAAS服務(wù)自建的,建議在非生產(chǎn)環(huán)境做。如果有一天認(rèn)為各方面條件都達到上生產(chǎn)環(huán)境了。則進行逐步的生產(chǎn)環(huán)境業(yè)務(wù)替換。把生產(chǎn)環(huán)境的PAAS服務(wù)逐步替換成自建服務(wù)。