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