在企业内网环境中部署Rancher,最大的挑战就是解决网络隔离带来的依赖问题。我去年给一家制造企业做私有云改造时就遇到过这种情况——他们的生产环境完全隔离外网,但又要实现容器化管理。下面分享我当时摸索出来的完整解决方案。
首先需要准备的是离线镜像包。Rancher官方提供了airgap安装包,包含所有必需的容器镜像。这里有个细节要注意:不同版本的Rancher对应不同版本的K3s镜像。比如v2.9.0需要配套的k3s-airgap-images-amd64.tar.gz,如果版本不匹配会导致集群初始化失败。我建议在能联网的机器上先执行这个命令获取准确版本:
bash复制docker run --rm registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.9.0 --version
拿到镜像包后,存储路径有讲究。很多教程只说放到/var/lib/rancher下,但在实际部署中发现,如果磁盘空间不足会导致后续集群扩展困难。我的经验是单独挂载大容量磁盘,比如:
bash复制mkdir -p /data/rancher/k3s/agent/images/
chmod 777 -R /data/rancher
启动容器时最容易踩的坑是权限问题。很多新手直接跑默认命令,结果遇到cgroup报错。这里必须加上--privileged参数,同时建议设置ulimit:
bash复制docker run -d \
--privileged \
--ulimit nofile=65536:65536 \
--restart=unless-stopped \
-p 80:80 -p 443:443 \
-e CATTLE_BOOTSTRAP_PASSWORD=yourpassword \
-v /data/rancher:/var/lib/rancher \
--name rancher \
registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.9.0
重要提示:如果企业有安全审计要求,建议额外配置以下环境变量:
SSL_CERT_DIR:指定自定义CA证书路径TZ:设置容器时区(比如Asia/Shanghai)HTTP_PROXY/HTTPS_PROXY:如果有代理服务器需要配置启动后别急着操作,先用这个命令检查健康状态:
bash复制docker logs -f rancher 2>&1 | grep "Bootstrap Password"
在内网环境中,镜像拉取速度直接影响部署效率。除了设置阿里云镜像加速,更彻底的方案是自建Harbor仓库。我整理了一份对比表:
| 方案类型 | 配置复杂度 | 传输速度 | 适用场景 |
|---|---|---|---|
| 阿里云加速 | 简单 | 依赖外网带宽 | 临时测试环境 |
| Harbor仓库 | 中等 | 内网千兆 | 生产环境 |
| 本地registry | 复杂 | 本地磁盘IO | 安全隔离环境 |
配置Harbor加速的完整流程:
系统设置中添加registry凭证yaml复制private_registries:
- url: harbor.yourcompany.com
user: robot$project+push
password: your_token
生产环境最头疼的就是网络冲突。有次客户环境用了10.42.0.0/16这个网段,结果和Rancher默认CIDR冲突。后来我总结出这套排查方法:
先用ipcalc检查网段重叠:
bash复制ipcalc 10.42.0.0/16 10.43.0.0/16
如果冲突就需要修改cluster-cidr和service-cidr。对于双栈网络,建议这样配置:
bash复制--cluster-cidr 192.168.0.0/16,2001:db8::/56 \
--service-cidr 172.16.0.0/16,2001:db8:1::/112
性能调优参数:
--node-ip:显式指定IP避免自动选择错误--flannel-backend:wireguard性能最好但需要内核模块--kubelet-arg:调整节点资源预留最后提醒:etcd集群初始化时,务必确保节点时间同步。我遇到过因为NTP偏差导致etcd选举失败的案例,后来都强制要求部署chrony服务。