核心设计与架构
Kubemetes项目要着重解决的问题,则来自Borg的研究人员在论文中提到的—个非常重要的观点:
- 在大规模集群中的各种任务之间运行’实际上存在各种各样的关系。这些关系的处理才是作业编排和管理系统最困难的地方。
核心能力与项目定位
Kubemetes项目最主要的设计思想就是,以统—的方式抽象底层基础设施能力(比如计算、存储、网络),定义任务编排的各种关系(比如亲密关系`访问关系`代理关系)。
将这些抽象以声明式API的方式对外暴露,从而允许平台构建者基于这些抽象进—步构建自己的PaaS乃至任何上层平台。
可以看到,Kubemetes项目并没有像其他项目那样’为每—个管理功能创建—条指令,然后在项目中实现其中的逻辑.这种做法的确可以解决当前的问题,但是在更多的问题出现之后往往会力不从心。
我们推崇的使用方法是(声明式AP):
- 首先通过一个任务编排对象’比如Pod、 Job、CronJob等描述你试图管理的应用
- 然后’为它定义—些运维能力对象’比如Service、Ingress、HorizomalPodAutoscaler(自动水平扩展器)等。这些对象会负责具体的运维能力侧功能。
声明式API是Kubemetes最核心的设计理念,正因为有了它’我们基于Kubemetes构建的上层平台才有了一致的编程范式和交互编程界面。