7.9 小结
本章,笔者从 Google 内部容器系统演进作为开篇,从网络、计算、存储、调度等方面展开,深入分析了 Kubernetes 的设计原理和应用。希望能让你在学习 Kubernetes 这个复杂而庞大的项目时,抓住其核心主线,理解其设计理念。
在笔者看来,Kubernetes 作为基础设施,它的设计理念有两个核心:
- 其一,从 API 到容器运行时的每一层,都为开发者暴露可供扩展的插件机制。通过 CNI 插件把网络功能解耦,让外部的开发社区、厂商参与容器网络的实现;通过 CSI 插件建立了一套庞大的存储生态;通过设备插件机制把物理资源的支持扩展到 GPU、FPGA、DPDK、RDMA 等各类异构设备。凭借这种开放性设计,Kubernetes 社区涌现出成千上万的插件,帮助运维工程师轻松构建强大的基础设施平台。从这一点讲,这也是 CNCF 基于 Kubernetes 能构建出一个庞大生态的原因。所以说,Kubernetes 并不是一个简单的容器编排平台,而是一个分量十足的“接入层”,是云原生时代真真正正的“操作系统”。
- 其二,在这一开放性底层之上,Kubernetes 将各类资源统一抽象为“资源”,并通过 YAML 文件描述。这种设计使得一个 YAML 文件即可表达复杂基础设施的最终状态,并自动管理应用程序的运维。Kubernetes 隐藏了底层实现细节,屏蔽了不同平台的差异,以一致、友好、跨平台的方式将底层基础设施能力“输送”给业务工程师,正是它的设计理念的精髓所在。
接下来,笔者将介绍基于“容器设计模式”的二次创新,也就是近几年热度极高的“服务网格”(ServiceMesh)技术。
总字数:497字