从零到一:Rancher单机与高可用部署实战指南
1. Rancher入门:为什么你需要这个Kubernetes管理神器
第一次接触Rancher时,我完全被它强大的功能震撼到了。想象一下,你手里有一堆Kubernetes集群需要管理,就像同时照看多个调皮的孩子,每个都有自己的脾气和需求。Rancher就像是个超级保姆,不仅能帮你统一管理这些"熊孩子",还能让你通过一个简洁的Web界面完成所有操作。
Rancher最吸引我的地方在于它的全生命周期管理能力。从集群部署、监控告警到应用商店和RBAC权限控制,几乎所有Kubernetes相关的操作都能在这里完成。特别是在混合云环境下,你可能同时拥有本地数据中心和多个云服务商的集群,Rancher能把这些分散的资源统一管理起来,就像给你的所有集群装了个中央控制台。
对于初学者来说,Rancher最大的价值在于它大幅降低了Kubernetes的学习曲线。还记得我第一次手动部署Kubernetes集群时,光是etcd配置就折腾了大半天。而用Rancher,点点鼠标就能完成集群部署,还能自动处理证书管理、负载均衡这些繁琐的工作。它甚至提供了应用商店功能,像安装手机APP一样简单就能部署复杂的应用栈。
2. 环境准备:打造完美的Rancher运行环境
2.1 硬件需求与系统配置
在开始部署前,我们需要确保环境准备充分。根据我的踩坑经验,很多问题都源于基础环境配置不当。对于单机测试环境,建议至少准备:
- 4核CPU(实测2核也能跑,但会很卡)
- 8GB内存(Rancher本身占用约2GB,还要为工作负载预留空间)
- 50GB磁盘空间(日志和镜像会占用不少空间)
如果是生产环境,特别是高可用部署,配置要翻倍:
- 3台节点,每台8核CPU
- 32GB内存
- 100GB SSD存储
操作系统方面,我强烈推荐使用Ubuntu 20.04 LTS或CentOS 7/8。这两个系统对Docker和Kubernetes的支持最好,社区资源也最丰富。记得先执行系统更新:
# Ubuntu sudo apt update && sudo apt upgrade -y # CentOS sudo yum update -y2.2 依赖组件安装
Rancher运行需要几个关键组件,就像盖房子需要先打地基:
- Docker:Rancher单机版运行在Docker容器中
- kubectl:管理Kubernetes集群的瑞士军刀
- Helm:Kubernetes的包管理工具(高可用部署需要)
安装Docker的推荐方式是使用官方脚本:
curl -fsSL https://get.docker.com | sh sudo systemctl enable --now docker验证Docker是否安装成功:
docker run hello-worldkubectl和Helm的安装也很简单:
# 安装kubectl curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl # 安装Helm curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash提示:生产环境建议固定这些工具的版本,避免自动升级带来的兼容性问题。
3. 单机部署:5分钟快速体验Rancher
3.1 Docker方式部署详解
单机部署是体验Rancher最快的方式,特别适合个人学习和开发测试。整个过程就像启动一个普通的Docker容器一样简单,但有几个关键参数需要注意。
让我们分解这个看似复杂的docker run命令:
docker run -d \ --name my-rancher \ --restart=unless-stopped \ -p 8080:80 -p 8443:443 \ --privileged \ rancher/rancher:latest这个命令做了以下几件事:
-d:后台运行容器--name:给容器起个有意义的名字--restart:设置自动重启策略-p:端口映射(主机端口:容器端口)--privileged:给容器特权模式(Rancher需要这个权限来管理主机)
启动后,查看日志获取初始密码:
docker logs my-rancher 2>&1 | grep "Bootstrap Password:"3.2 初始配置与集群导入
拿到密码后,用浏览器访问https://localhost:8443(注意是HTTPS),你会看到Rancher的初始化界面。首次登录需要:
- 设置新密码(至少12个字符)
- 配置服务器URL(单机测试可以先用默认的)
- 创建第一个集群
导入现有Kubernetes集群的流程特别实用:
- 在Rancher UI点击"添加集群"
- 选择"导入现有集群"
- 复制生成的kubectl命令
- 在目标集群的master节点上执行该命令
我常用的一个技巧是,如果集群无法连接外网,可以先把命令保存为YAML文件,再手动应用到集群:
kubectl apply -f rancher-import.yaml4. 高可用部署:生产级Rancher集群搭建
4.1 Helm部署前置准备
高可用部署适合生产环境,能确保Rancher服务不会因为单点故障而中断。这个过程比单机部署复杂,但收益非常明显。
首先需要安装cert-manager来处理TLS证书:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.7.1/cert-manager.crds.yaml helm repo add jetstack https://charts.jetstack.io helm install cert-manager jetstack/cert-manager \ --namespace cert-manager \ --create-namespace \ --version v1.7.1验证cert-manager是否正常运行:
kubectl get pods -n cert-manager4.2 Rancher Helm Chart部署
有了cert-manager,我们就可以部署Rancher了。这里有几个关键配置项:
helm repo add rancher-latest https://releases.rancher.com/server-charts/latest helm install rancher rancher-latest/rancher \ --namespace rancher \ --create-namespace \ --set hostname=rancher.yourdomain.com \ --set bootstrapPassword=admin \ --set replicas=3 \ --set ingress.tls.source=letsEncrypt \ --set letsEncrypt.email=your@email.com这个配置做了以下设置:
- 指定了访问域名(必须提前解析到集群)
- 设置初始管理员密码
- 指定3个副本实现高可用
- 使用Let's Encrypt自动签发证书
部署完成后,检查Rancher Pod状态:
kubectl get pods -n rancher正常情况下应该看到3个rancher Pod都处于Running状态。
5. 关键配置与优化技巧
5.1 资源分配与性能调优
无论是单机还是高可用部署,资源分配都直接影响Rancher的性能表现。根据我的经验,以下配置能获得最佳性价比:
单机部署优化:
docker update \ --cpus=4 \ --memory=8g \ --memory-swap=8g \ my-rancher高可用部署资源请求/限制:
# values.yaml resources: requests: cpu: "1" memory: "2Gi" limits: cpu: "2" memory: "4Gi"监控资源使用情况也很重要:
# 单机版 docker stats my-rancher # 高可用版 kubectl top pods -n rancher5.2 备份与灾难恢复
生产环境必须配置备份策略。Rancher的数据主要存储在Kubernetes的etcd中,备份方案有两种:
- 单机版备份:
docker stop my-rancher docker create --volumes-from my-rancher --name rancher-data busybox docker run --volumes-from rancher-data -v $PWD:/backup busybox tar cvf /backup/rancher-data.tar /var/lib/rancher- 高可用版备份: 使用etcdctl工具备份etcd数据:
ETCDCTL_API=3 etcdctl \ --endpoints=https://127.0.0.1:2379 \ --cacert=/etc/kubernetes/pki/etcd/ca.crt \ --cert=/etc/kubernetes/pki/etcd/server.crt \ --key=/etc/kubernetes/pki/etcd/server.key \ snapshot save snapshot.db恢复时只需反向操作即可。我建议至少每周执行一次完整备份,重要变更前也要手动备份。
6. 常见问题排查与解决方案
6.1 单机部署常见问题
问题1:容器启动后立即退出查看日志通常能发现原因:
docker logs my-rancher常见原因包括端口冲突、内存不足等。我遇到过因为SELinux导致的权限问题,解决方法:
sudo setenforce 0问题2:Web界面无法访问检查端口映射是否正确:
docker port my-rancher确保防火墙放行了相关端口:
sudo ufw allow 8443/tcp6.2 高可用部署常见问题
问题1:cert-manager证书签发失败检查cert-manager日志:
kubectl logs -n cert-manager -l app=cert-manager常见原因是DNS解析问题或Let's Encrypt速率限制。
问题2:Rancher Pod不断重启描述Pod状态:
kubectl describe pod -n rancher rancher-xxx我遇到过的典型情况是内存不足导致OOMKilled,解决方法增加内存限制。
7. 单机与高可用部署的选型建议
经过多次实践,我总结出以下选型原则:
选择单机部署当:
- 只是个人学习或开发测试
- 资源有限(笔记本或低配云主机)
- 需要快速验证想法
- 可以接受短暂的服务中断
选择高可用部署当:
- 生产环境使用
- 需要99.9%以上的可用性
- 团队多人协作使用
- 需要长期稳定运行
性能方面,在我的测试中,单机版能轻松支持10个以下的小型集群管理。而高可用版配合适当的资源分配,可以管理上百个集群。成本方面,高可用部署至少需要3个节点,硬件和运维成本明显更高。
实际项目中,我通常会先在单机版上验证功能,然后再迁移到高可用环境。迁移过程其实很简单:
- 在单机版上备份所有集群配置
- 部署高可用Rancher
- 在新环境恢复配置
- 重新导入集群(集群本身无需重建)
最后分享一个实用技巧:无论哪种部署方式,都建议配置日志轮转,避免日志占满磁盘:
# 单机版 docker run ... --log-opt max-size=50m --log-opt max-file=3 ... # 高可用版 helm upgrade rancher ... --set extraEnv[0].name=LOG_LEVEL --set extraEnv[0].value=info ...