kubernetes业务领域建模
k8s是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效,Kubernetes提供了应用部署,规划,更新,维护的一种机制。
一、Collecting application domain information
本次工程实践的目标是基于国产芯片集群搭建自动化操作容器的平台,这些操作包括部署,调度和节点集群间扩展。如果你曾经用过Docker容器技术部署容器,那么在我们的工程项目中,docker就是我们要管理的目标。
我们需要完成的功能:
- 自动化容器的部署和复制
- 随时扩展或收缩容器规模
- 将容器组织成组,并且提供容器间的负载均衡
- 很容易地升级应用程序容器的新版本
- 提供容器弹性,如果容器失效就替换它,等等...
可行性分析(相关参考文档):
- 寒武纪提供的开发者手册,提供服务器集群相关的API
- Intel提供的相关接口与寒武纪提供接口的横向对比
- 开源项目kubernetes已基于Intel芯片实现相关的功能,可基于其做国产芯片的移植
二、Brainstorming
重要领域概念:
- master主节点
是集群控制节点,来负责整个集群的管理和控制,基本上k8s的所有控制命令都是发给它。我们后面执行的命令基本都是在master节点上运行的。通常它会占据一个独立的x86服务器(或一个虚拟机)。
属性:(1)k8s API server(kube-apiserver):提供了HTTP Rest接口的关键服务进程,是所有资源的增删改查的唯一入口,也是集群集群控制的入口进程。kubectl的命令会调用到api server,来实现资源的增删查改。
(2)kube-controller-manager:k8s所有资源对象的自动化控制中心。
(3)kube-scheduler:pod调度进程。
(4)etcd server进程:对存储对象进行持久化以及数据同步
- node节点
集群中除了master的其他机器称为node。Node可以是一台物理机,也可以是一台虚拟机。当某个node宕机,其上的工作负载会被master自动转移到其他节点上。node是运行docker的实体
属性:(1)kubelet:负责pod对应的容器创建、启停等任务。
(2)kube-porxy:实现service通信的重要组件。
(3)docker engine:docker引擎,负责本机的容器创建和管理。
- pod
pod是kubernets最重要的基本概念,其包含一个Pause容器以及一个或多个紧密相关的用户业务docker。其中Pause容器对应的镜像属于kubernets平台的一部分。
属性:(1)name (2)labels (3)镜像 (3)端口号(4)资源配额
各概念间的关系:
master用于管理其余node,node中以pod作为基本管理单位运行着docker。其中把相关的docker放在一个pod中,统一向外部提供服务。
三、UML class diagram
master类负责接收用户的控制命令、etcd方法负责持久化及同步、auto_controller负责负载均衡及路由转发。
node类主要实现pod_control方法主要实现pod控制及servier通信。
pod类主要实现docker_manager方法主要负责容器的管理
其他方法为中间过程调用的方法。