背景
公司的核心產(chǎn)品,服務(wù)的數(shù)量太多(30+,40+),每次部署都需要花費(fèi)相當(dāng)長的時間,部署腳本使用起來也很是不爽。所以期望打造一個基于 Docker + Kubernetes 的容器服務(wù)管理平臺,能夠達(dá)到快速部署、服務(wù)管理、服務(wù)監(jiān)控、CICD等目的。
業(yè)內(nèi)解決方案
自從2015年 Docker 流行之后,基于容器化的服務(wù)開發(fā)開始風(fēng)靡起來,在阿里云、騰訊云、華為云這樣的大公司介入之前,行業(yè)內(nèi)有以下幾個公司專攻這個領(lǐng)域 - CaaS (Container as a Service):
- 時速云 https://www.tenxcloud.com/
- 靈雀云 http://www.alauda.cn/
- DAO Cloud http://www.daocloud.io/
- 精靈云 https://www.ghostcloud.cn/
- 好雨云 https://www.goodrain.com/
- 青云 https://www.qingcloud.com/
他們之間的比較,可以參考知乎回答:
- https://www.zhihu.com/question/31773261
- https://www.zhihu.com/question/38537701
- https://www.zhihu.com/question/38979063
而這些產(chǎn)品,包括阿里云等大公司的產(chǎn)品,大都是基于 Kubernetes 或者 Swarm 開發(fā)的。
Kubernetes Git 地址:https://github.com/kubernetes/kubernetes
下面將首先介紹時速云
時速云
總覽
“總覽”涵蓋了整個“空間”的狀態(tài),包括賬戶信息、應(yīng)用、服務(wù)、容器、存儲、數(shù)據(jù)庫與緩存、健康狀況、今日該區(qū)域記錄、鏡像倉庫、CI/CD、編排概況、今日該空間記錄、審計日志、告警。


