Rancher安装与配置
大约 5 分钟容器化技术Rancher安装配置
Rancher安装与配置
Rancher安装方式
Rancher提供了多种安装方式,以适应不同的使用场景和需求。
1. Docker安装(快速入门)
适用于测试环境或快速体验Rancher功能。
2. Helm Chart安装(生产推荐)
适用于生产环境,支持高可用部署。
3. RKE安装
使用Rancher Kubernetes Engine安装Rancher。
4. K3s安装
轻量级Kubernetes发行版安装方式。
环境准备
硬件要求
组件 | 最低配置 | 推荐配置 |
---|---|---|
CPU | 2核 | 4核 |
内存 | 8GB | 16GB |
磁盘 | 20GB | 50GB |
软件要求
- Docker 19.03+
- Helm 3.0+
- Kubernetes 1.18+(用于Helm安装)
- 支持的Linux发行版(CentOS/RHEL/Ubuntu/SLES)
网络要求
- 端口80/443开放
- 节点间网络互通
- DNS解析正常
Docker安装方式
1. 快速安装
# 安装Rancher Server
docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
--privileged \
rancher/rancher:latest
2. 持久化安装
# 创建数据目录
mkdir -p /opt/rancher-data
# 安装Rancher Server并挂载数据卷
docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
-v /opt/rancher-data:/var/lib/rancher \
--privileged \
rancher/rancher:latest
3. 配置SSL证书
# 使用自定义证书
docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
-v /opt/rancher-data:/var/lib/rancher \
-v /etc/ssl/certs:/etc/ssl/certs \
-v /etc/ssl/private:/etc/ssl/private \
--privileged \
rancher/rancher:latest
Helm安装方式(推荐)
1. 添加Rancher Helm仓库
# 添加Rancher Helm仓库
helm repo add rancher-stable https://rancher.com/charts
# 更新Helm仓库
helm repo update
2. 创建命名空间
# 创建Rancher命名空间
kubectl create namespace cattle-system
3. 安装Cert-Manager
# 添加Jetstack Helm仓库
helm repo add jetstack https://charts.jetstack.io
# 更新Helm仓库
helm repo update
# 安装Cert-Manager
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.11.0/cert-manager.crds.yaml
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.11.0
4. 安装Rancher
使用Let's Encrypt证书
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.example.com \
--set replicas=3 \
--set ingress.tls.source=letsEncrypt \
--set letsEncrypt.email=admin@example.com
使用自定义证书
# 创建TLS密钥
kubectl -n cattle-system create secret tls tls-rancher-ingress \
--cert=/etc/ssl/certs/tls.crt \
--key=/etc/ssl/private/tls.key
# 安装Rancher
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.example.com \
--set replicas=3 \
--set ingress.tls.source=secret
使用Rancher生成的证书
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.example.com \
--set replicas=3 \
--set ingress.tls.source=rancher
5. 验证安装
# 查看Pod状态
kubectl -n cattle-system get pods
# 查看服务状态
kubectl -n cattle-system get svc
# 查看Ingress状态
kubectl -n cattle-system get ingress
高可用部署
1. 架构设计
高可用部署需要至少3个节点的Kubernetes集群。
# 高可用架构
负载均衡器:
- Nginx/Haproxy (端口80/443)
Kubernetes控制平面:
- node1 (etcd, controlplane)
- node2 (etcd, controlplane)
- node3 (etcd, controlplane)
Rancher Server:
- rancher-server-1
- rancher-server-2
- rancher-server-3
2. 数据库配置
使用外部数据库
# 外部数据库配置
database:
type: mysql
host: mysql.example.com
port: 3306
user: rancher
password: rancher_password
database: rancher
数据库初始化
# 创建数据库
CREATE DATABASE rancher;
# 创建用户
CREATE USER 'rancher'@'%' IDENTIFIED BY 'rancher_password';
# 授权
GRANT ALL PRIVILEGES ON rancher.* TO 'rancher'@'%';
# 刷新权限
FLUSH PRIVILEGES;
3. 负载均衡配置
# Nginx配置示例
upstream rancher {
server rancher-server-1:443 max_fails=3 fail_timeout=5s;
server rancher-server-2:443 max_fails=3 fail_timeout=5s;
server rancher-server-3:443 max_fails=3 fail_timeout=5s;
}
server {
listen 443 ssl http2;
server_name rancher.example.com;
ssl_certificate /etc/ssl/certs/rancher.crt;
ssl_certificate_key /etc/ssl/private/rancher.key;
location / {
proxy_pass https://rancher;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
Rancher配置详解
1. 基础配置
# 基础配置参数
hostname: rancher.example.com # Rancher访问域名
replicas: 3 # Rancher Server副本数
bootstrapPassword: "admin12345" # 初始管理员密码
2. 网络配置
# 网络配置
ingress:
enabled: true
tls:
source: letsEncrypt # 证书来源
extraAnnotations:
nginx.ingress.kubernetes.io/proxy-connect-timeout: "30"
nginx.ingress.kubernetes.io/proxy-send-timeout: "1800"
nginx.ingress.kubernetes.io/proxy-read-timeout: "1800"
3. 资源配置
# 资源限制
resources:
limits:
cpu: 1000m
memory: 2Gi
requests:
cpu: 500m
memory: 1Gi
4. 安全配置
# 安全配置
auditLog:
level: 1 # 审计日志级别
destination: sidecar # 日志输出方式
securityContext:
privileged: false # 是否启用特权模式
Rancher初始化配置
1. 首次访问
- 浏览器访问 https://rancher.example.com
- 设置初始管理员密码
- 确认Rancher Server URL
- 进入Rancher主界面
2. 基本设置
# 通过API设置服务器URL
curl -u "${CATTLE_ACCESS_KEY}:${CATTLE_SECRET_KEY}" \
-X POST \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"name": "server-url",
"value": "https://rancher.example.com"
}' \
'https://rancher.example.com/v3/settings/server-url'
3. 认证配置
# 配置GitHub认证
curl -u "${CATTLE_ACCESS_KEY}:${CATTLE_SECRET_KEY}" \
-X POST \
-H 'Accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"type": "githubConfig",
"enabled": true,
"clientId": "your_github_client_id",
"clientSecret": "your_github_client_secret"
}' \
'https://rancher.example.com/v3/githubConfigs/github'
Rancher升级
1. Docker方式升级
# 停止旧版本
docker stop rancher-server
# 备份数据
docker run --volumes-from rancher-server \
-v $PWD:/backup alpine tar zcvf /backup/rancher-data-backup-$(date +"%Y-%m-%d").tar.gz /var/lib/rancher
# 拉取新版本镜像
docker pull rancher/rancher:latest
# 启动新版本
docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
-v /opt/rancher-data:/var/lib/rancher \
--privileged \
rancher/rancher:latest
2. Helm方式升级
# 更新Helm仓库
helm repo update
# 升级Rancher
helm upgrade rancher rancher-stable/rancher \
--namespace cattle-system \
--set hostname=rancher.example.com \
--set replicas=3
# 验证升级
kubectl -n cattle-system rollout status deploy/rancher
常用管理命令
1. 状态检查
# 查看Rancher Pod状态
kubectl -n cattle-system get pods
# 查看Rancher服务状态
kubectl -n cattle-system get svc
# 查看Rancher日志
kubectl -n cattle-system logs -l app=rancher --tail=100
2. 备份恢复
# 备份Rancher数据
kubectl -n cattle-system get secret tls-rancher-ingress -o yaml > tls-rancher-ingress.yaml
# 备份etcd数据(如果使用内部数据库)
kubectl exec etcd-node1 -- etcdctl snapshot save /tmp/etcd-snapshot.db
# 恢复数据
kubectl -n cattle-system apply -f tls-rancher-ingress.yaml
3. 故障排查
# 检查节点状态
kubectl get nodes
# 检查组件状态
kubectl get pods -A
# 查看事件
kubectl get events -A
常见问题及解决方案
1. 证书问题
# 检查证书有效期
openssl x509 -in /etc/ssl/certs/rancher.crt -text -noout
# 重新生成证书
kubectl -n cattle-system delete secret tls-rancher-ingress
kubectl -n cattle-system create secret tls tls-rancher-ingress \
--cert=/etc/ssl/certs/new.crt \
--key=/etc/ssl/private/new.key
2. 数据库连接问题
# 检查数据库连接
kubectl -n cattle-system exec rancher-0 -- nc -zv mysql.example.com 3306
# 查看数据库配置
kubectl -n cattle-system get secret cattle-credentials -o yaml
3. 资源不足
# 检查资源使用情况
kubectl top nodes
kubectl top pods -n cattle-system
# 调整资源限制
helm upgrade rancher rancher-stable/rancher \
--namespace cattle-system \
--set resources.limits.cpu=2000m \
--set resources.limits.memory=4Gi
总结
Rancher的安装和配置相对灵活,可以根据实际环境选择合适的安装方式。在生产环境中,建议使用Helm方式进行高可用部署,并配置外部数据库和负载均衡器。通过合理的配置和管理,Rancher可以为企业提供稳定、安全的Kubernetes集群管理服务。