美文网首页我爱编程
2018-04-09 容器服务管理平台调研(一)

2018-04-09 容器服务管理平台调研(一)

作者: 四火流年 | 来源:发表于2018-04-09 17:26 被阅读134次

    背景

    公司的核心产品,服务的数量太多(30+,40+),每次部署都需要花费相当长的时间,部署脚本使用起来也很是不爽。所以期望打造一个基于 Docker + Kubernetes 的容器服务管理平台,能够达到快速部署、服务管理、服务监控、CICD等目的。

    业内解决方案

    自从2015年 Docker 流行之后,基于容器化的服务开发开始风靡起来,在阿里云、腾讯云、华为云这样的大公司介入之前,行业内有以下几个公司专攻这个领域 - CaaS (Container as a Service):

    他们之间的比较,可以参考知乎回答:

    而这些产品,包括阿里云等大公司的产品,大都是基于 Kubernetes 或者 Swarm 开发的。

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

    下面将首先介绍时速云

    时速云

    总览

    “总览”涵盖了整个“空间”的状态,包括账户信息、应用、服务、容器、存储、数据库与缓存、健康状况、今日该区域记录、镜像仓库、CI/CD、编排概况、今日该空间记录、审计日志、告警。


    总览1.png
    总览2.png

    应用管理

    三种创建应用的方式,镜像仓库、应用商店、编排文件,最终都将生成一个Yaml格式的编排文件。
    对于一个应用,除了启动、停止、刷新、删除、重新部署外,还需要能够查看该应用,包括查看运行状态、编排文件、审计日志、监控、租赁信息、创建时间、更新时间、描述、地址(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
    

    交付中心

    镜像仓库、应用商店、编排文件

    1. 镜像仓库包括私有空间、公有空间、我的收藏、添加第三方、上传镜像、下载镜像
    2. 应用商店包含了一些常用的应用,如Jenkins、Gitlab、Java开发环境等,本质上是Yaml格式的编排文件
    3. 编排文件可以创建编排,也可以查看公共编排,并直接部署

    时速云编排文件支持原生 Kubernetes 的资源定义方式,并支持服务的编排部署,从而帮助开发者和运维人员创建并管理新一代的基于容器技术的微服务架构应用。其中包括:
    [1] Pod 编排(容器组),适用于紧耦合的服务组,保证一组服务始终部署在同一节点,并可以共享网络空间和存储卷
    [2] Stack 编排,支持跨物理节点的 Pod 之间通过 API 进行网络通信。并定义服务之间的依赖关系
    以上两种编排均支持 yaml 文件描述,定义服务之间的关系,定制各个服务的属性,并一键部署运行

    CI / CD

    1. 代码仓库
    2. TenxFlow
      类似Jenkins里的pipeline

    TenxFlow流程定义:这里可以定义一个TenxFlow项目的执行流程,每个卡片对应一个子项目,分别执行镜像构建、代码编译、单元测试或者集成测试等子任务,大部分流程以生成应用镜像作为结束。

    1. Dockerfile

    云端Dockerfile: 这里保存您在TenxFlow过程中创建的云端Dockerfile,方便再次查看或使用。(这里以使用Dockerfile,对应TenxFlow子项目名称作为识别标识)

    数据库与缓存

    数据库 -> MySQL集群
    缓存 -> Redis

    集成中心

    vmware 的 vSphere
    ceph存储总览应用

    管理与日志

    操作审计
    日志查询

    账户中心

    我的账户
    我的团队(需要升级到专业版,¥99/月)
    充值/续费
    消费记录
    充值记录
    开放API
    版本

    小结

    1. 创建应用的时候,也会创建一个服务
    2. 启动该应用,服务也会是启动状态,同时启动了一个容器
    3. 容器可以做“重新分配”操作,相当于重启该应用和该服务
    4. 应用可以是有状态的,并把数据挂载在一个存储空间上
    5. 服务配置有配置组的概念,也可以关联到应用上
    6. 创建一个应用,要做到的配置包括:
      • 服务名称、镜像地址、镜像版本

      • 基本配置:内核、内存、挂载存储、实例数量


        应用的配置信息1.png
      • 辅助设置:进入点(entrypoint)、启动命令、时区设置、拉取镜像是否用本地缓存

      • 高可用:设置检查项目,如果检查项目不满足条件,将自动重启服务


        应用的配置信息2.png
      • 配置管理:将服务配置组里预先设置好的配置挂载到某个目录下


        应用的配置信息3.png
      • 高级设置:环境变量 + 映射端口


        应用的配置信息4.png
    7. 存储空间会管理到应用上,在应用被删除前、或者应用解关联该存储空间之前,不能删除存储空间
    8. 专业版可以支持更多的镜像仓库(2个 -> 20个),没有限制的TenxFlow,更多的数据库与缓存(2个 -> 8个),时间更久的日志查询(1天 -> 1年),团队管理
    9. 这是公有云解决方案,不适合我们

    参考文档

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

    本系列的其他文章:

    相关文章

      网友评论

        本文标题:2018-04-09 容器服务管理平台调研(一)

        本文链接:https://www.haomeiwen.com/subject/cbkihftx.html