kubernetes用例建模
k8s是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用简单并且高效(powerful),Kubernetes提供了应用部署,规划,更新,维护的一种机制。本次工程实践项目依靠于k8s做基于国产芯片的适应性改写。
本博客仅从大框架上对k8s进行用例建模分析,关于其中安全、负载均衡细节未分析。
一、大体框架
k8s大部分概念比如Node,Pod,service等都可以看做一种资源对象,几乎所有的资源对象都可以通过k8s提供的kubectl工具执行增,删,改,查等操作并将其保存在etcd中持久化存储。
从业务建模上看,可针对master主节点、node节点以及pod进行主要分析
二、master
master指的是集群控制节点,来负责整个集群的管理和控制,基本上k8s的所有控制命令都是发给它。我们后面执行的命令基本都是在master节点上运行的。通常它会占据一个独立的x86服务器(或一个虚拟机)。
master主要实现的业务功能:
-
k8s API server(kube-apiserver):提供了HTTP Rest接口的关键服务进程,是所有资源的增删改查的唯一入口,也是集群集群控制的入口进程。kubectl的命令会调用到api server,来实现资源的增删查改。
-
kube-controller-manager:k8s所有资源对象的自动化控制中心。
-
kube-scheduler:pod调度进程。
-
etcd server进程:对存储对象进行持久化以及数据同步
三、node
k8s集群中其他机器被称为node节点,Node可以是一台物理机,也可以是一台虚拟机。当某个node宕机,其上的工作负载会被master自动转移到其他节点上。
node节点主要实现的业务功能:
-
kubelet:负责pod对应的容器创建、启停等任务。
-
kube-porxy:实现service通信的重要组件。
-
docker engine:docker引擎,负责本机的容器创建和管理。
node节点可以在运行期间动态增加到k8s集群中,在默认情况下kubelet会将master注册自己,并定时向master汇报自身情报。