2026年01月20日/ 浏览 12
你是不是也遇到过这样的困境?内网环境、没有外网、还要搭建高可用的Kubernetes集群。听起来就像是要在沙漠里建游泳池,既要有水,还要保证池子不干涸。
别慌,今天我就带你一步步破解这个难题。
想象一下,你带着一队人马进入了一个与世隔绝的深山老林。没有信号、没有补给站,所有物资都得提前准备好。离线部署Kubernetes集群就是这种感觉。
你得把所有需要的镜像、软件包、配置文件都打包带走。漏掉任何一个,都可能让你在关键时刻功亏一篑。
高可用架构意味着你需要多台机器协同工作。它们之间如何通信?如何选举主节点?万一主节点挂了怎么办?这些问题在离线环境下会变得更加棘手。
部署过程不能出错。因为一旦出错,你没法临时下载补丁或者寻求外网帮助。每一步都必须精准无误。

开始之前,我们需要建立一个“离线资源仓库”。这就像是为长途旅行准备的补给箱。
镜像仓库是重中之重。Docker Hub上的所有必要镜像都得提前拉取下来,存放到私有仓库中。kube-apiserver、kube-controller-manager、kube-scheduler、etcd、CoreDNS……一个都不能少。
然后是二进制文件。kubeadm、kubelet、kubectl的对应版本必须完全匹配。差一个小版本号,都可能导致部署失败。
别忘了系统依赖包。某些Linux发行版可能需要特定的软件包支持,比如conntrack、socat、ebtables等。这些也得提前准备好。
准备工作做得好,部署过程没烦恼。花在准备上的每一分钟,都能在部署时为你节省十倍的时间。
kubeadm这个工具,在离线环境下会展现出它真正的价值。
它不像那些花里胡哨的部署工具需要复杂的配置。kubeadm用最简洁的方式,帮你搭建起高可用集群的骨架。控制平面的高可用,通过负载均衡器实现。你可以用硬件负载均衡器,也可以用软件方案如HAProxy、Keepalived。
但这里有个小秘密:在离线环境下,很多人会忽略时间同步问题。没有NTP服务器,集群节点的时间可能逐渐漂移。而时间不同步,在分布式系统中是致命的。
所以,记得在每台机器上配置chronyd或ntpd,让它们以其中一台为时间源。这个小细节,能避免你日后无数个不眠之夜。
现在,让我们进入实战环节。
第一步,在所有节点上安装容器运行时和kubeadm组件。因为是离线环境,你需要用本地包管理器安装提前下载好的rpm或deb包。
第二步,初始化第一个控制平面节点。这里的关键是kubeadm init命令的参数配置。
--apiserver-advertise-address、--control-plane-endpoint(指向负载均衡器地址)、--image-repository(指向你的私有镜像仓库)——这些参数一个都不能错。第三步,安装网络插件。Calico、Flannel、Weave Net……选择哪个?在离线环境下,我更推荐Calico,因为它的镜像相对较少,部署简单。但无论选哪个,都得确保镜像已经拉取到私有仓库。
第四步,添加其他控制平面节点。用kubeadm join命令,带上控制平面节点特有的参数。这时你会发现,高可用架构正在慢慢成型。
第五步,添加工作节点。相对简单,但同样需要确保所有依赖镜像都已就位。
整个过程就像搭积木,每一块都必须放在正确的位置。放错了,不是重来那么简单,而是可能要把整个结构推倒重来。
即使准备再充分,离线部署也难免遇到问题。
最常见的是镜像拉取失败。明明已经把镜像推送到私有仓库了,为什么节点还是拉取不到?检查一下镜像标签是否正确,仓库地址是否配置正确,节点能否访问仓库地址。
然后是证书问题。kubeadm生成的证书默认只有一年有效期。在离线环境下,证书过期会是个大麻烦。提前规划证书续期方案,或者生成长期有效的证书。
网络问题也经常出现。节点之间网络不通,或者防火墙规则阻止了必要端口的通信。在离线环境,你没法用ping或curl测试外网,所以内网连通性测试要做得更彻底。
部署成功只是开始,如何让集群长期稳定运行才是真正的考验。
资源监控在离线环境下尤其重要。你不能依赖云服务商的监控方案,需要自己搭建Prometheus和Grafana。同样,这些组件的镜像也得提前准备好。
日志收集也要考虑。EFK栈(Elasticsearch、Fluentd、Kibana)是个不错的选择,但资源消耗较大。如果机器配置有限,可以考虑轻量级方案。
备份策略绝对不能忽视。etcd的数据备份、集群配置备份、甚至整个节点的镜像备份。在离线环境,数据丢失几乎是不可恢复的灾难。
考虑自动化运维。虽然离线,但你可以用Ansible、SaltStack等工具编写自动化脚本,减少手动操作带来的错误。
你可能会问,这么麻烦,为什么还要离线部署?
原因其实很简单:安全、可控、合规。金融、军工、政府等敏感行业,往往要求完全的内网环境。数据不出内网,是这些场景的铁律。
而且,离线部署让你对集群的每一个组件都有完全的控制权。没有你不了解的第三方服务,没有突如其来的版本更新,一切都在掌控之中。
这种掌控感,是在线部署无法给予的。当然,代价就是前期准备工作的繁琐,和后期维护的自主负责。
但当你看到集群稳定运行,支撑起关键业务时,所有的努力都是值得的。那种成就感,就像是在无人区建立了一座自给自足的城市。
离线部署高可用Kubernetes集群,确实比在线部署复杂得多。但复杂不代表不可能。
把大问题拆解成小问题,把复杂流程分解为简单步骤。准备充分,执行细致,遇到问题冷静分析。你会发现,这座看似难以攀登的高山,其实有清晰的路径可循。
现在,你已经掌握了离线部署的核心要点。接下来要做的,就是动手实践。从准备资源开始,一步一个脚印,搭建属于你自己的高可用Kubernetes集群。
记住,每一个成功的离线部署案例,都是从第一次尝试开始的。你的集群,正在等待你的创造。