亲历者说: Kubernetes API 与 Operator, 不为人知的开发者战争( 六 )

不过 , 从上面的叙述中相信你也应该已经察觉到 , 分布式应用容器化的难点 , 并不在于容器本身有什么重大缺陷 , 而在于我们一直以来缺乏一种对“状态”的合理的抽象与描述 , 使得状态可以和容器进程本身解耦开来 。 这也就解释了为什么 , 在 Kubernetes 这样的外部编排框架逐渐成熟起了之后 , 业界才逐渐对有状态应用管理开始有了比较清晰的理解和认识 。

而我们知道 , Kubernetes 项目最具价值的理念 , 就是它围绕 etcd 构建出来的一套“面向终态”编排体系 , 这套体系在开源社区里 , 就是大名鼎鼎的“声明式 API” 。

“声明式 API”的核心原理 , 就是当用户向 Kubernetes 提交了一个 API 对象的描述之后 , Kubernetes 会负责为你保证整个集群里各项资源的状态 , 都与你的 API 对象描述的需求相一致 。 更重要的是 , 这个保证是一项“无条件的”、“没有期限”的承诺:对于每个保存在 etcd 里的 API 对象 , Kubernetes 都通过启动一种叫做“控制器模式”(Controller Pattern)的无限循环 , 不断检查 , 然后调谐 , 最后确保整个集群的状态与这个 API 对象的描述一致 。

推荐阅读