Kubespray 部署和维护 K8s 集群指南
1. 简介 Kubespray 是 Kubernetes SIGs 官方维护的部署项目,本质是一套经过大量生产环境验证的 Ansible Playbook、Inventory 模板和角色集合。它不发明新的集群模型,而是把 kubeadm 引导、etcd 集群组建、CNI 安装、证书轮换、节点扩缩容与升级这些容易出错的步骤固化为可重复执行的代码。 1.1 Kubespray 解决了什么问题 手动搭一个生产集群的工作量并不仅仅只是简单把 K8s 集群跑起来,而在于: etcd 节点集群的证书、成员管理、快照备份; 多控制平面节点下 apiserver 的负载均衡与前端证书 SAN; kubelet 配置(cgroup 驱动、预留资源、镜像垃圾回收、最大 Pod 数); CNI 插件与内核网络参数、iptables/nftables 后端的匹配; 证书到期轮换、跨小版本顺序升级、节点下线清理。 这些工作做一次可以靠文档,做十次就得靠自动化。Kubespray 的价值就在于它把这些工程细节沉淀成了一套符合生产环境最佳实践的可重复执行代码,你只需要在默认值的基础上少量改动,而不是自己编写和维护大量的脚本。 1.2 和其他工具对比 工具 Kubespray kubeadm Rancher OpenShift(OKD) kops KubeKey(kk) k3s 核心定位 Ansible驱动,生产级离线部署K8s集群 K8s官方最小化集群引导工具 企业级K8s全生命周期管理平台 红帽出品,基于K8s的企业容器平台 AWS专用K8s集群部署工具 KubeSphere社区开源部署工具,中文友好 Rancher出品轻量K8s发行版 底层引擎 Ansible Go原生二进制 容器+WebUI 容器/Operator Go,调用AWS API Go二进制,封装kubeadm 裁剪K8s单二进制 适用环境 裸金属、VMware、私有云、离线环境 裸金属/虚拟机/云主机,在线为主 公有云、私有云、边缘,多集群统一管理 企业私有/混合云,偏向生产企业 仅限AWS公有云 裸机/虚拟机,私有化离线场景 低配服务器、边缘、开发/小生产 离线部署 ✅ 完美支持,可打包离线介质 ⚠️ 支持但麻烦,需要手动下载镜像/二进制 ✅ 支持离线airgap安装 ✅ 官方提供离线方案 ❌ 依赖AWS云API,不适合离线 ✅原生支持打包离线包 ✅离线包 集群维护 Ansible playbook升级、扩容、替换节点;版本升级稳定 仅引导集群,不负责后续集群运维,升级操作繁琐 Web界面一键升级、扩缩容,多集群统一监控告警 Operator管理集群,自动化运维能力强 集群升级、节点替换由kops命令管理 一键HA、扩容升级,可配套KubeSphere控制台 一行命令运维,嵌入式etcd HA 高可用 ✅ 内置etcd三副本、控制面HA方案 需要手动搭建HA(负载均衡+多master) ✅ 自动支持HA,内置负载均衡方案 ✅ 默认HA架构 ✅ AWS上自动搭建控制面HA ✅一键HA,内置负载均衡 ✅内置HA(嵌入式etcd) 网络插件 内置Calico/Flannel/Cilium等多种CNI可选 仅提供基础CNI对接,需自行部署CNI 内置多种CNI,UI可视化配置 默认OVN-Kubernetes,也可Calico 默认Calico,可自定义CNI Calico等CNI可选 Flannel默认,支持替换CNI 存储支持 对接本地卷、Ceph、Longhorn等,ansible角色集成 仅提供CSI标准,存储需要自己部署 内置存储管理,支持Longhorn等 内置CSI+本地存储方案 对接AWS EBS等云存储 对接Longhorn、Ceph、本地存储 支持本地存储、CSI 版本适配 紧跟K8s社区版本,滞后一小段时间 K8s官方同步发布 支持多K8s版本,统一纳管不同版本集群 OKD版本独立,和上游K8s有差异 紧跟AWS支持的K8s版本 跟随上游kubeadm Rancher维护稳定版本 学习成本 中等,需要懂Ansible 低,上手简单,适合测试集群 低,WebUI友好,运维门槛低 高,体系庞大,有专属概念 中等,熟悉AWS即可快速上手 中等,中文文档友好 很低,上手极快 典型场景 裸金属机房、私有化项目、需要批量部署大量集群、等保离线环境 实验室、POC测试、小规模简单集群 多集群管理、混合云、需要统一权限/审计的企业 大型企业生产环境,需要完整容器安全、合规能力 AWS云上快速搭建销毁K8s集群 中小企业裸机/VM离线部署,可选KubeSphere控制台 资源有限、边缘、小生产集群 缺点 Ansible串行执行,大规模集群部署慢;无WebUI;故障排查需要Ansible基础 没有集群生命周期管理,生产HA搭建工作量大;缺少监控日志等附加组件 资源开销大;底层K8s被封装,深度定制复杂;商业版收费 闭源企业版昂贵;架构重,资源消耗高;学习曲线陡峭 只能跑在AWS,无法裸金属/其他云使用 依赖kubeadm;底层封装,深度排障需要kubeadm知识;KubeSphere额外耗资源 裁剪部分组件,重型大规模生产不推荐;和标准K8s有细微差异 国内中小企业热度 ⭐⭐⭐ 更多集成商使用,中小企业自用偏少 ⭐⭐⭐⭐⭐ 最高,几乎所有运维都学这个 ⭐⭐⭐⭐ 多集群场景热门 ⭐⭐ 大型企业为主,中小企业很少用 ⭐ 国内几乎不用 ⭐⭐⭐⭐ 私有化中小企业热门 ⭐⭐⭐⭐ 小集群/边缘场景热门 2. 底层架构和设计 关键核心设计: ...