1. Rancher 与 Kubernetes 的关系解析
Rancher 本质上是一个 Kubernetes 集群管理平台,它并不是 Kubernetes 的替代品,而是构建在 Kubernetes 之上的管理工具。理解两者的关系对于正确使用 Rancher 至关重要。
Kubernetes 作为容器编排的事实标准,提供了强大的容器调度和管理能力,但其原生管理界面(kubectl)对初学者不够友好,且在多集群管理方面存在不足。Rancher 通过以下方式增强了 Kubernetes:
- 统一管理界面:提供直观的 Web UI,降低使用门槛
- 多集群管理:支持同时管理多个 Kubernetes 集群(包括不同云厂商的集群)
- 应用商店:内置 Helm Chart 应用商店,简化应用部署
- 监控告警:集成 Prometheus 等监控工具
- 安全管控:提供 RBAC、审计日志等企业级安全功能
重要提示:Rancher 2.x 版本完全基于 Kubernetes API 构建,这意味着所有通过 Rancher 执行的操作最终都会转换为 Kubernetes API 调用。
2. 环境准备与安装规划
2.1 硬件与网络要求
在开始安装前,需要确保满足以下基础要求:
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| Rancher Server | 2核CPU, 4GB内存 | 4核CPU, 8GB内存 |
| Kubernetes 节点 | 2核CPU, 4GB内存 | 4核CPU, 8GB内存 |
| 存储 | 20GB 可用空间 | 50GB 可用空间 |
| 网络 | 1Gbps 网络带宽 | 10Gbps 网络带宽 |
网络特别注意事项:
- 所有节点间需要双向网络连通
- 确保防火墙允许以下端口:
- 443 (Rancher Web UI)
- 6443 (Kubernetes API)
- 2379-2380 (etcd)
- 10250-10252 (kubelet, controller-manager, scheduler)
2.2 系统初始化配置
在所有节点上执行以下初始化操作:
bash复制# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭 SELinux
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 关闭 swap
swapoff -a
sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
# 加载内核模块
cat > /etc/modules-load.d/k8s.conf <<EOF
br_netfilter
ip_vs
ip_vs_rr
ip_vs_wrr
ip_vs_sh
nf_conntrack
EOF
modprobe br_netfilter
modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr
modprobe ip_vs_sh
modprobe nf_conntrack
# 设置内核参数
cat > /etc/sysctl.d/k8s.conf <<EOF
net.bridge.bridge-nf-call-ip6tables=1
net.bridge.bridge-nf-call-iptables=1
net.ipv4.ip_forward=1
vm.swappiness=0
EOF
sysctl --system
3. Rancher 安装详解
3.1 Docker 安装与配置
Rancher 需要 Docker 作为运行时环境,建议使用 Docker CE 20.10.x 版本:
bash复制# 安装依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
# 添加 Docker 仓库
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装指定版本 Docker
yum install -y docker-ce-20.10.18 docker-ce-cli-20.10.18 containerd.io
# 配置 Docker
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
},
"registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"],
"storage-driver": "overlay2"
}
EOF
# 启动 Docker
systemctl daemon-reload
systemctl enable docker --now
关键配置说明:
cgroupdriver必须设置为systemd以与 Kubernetes 保持一致- 建议配置国内镜像仓库加速器
overlay2是目前最稳定的存储驱动
3.2 Rancher Server 部署
使用单容器方式部署 Rancher Server:
bash复制docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
--privileged \
--name rancher \
rancher/rancher:v2.5.7
参数解析:
--restart=unless-stopped:确保容器自动重启--privileged:赋予容器特权模式,这是 Rancher 必须的rancher/rancher:v2.5.7:指定 Rancher 版本
生产环境建议使用外部数据库(MySQL/PostgreSQL)和高可用部署模式,单容器部署仅适用于测试环境。
4. Rancher 初始化配置
4.1 首次登录设置
- 访问
https://<your-server-ip>(首次访问会提示不安全,需要手动确认) - 设置管理员密码(至少12个字符)
- 配置服务器 URL(建议使用真实域名而非IP)
- 选择语言(支持中文)
4.2 导入现有 Kubernetes 集群
- 在 Rancher UI 中选择"添加集群" → "导入"
- 输入集群名称(如
prod-cluster) - 复制生成的注册命令(选择第三条"跳过证书验证"的命令)
- 在 Kubernetes 主节点上执行该命令
常见问题处理:
- 如果执行命令后集群状态长时间不更新,检查:
- 节点间网络连通性
- 防火墙设置
- 节点时间同步(NTP)
- 可以查看 Rancher agent 日志定位问题:
bash复制
docker logs -f rancher-agent
5. 集群监控部署
Rancher 内置了基于 Prometheus 的监控系统:
- 在集群详情页点击"启用监控"
- 选择监控组件版本(建议最新稳定版)
- 配置资源分配(生产环境建议至少2核CPU+4GB内存)
- 点击"启用"
监控组件说明:
- Prometheus:指标收集与存储
- Grafana:监控数据可视化
- Alertmanager:告警管理
- Node Exporter:节点指标采集
- Kube State Metrics:Kubernetes 资源指标
监控启动需要5-10分钟,期间可以查看
cattle-monitoring-system命名空间下的 Pod 状态。
6. 应用部署实战
6.1 创建命名空间
- 进入集群仪表盘
- 导航到"命名空间" → "创建"
- 输入名称(如
production) - 可选:配置资源配额和限制
6.2 部署 Nginx 应用
通过 Deployment 部署 Nginx:
- 导航到"工作负载" → "Deployments" → "创建"
- 配置基本信息:
- 命名空间:选择刚创建的命名空间
- 名称:
nginx-production - 副本数:3
- 容器配置:
- 镜像:
nginx:1.20 - 端口:80/TCP
- 镜像:
- 标签:
app: nginxenv: production
- 点击"创建"
6.3 创建 Service 暴露应用
- 导航到"服务发现" → "Services" → "创建"
- 选择"NodePort"类型
- 配置:
- 命名空间:选择相同命名空间
- 名称:
nginx-service - 端口映射:80 → 80 → 30080
- 选择器:
app: nginx
- 点击"创建"
访问验证:
- 通过任意节点IP的30080端口访问Nginx
- 或者通过 Ingress 配置域名访问
7. 高级功能与最佳实践
7.1 多集群管理技巧
- 统一身份认证:
- 集成 LDAP/AD 实现统一账号体系
- 配置全局权限策略
- 集群模板:
- 创建标准化集群配置模板
- 实现新集群快速部署
- 应用跨集群部署:
- 使用 Rancher 的多集群应用功能
- 实现应用一键部署到多个集群
7.2 安全加固建议
- RBAC 配置:
- 遵循最小权限原则
- 创建自定义角色
- 审计日志:
- 启用 Kubernetes 审计日志
- 定期审查关键操作
- 网络策略:
- 配置 NetworkPolicy 限制 Pod 间通信
- 隔离敏感工作负载
7.3 备份与恢复
Rancher Server 备份:
bash复制# 创建数据卷备份
docker stop rancher
docker create --volumes-from rancher --name rancher-data rancher/rancher:v2.5.7
docker run --volumes-from rancher-data -v $PWD:/backup alpine tar zcvf /backup/rancher-data-backup.tar.gz /var/lib/rancher
# 恢复备份
docker run --volumes-from rancher-data -v $PWD:/backup alpine sh -c "rm -rf /var/lib/rancher/* && tar zxvf /backup/rancher-data-backup.tar.gz"
docker start rancher
Kubernetes 集群备份:
- 使用 Velero 进行集群状态备份
- 定期备份 etcd 数据
8. 故障排查指南
8.1 常见问题与解决
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| Rancher UI 无法访问 | 容器未正常运行 | docker ps 检查容器状态 |
| 集群状态显示"不可用" | 网络连接问题 | 检查节点间网络连通性 |
| Pod 一直处于Pending状态 | 资源不足 | 检查节点资源使用情况 |
| 监控数据不显示 | Prometheus 未正常运行 | 检查 cattle-monitoring-system 命名空间下的 Pod |
8.2 日志收集与分析
查看 Rancher Server 日志:
bash复制docker logs -f rancher
查看 Agent 日志:
bash复制kubectl logs -n cattle-system rancher-agent-xxxxx
集群组件日志:
bash复制# kube-apiserver
journalctl -u kube-apiserver -f
# kubelet
journalctl -u kubelet -f
9. 性能优化建议
- Rancher Server 优化:
- 为 Rancher 容器分配更多资源
- 使用外部数据库替代默认的 SQLite
- Kubernetes 集群优化:
- 调整 kubelet 的
--max-pods参数 - 配置合理的 Pod 资源请求和限制
- 调整 kubelet 的
- 监控系统优化:
- 调整 Prometheus 数据保留时间
- 配置指标抓取间隔
10. 版本升级策略
- Rancher 升级:
- 先备份数据
- 按照官方文档逐步升级
- Kubernetes 集群升级:
- 通过 Rancher UI 执行滚动升级
- 先升级控制平面,再升级工作节点
- 应用兼容性测试:
- 在测试环境验证新版本兼容性
- 制定回滚方案
升级前务必阅读官方发布说明,了解破坏性变更和已知问题。