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