.. _why_kfs: ========================================= 为什么要"Kubernetes From Scratch (KFS)" ========================================= 我在雷阵雨之后的路上行走的时候,天空中云团浮动,时时有半明半暗的的阳光洒下。 我突然想到最近几天在部署的 :ref:`bootstrap_kubernetes_ha` ,依然有很多步骤只是使用诸如 :ref:`kubeadm` 按照手册完成,无法明确底层实现的原理(例如,存储到 :ref:`etcd` 的数据结构,服务相互的接口调用和依赖...)。 就像你安装 :ref:`ubuntu_linux` 或者 :ref:`fedora` ,按照安装引导一步步Next当然没有错,但是你有没有思考过每个步骤底下的调用、数据,这些原理不明晰,那么就如 `禅与摩托车维修艺术 `_ 中所说的 "无法理解机械运作原理而对摩托样的现代设备产生拒绝和厌恶" 。 联想到 :ref:`lfs_linux` ,从源代码编译安装的Linux发行版,每个软件包都是从源代码开始编译配置和安装,从而对Linux软硬件的透彻理解。我也想到,对Kubernetes这样现代容器调度系统的完整构建: - 尽可能使用低级工具来完成步骤,不追求方便,而是透析Kubernetes庞大复杂的组建底层所使用的技术。例如,密钥认证,会使用 :ref:`tls` (openssl) 来构建,而不是精心包装的上层工具 ``cfssl`` - 不使用快捷工具 :ref:`kubeadm` ,而是使用命令行完成 :ref:`container_runtimes` 配置、镜像下载、镜像运行,手工修订 :ref:`etcd` 数据,完成bootlaunch - 解析原理,解读代码: 分析设计结构、代码逻辑,进而进行定制修改 - 至少对核心组件进行构建和分析(K8S生态太复杂,无法穷尽) - 对性能进行优化(内核、网络、存储),从底层向上优化Kubernetes - (可选)从 :ref:`lfs_linux` 开始构建轻量级运行 :ref:`kubernetes` 的整个虚拟化云计算环境