KubeKey + KubeSphere:我如何把 K8s 安装从命令堆变成可回滚实验

这是我重写 KubeKey + KubeSphere 旧文后的复盘:安装 K8s 不只是复制脚本,而是先准备干净系统、快照、网络、时间和存储边界,再用 KubeKey 把复杂集群变成可验证实验。
KubeKey + KubeSphere:我如何把 K8s 安装从命令堆变成可回滚实验

KubeKey + KubeSphere:我如何把 K8s 安装从命令堆变成可回滚实验

我第一次写 KubeKey + KubeSphere 安装笔记时,重点是把命令记录下来。
现在回头看,真正有价值的不是那一串脚本,而是我开始意识到:K8s 安装不是“照着教程跑完”,而是一场关于环境边界的实验。
Kubernetes 本身已经很复杂。网络、容器运行时、存储、时间同步、防火墙、系统依赖,只要有一个基础条件不干净,后面就会出现各种看似玄学的问题。
所以我现在不会把这类文章写成“快速搭建”。我更愿意把它理解成:我如何给自己搭一个可回滚、可复盘、可继续扩展的云原生实验环境。

我为什么选择 KubeSphere

原生 Kubernetes 很强,但它对初学者并不友好。
很多对象都在命令行里,Pod、Deployment、Service、ConfigMap、PVC、Ingress、Namespace,如果没有一个可视化入口,很容易只看见命令,看不见系统结构。
KubeSphere 对我的价值,是把 K8s 的很多对象用更直观的方式展示出来。
我可以看到:
  • 节点资源是否正常;
  • 工作负载是否运行;
  • 服务是否暴露;
  • 存储卷是否绑定;
  • 日志和事件里发生了什么;
  • 多租户、DevOps、监控这些能力如何组合。
这对学习很重要。
我不是为了装一个面板而装面板,而是希望通过面板看清楚 K8s 背后的对象关系。

我的安装前检查

如果今天重新搭 KubeSphere,我会先做安装前检查。
第一,系统要尽量干净。
不要在一台已经装过很多 Docker、K8s、网络插件、旧依赖的机器上硬装。K8s 对环境状态很敏感,旧配置会制造很多后续问题。
第二,先做快照。
不管是虚拟机还是云服务器,我都会在纯净系统阶段做快照。K8s 安装失败后继续补救,很多时候不如回到干净状态重新来。
第三,确认时间同步。
集群节点时间不一致,会影响证书、调度和组件通信。我会先配置 NTP 或系统时间同步,再继续安装。
第四,处理防火墙、SELinux、swap 和基础依赖。
这些不是形式动作。K8s 对网络转发、容器运行时和节点调度都有要求,基础条件不满足时,错误常常出现在很后面。
第五,确认网络环境。
如果服务器访问 GitHub、Googleapis 或镜像仓库受限,就要提前选择国内镜像、代理或离线方案。不要等安装过程卡住才临时查。

我如何看 KubeKey

KubeKey 的价值,是把很多复杂安装动作收进一个相对清晰的流程里。
它适合两种场景:
  • 单节点 All-in-One,用来学习和验证;
  • 多节点集群,用来理解真实部署结构。
我会从 All-in-One 开始。
不是因为单节点更接近生产,而是因为它能用最低成本帮助我确认:这台机器、这个网络、这个版本组合,能不能把基础链路跑通。
当 All-in-One 稳定之后,再去理解多节点配置、节点角色、etcd、master、worker、负载均衡和存储。
这比一开始就追求高可用更现实。

我的安装地图

我会把安装拆成几层。
第一层,系统准备。
包括 hostname、时间同步、防火墙、swap、SELinux、基础依赖、Docker 或容器运行时。
第二层,安装工具。
准备 KubeKey,确认版本,确认网络访问方式。如果国内网络访问受限,就设置对应区域和镜像源。
第三层,创建集群。
用 KubeKey 指定 Kubernetes 和 KubeSphere 版本,执行创建命令。这个阶段我会保留日志,不只看最后是否成功。
第四层,验证集群。
安装完成后,我会检查 KubeSphere 面板、kubectl、节点状态、Pod 状态和安装器日志。
第五层,扩展能力。
确认基础集群稳定后,再考虑 NFS、DevOps、日志、监控、中间件和多节点扩展。
这张地图的重点是:一步一步验证,而不是一次性打开所有能力。

我会保留哪些边界

KubeSphere 很适合学习和内部管理,但我不会把测试环境直接当生产环境。
我的边界是:
  • 单节点环境只用于学习和验证;
  • 生产环境要重新设计高可用、备份、监控和权限;
  • 存储方案要先明确数据恢复方式;
  • 安装脚本里的版本号要记录下来;
  • 每次安装失败都要保留日志,而不是只记“失败了”;
  • 修改集群配置前先确认影响范围。
K8s 最大的问题不是不会安装,而是装上之后不知道自己改变了什么。
我希望每一次安装、失败、回滚和重试,都能留下判断依据。

这篇旧文现在对我的意义

这篇文章原来像一份命令清单。
现在我更愿意把它改成一份实验路线图。
KubeKey 和 KubeSphere 帮我把复杂云原生系统拉到自己能观察的范围内。它让我知道,一个看似庞大的集群,也可以从一台干净机器、一个快照、一次安装日志开始。
我的长期判断是:技术系统越复杂,越需要先建立可回滚边界。
没有边界的自动化,只会让问题扩散得更快。
有边界的实验,才会让每一次失败都变成下一次部署的经验。
上一篇
KubeSphere 部署中间件:我如何从 MySQL、Redis 到 Nacos 看见云原生边界
下一篇
NotionNext部署Web3.0-4EverLand
Loading...