應(yīng)用管理
三種創(chuàng)建應(yīng)用的方式,鏡像倉庫、應(yīng)用商店、編排文件,最終都將生成一個Yaml格式的編排文件。
對于一個應(yīng)用,除了啟動、停止、刷新、刪除、重新部署外,還需要能夠查看該應(yīng)用,包括查看運(yùn)行狀態(tài)、編排文件、審計日志、監(jiān)控、租賃信息、創(chuàng)建時間、更新時間、描述、地址(url + port)
樣例:
kind: Service
apiVersion: v1
metadata:
name: test
labels:
name: test
annotations:
tenxcloud.com/schemaPortname: 'test-1/TCP,test-2/TCP'
spec:
ports:
- name: test-1
protocol: TCP
targetPort: 9200
port: 9200
- name: test-2
protocol: TCP
targetPort: 9300
port: 9300
selector:
name: test
externalIPs:
- 11.11.1.1
---
kind: Deployment
apiVersion: v1
metadata:
name: test
labels:
name: test
spec:
replicas: 1
selector:
matchLabels:
name: test
template:
metadata:
labels:
name: test
spec:
containers:
- name: test
image: 'index.tenxcloud.com/tenxcloud/elasticsearch:latest'
ports:
- containerPort: 9200
protocol: TCP
- containerPort: 9300
protocol: TCP
env:
- name: PATH
value: >-
/usr/share/elasticsearch/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
- name: LANG
value: C.UTF-8
- name: JAVA_VERSION
value: 8u66
- name: JAVA_DEBIAN_VERSION
value: 8u66-b17-1~bpo8+1
- name: CA_CERTIFICATES_JAVA_VERSION
value: '20140324'
- name: ELASTICSEARCH_MAJOR
value: '2.0'
- name: ELASTICSEARCH_VERSION
value: 2.0.0
- name: ELASTICSEARCH_REPO_BASE
value: 'http://packages.elasticsearch.org/elasticsearch/2.x/debian'
resources:
limits:
memory: 512Mi
requests:
memory: 512Mi
args:
- elasticsearch
command:
- /docker-entrypoint.sh
imagePullPolicy: Always
volumeMounts:
- name: volume-1
mountPath: /usr/share/elasticsearch/data
readOnly: false
volumes:
- name: volume-1
rbd:
image: test-storage
fsType: ext4
交付中心
鏡像倉庫、應(yīng)用商店、編排文件
- 鏡像倉庫包括私有空間、公有空間、我的收藏、添加第三方、上傳鏡像、下載鏡像
- 應(yīng)用商店包含了一些常用的應(yīng)用,如Jenkins、Gitlab、Java開發(fā)環(huán)境等,本質(zhì)上是Yaml格式的編排文件
- 編排文件可以創(chuàng)建編排,也可以查看公共編排,并直接部署
時速云編排文件支持原生 Kubernetes 的資源定義方式,并支持服務(wù)的編排部署,從而幫助開發(fā)者和運(yùn)維人員創(chuàng)建并管理新一代的基于容器技術(shù)的微服務(wù)架構(gòu)應(yīng)用。其中包括:
[1] Pod 編排(容器組),適用于緊耦合的服務(wù)組,保證一組服務(wù)始終部署在同一節(jié)點(diǎn),并可以共享網(wǎng)絡(luò)空間和存儲卷
[2] Stack 編排,支持跨物理節(jié)點(diǎn)的 Pod 之間通過 API 進(jìn)行網(wǎng)絡(luò)通信。并定義服務(wù)之間的依賴關(guān)系
以上兩種編排均支持 yaml 文件描述,定義服務(wù)之間的關(guān)系,定制各個服務(wù)的屬性,并一鍵部署運(yùn)行
CI / CD
- 代碼倉庫
- TenxFlow
類似Jenkins里的pipeline
TenxFlow流程定義:這里可以定義一個TenxFlow項目的執(zhí)行流程,每個卡片對應(yīng)一個子項目,分別執(zhí)行鏡像構(gòu)建、代碼編譯、單元測試或者集成測試等子任務(wù),大部分流程以生成應(yīng)用鏡像作為結(jié)束。
- Dockerfile
云端Dockerfile: 這里保存您在TenxFlow過程中創(chuàng)建的云端Dockerfile,方便再次查看或使用。(這里以使用Dockerfile,對應(yīng)TenxFlow子項目名稱作為識別標(biāo)識)
數(shù)據(jù)庫與緩存
數(shù)據(jù)庫 -> MySQL集群
緩存 -> Redis
集成中心
vmware 的 vSphere
ceph存儲總覽應(yīng)用
管理與日志
操作審計
日志查詢
賬戶中心
我的賬戶
我的團(tuán)隊(需要升級到專業(yè)版,¥99/月)
充值/續(xù)費(fèi)
消費(fèi)記錄
充值記錄
開放API
版本
小結(jié)
- 創(chuàng)建應(yīng)用的時候,也會創(chuàng)建一個服務(wù)
- 啟動該應(yīng)用,服務(wù)也會是啟動狀態(tài),同時啟動了一個容器
- 容器可以做“重新分配”操作,相當(dāng)于重啟該應(yīng)用和該服務(wù)
- 應(yīng)用可以是有狀態(tài)的,并把數(shù)據(jù)掛載在一個存儲空間上
- 服務(wù)配置有配置組的概念,也可以關(guān)聯(lián)到應(yīng)用上
- 創(chuàng)建一個應(yīng)用,要做到的配置包括:
服務(wù)名稱、鏡像地址、鏡像版本
-
基本配置:內(nèi)核、內(nèi)存、掛載存儲、實例數(shù)量
應(yīng)用的配置信息1.png 輔助設(shè)置:進(jìn)入點(diǎn)(entrypoint)、啟動命令、時區(qū)設(shè)置、拉取鏡像是否用本地緩存
-
高可用:設(shè)置檢查項目,如果檢查項目不滿足條件,將自動重啟服務(wù)
應(yīng)用的配置信息2.png -
配置管理:將服務(wù)配置組里預(yù)先設(shè)置好的配置掛載到某個目錄下
應(yīng)用的配置信息3.png -
高級設(shè)置:環(huán)境變量 + 映射端口
應(yīng)用的配置信息4.png
- 存儲空間會管理到應(yīng)用上,在應(yīng)用被刪除前、或者應(yīng)用解關(guān)聯(lián)該存儲空間之前,不能刪除存儲空間
- 專業(yè)版可以支持更多的鏡像倉庫(2個 -> 20個),沒有限制的TenxFlow,更多的數(shù)據(jù)庫與緩存(2個 -> 8個),時間更久的日志查詢(1天 -> 1年),團(tuán)隊管理
- 這是公有云解決方案,不適合我們。
參考文檔
本系列的其他文章:



