2018-04-09 容器服務(wù)管理平臺調(diào)研(一)


背景

公司的核心產(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):

他們之間的比較,可以參考知乎回答:

而這些產(chǎn)品,包括阿里云等大公司的產(chǎn)品,大都是基于 Kubernetes 或者 Swarm 開發(fā)的。

Kubernetes Git 地址:https://github.com/kubernetes/kubernetes

下面將首先介紹時速云

時速云

總覽

“總覽”涵蓋了整個“空間”的狀態(tài),包括賬戶信息、應(yīng)用、服務(wù)、容器、存儲、數(shù)據(jù)庫與緩存、健康狀況、今日該區(qū)域記錄、鏡像倉庫、CI/CD、編排概況、今日該空間記錄、審計日志、告警。


總覽1.png

總覽2.png

應(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)用商店、編排文件

  1. 鏡像倉庫包括私有空間、公有空間、我的收藏、添加第三方、上傳鏡像、下載鏡像
  2. 應(yīng)用商店包含了一些常用的應(yīng)用,如Jenkins、Gitlab、Java開發(fā)環(huán)境等,本質(zhì)上是Yaml格式的編排文件
  3. 編排文件可以創(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

  1. 代碼倉庫
  2. TenxFlow
    類似Jenkins里的pipeline

TenxFlow流程定義:這里可以定義一個TenxFlow項目的執(zhí)行流程,每個卡片對應(yīng)一個子項目,分別執(zhí)行鏡像構(gòu)建、代碼編譯、單元測試或者集成測試等子任務(wù),大部分流程以生成應(yīng)用鏡像作為結(jié)束。

  1. 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é)

  1. 創(chuàng)建應(yīng)用的時候,也會創(chuàng)建一個服務(wù)
  2. 啟動該應(yīng)用,服務(wù)也會是啟動狀態(tài),同時啟動了一個容器
  3. 容器可以做“重新分配”操作,相當(dāng)于重啟該應(yīng)用和該服務(wù)
  4. 應(yīng)用可以是有狀態(tài)的,并把數(shù)據(jù)掛載在一個存儲空間上
  5. 服務(wù)配置有配置組的概念,也可以關(guān)聯(lián)到應(yīng)用上
  6. 創(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
  7. 存儲空間會管理到應(yīng)用上,在應(yīng)用被刪除前、或者應(yīng)用解關(guān)聯(lián)該存儲空間之前,不能刪除存儲空間
  8. 專業(yè)版可以支持更多的鏡像倉庫(2個 -> 20個),沒有限制的TenxFlow,更多的數(shù)據(jù)庫與緩存(2個 -> 8個),時間更久的日志查詢(1天 -> 1年),團(tuán)隊管理
  9. 這是公有云解決方案,不適合我們。

參考文檔

  1. http://docs.tenxcloud.com/
  2. http://docs.tenxcloud.com/quick-start
  3. https://api-doc.tenxcloud.com/

本系列的其他文章:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • [TOC] Docker容器平臺選型調(diào)研 編排選型 Swarm Swarm可以從一個Dockerfile來構(gòu)建鏡像...
    AllenWu閱讀 2,703評論 0 7
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,688評論 19 139
  • Docker — 云時代的程序分發(fā)方式 要說最近一年云計算業(yè)界有什么大事件?Google Compute Engi...
    ahohoho閱讀 15,872評論 15 147
  • 宴希,大家都知道生鮮 電商這條路走起來非常的艱辛!為何我會在這條路上持續(xù)的做了一年!在做生鮮之前宴希單位上過班!也...
    宴希閱讀 333評論 0 0
  • 習(xí)題1:詞的共時研究 第一章 詞的形態(tài)構(gòu)成 重點(diǎn)提示:詞的定義,語素定義與分類,語素變體 難點(diǎn)提示:詞的同一性問題...
    火魚鰻酥閱讀 3,316評論 0 1

友情鏈接更多精彩內(nèi)容