10.1 “以应用为中心”的设计
很多用户开始学习 Kubernetes,太多的用户也在抱怨 Kubernetes “太复杂了”!
10.1.1 下沉基础设施能力
10.2.2 Kubernetes 太复杂了
“复杂”,是任何一个基础设施项目天生的特质而不是缺点。基础设施本身的复杂度,并不意味着基础设施的所有使用者都应该承担所有这些复杂度本身。为了解决这个问题,很多公司落地 Kubernetes 的时候采用了 “PaaS” 化的思路,即在 Kubernetes 之上,开发一个类 PaaS 平台。
但这个设计,跟 Kubernetes “以应用为中心”的设计不一致,Kubernetes 一旦退化成“类IaaS 基础设施”,它的声明式 API、容器设计模式、控制器模式根本无法发挥原本的实力,也很难与广泛的生态对接。在 PaaS 系统上的体现就是不具备扩展性,假设我们要满足以下诉求:
- 能不能帮我运行一个定时任务
- 能不能帮我运运行一个 MySQL Operator
- 能不能根据自定义 metrics 定义水平扩容策略
- 能不能基于 Istio 来帮我做渐进式灰度发布
- 能不能...
这里的关键点在于,上述能力在 Kubernetes 生态中都是非常常见的的能力,有的甚至是 Kubernetes 内置就可以支持。但是到了 PaaS 这里,要支持上述任何一个能力,必须进行一轮开发。而且由于先前的一些假设和设计,甚至很可能需要大规模的重构。
总字数:615字