为什么要”Kubernetes From Scratch (KFS)”

我在雷阵雨之后的路上行走的时候,天空中云团浮动,时时有半明半暗的的阳光洒下。

我突然想到最近几天在部署的 Kubernetes集群引导(高可用) ,依然有很多步骤只是使用诸如 kubeadm 按照手册完成,无法明确底层实现的原理(例如,存储到 etcd - 分布式kv存储 的数据结构,服务相互的接口调用和依赖…)。

就像你安装 Ubuntu Linux 或者 Fedora ,按照安装引导一步步Next当然没有错,但是你有没有思考过每个步骤底下的调用、数据,这些原理不明晰,那么就如 禅与摩托车维修艺术 中所说的 “无法理解机械运作原理而对摩托样的现代设备产生拒绝和厌恶” 。

联想到 LFS(Linux from scratch) ,从源代码编译安装的Linux发行版,每个软件包都是从源代码开始编译配置和安装,从而对Linux软硬件的透彻理解。我也想到,对Kubernetes这样现代容器调度系统的完整构建:

  • 尽可能使用低级工具来完成步骤,不追求方便,而是透析Kubernetes庞大复杂的组建底层所使用的技术。例如,密钥认证,会使用 TLS(Transport Layer Security) (openssl) 来构建,而不是精心包装的上层工具 cfssl

  • 不使用快捷工具 kubeadm ,而是使用命令行完成 容器运行时(Container Runtimes) 配置、镜像下载、镜像运行,手工修订 etcd - 分布式kv存储 数据,完成bootlaunch

  • 解析原理,解读代码: 分析设计结构、代码逻辑,进而进行定制修改

  • 至少对核心组件进行构建和分析(K8S生态太复杂,无法穷尽)

  • 对性能进行优化(内核、网络、存储),从底层向上优化Kubernetes

  • (可选)从 LFS(Linux from scratch) 开始构建轻量级运行 Kubernetes Atlas 的整个虚拟化云计算环境