企业级Kubernetes离线部署实战RKERancher全内网解决方案引言在金融、军工、政务等对网络安全要求极高的行业领域生产环境往往部署在严格隔离的内网中。这种架构虽然保障了数据安全却给容器化平台的搭建带来了巨大挑战——无法直接访问互联网获取Kubernetes组件镜像。传统方案需要运维人员手动下载数百个依赖包不仅耗时耗力还容易因版本不匹配导致部署失败。本文将揭秘如何利用RKERancher Kubernetes Engine工具链配合私有镜像仓库在完全离线的环境中快速构建生产级K8s集群并通过Rancher 2.5.7实现可视化管控。这套方案已在某大型金融机构数据中心成功验证单集群部署时间从原来的3天缩短至2小时。1. 离线环境建设基础1.1 硬件资源规划建议典型三节点高可用架构应包含3台Master节点8核16G运行etcd和control plane组件2台Worker节点根据业务需求配置运行业务负载1台镜像仓库服务器建议独立部署运行Harbor等私有仓库1台跳板机可选用于外网镜像拉取和文件传输注意所有节点需确保时间同步NTP服务和SSH互信配置磁盘建议采用SSD并保留至少40%剩余空间1.2 私有镜像仓库建设以Harbor为例的离线部署关键步骤# 在可联网环境准备离线安装包 wget https://github.com/goharbor/harbor/releases/download/v2.5.3/harbor-offline-installer-v2.5.3.tgz # 传输到内网后解压配置 tar xvf harbor-offline-installer-v2.5.3.tgz cd harbor vim harbor.yml # 修改hostname和端口配置 ./install.sh镜像同步策略对比表同步方式适用场景优点缺点全量导出导入首次环境搭建操作简单版本一致传输大文件耗时按需分层同步增量更新节省带宽快速回滚需要维护版本清单代理仓库模式有条件外联的DMZ区自动缓存常用镜像需要网络边界放行2. RKE离线集群部署详解2.1 组件离线包准备从Rancher官方渠道获取以下关键资源RKE二进制文件匹配K8s版本Kubernetes核心镜像包rancher-images.txt清单Helm客户端工具v3.x版本版本兼容性参考- RKE 1.3.x → Kubernetes 1.20-1.23 - Rancher 2.5.x → 支持K8s 1.18-1.20 - Helm 3.6 → 兼容大多数chart版本2.2 集群配置文件定制典型的高可用集群配置模板cluster.ymlnodes: - address: 192.168.1.101 internal_address: 10.0.0.101 user: k8sadmin role: [controlplane, etcd] ssh_key_path: /home/k8sadmin/.ssh/id_rsa - address: 192.168.1.102 internal_address: 10.0.0.102 user: k8sadmin role: [controlplane, etcd] - address: 192.168.1.103 internal_address: 10.0.0.103 user: k8sadmin role: [worker] private_registries: - url: registry.internal.com user: admin password: Harbor12345 is_default: true services: etcd: snapshot: true retention: 72h creation: 6h2.3 离线部署实战命令# 加载镜像到本地Docker docker load -i rancher-images.tar.gz # 推送镜像到私有仓库 ./rancher-load-images.sh --registry registry.internal.com # 启动集群部署需提前配置好SSH免密登录 rke up --config cluster.yml常见故障排查点镜像标签不匹配检查rancher-images.txt与实际拉取的版本证书验证失败在private_registries中配置insecure_registry: true节点资源不足调整kubelet的eviction-hard参数3. Rancher 2.5.7离线集成方案3.1 两种管理模式对比独立部署模式docker run -d --name rancher \ -p 8443:443 \ -v /data/rancher:/var/lib/rancher \ -e CATTLE_SYSTEM_DEFAULT_REGISTRYregistry.internal.com \ registry.internal.com/rancher/rancher:v2.5.7适用场景需要集中管理多个集群时嵌入式部署模式helm install rancher rancher-latest/rancher \ --namespace cattle-system \ --set hostnamerancher.internal.com \ --set privateCAtrue \ --set ingress.tls.sourcesecret适用场景单一集群的轻量级管理3.2 证书管理关键配置离线环境需特别注意证书配置自签名CA证书生成openssl req -x509 -newkey rsa:4096 \ -sha256 -days 3650 -nodes \ -keyout tls.key -out tls.crt \ -subj /CNrancher.internal.com将证书存入Kubernetes Secretkubectl -n cattle-system create secret tls tls-rancher \ --certtls.crt --keytls.key4. 生产环境优化实践4.1 网络策略配置建议典型Calico网络配置片段apiVersion: projectcalico.org/v3 kind: NetworkPolicy metadata: name: default-deny spec: selector: all() types: - Ingress - Egress4.2 监控方案实施离线Prometheus部署要点预先下载所需charts和镜像配置持久化存储建议使用Local PV调整资源限制示例prometheus: resources: limits: cpu: 2 memory: 4Gi4.3 升级维护策略滚动更新最佳实践先更新etcd节点逐个隔离更新再更新control plane节点最后处理worker节点每次变更后验证kubectl get componentstatuses curl -k https://localhost:6443/healthz在实施某省政务云项目时我们通过预先在测试环境验证升级路径将生产环境的升级窗口从4小时压缩到30分钟。关键是要建立完整的镜像版本映射表确保所有依赖组件的版本兼容性。