从零到生产:用Helm在K8s上部署高可用Rancher 2.6.4,踩过这些坑才算真会了
从零到生产:用Helm在K8s上部署高可用Rancher 2.6.4,踩过这些坑才算真会了
当企业决定将Kubernetes集群管理交给Rancher时,生产环境的高可用部署就成了DevOps工程师必须跨越的第一道门槛。与测试环境不同,生产部署需要考虑证书管理、组件健康、安全配置等一系列复杂因素。本文将带你深入Helm部署Rancher 2.6.4的每个关键环节,分享那些只有实战才会遇到的"坑"和解决方案。
1. 环境准备:避开版本兼容性的"雷区"
在开始部署之前,版本兼容性是需要解决的首要问题。Rancher 2.6.4对cert-manager有特定要求,直接使用最新版可能导致不可预知的问题。
cert-manager v1.4.0的正确安装姿势:
# 添加jetstack仓库
helm repo add jetstack https://charts.jetstack.io
helm repo update
# 安装特定版本
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.4.0
安装后验证cert-manager是否正常运行:
kubectl get pods -n cert-manager
常见问题排查表:
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| Pod处于CrashLoopBackOff状态 | 资源配额不足 | 增加节点资源或调整requests/limits |
| Certificate签发失败 | RBAC配置问题 | 检查ClusterIssuer的ServiceAccount权限 |
| Webhook无法访问 | 网络策略限制 | 检查Calico/NetworkPolicy配置 |
提示:生产环境建议提前为cert-manager配置ResourceQuota,避免因资源竞争影响证书签发。
2. Helm部署Rancher:主机名与证书的陷阱
主机名配置是Rancher部署中最容易出错的环节之一,错误的配置会导致后续证书签发失败和访问问题。
关键配置参数解析:
helm install rancher rancher-stable/rancher \
--namespace rancher \
--version 2.6.4 \
--set hostname=rancher.yourdomain.com \
--set bootstrapPassword=$(openssl rand -hex 12) \
--set ingress.tls.source=letsEncrypt \
--set letsEncrypt.email=admin@yourdomain.com
主机名配置的注意事项:
- 必须使用完整域名(FQDN),不能使用IP地址
- 域名需要提前做好DNS解析
- 如果使用自签名证书,需要额外配置caBundle
证书管理对比:
| 证书类型 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| LetsEncrypt | 自动续期,免费 | 需要公网访问 | 有公网入口的环境 |
| 自签名 | 完全内网可用 | 需要手动管理 | 纯内网环境 |
| 商业证书 | 信任度高 | 成本高 | 企业合规要求严格场景 |
3. 高可用验证:看不见的组件健康检查
部署完成并能访问Web UI只是第一步,真正的高可用需要验证核心组件的运行状态。
必须检查的核心组件:
# cattle-system命名空间下的关键Pod
kubectl get pods -n cattle-system -l app=cattle-cluster-agent
# fleet-agent状态检查
kubectl get pods -n cattle-fleet-system
# 监控组件健康
kubectl get pods -n cattle-monitoring-system
高可用测试方法:
- 随机终止一个Rancher Pod,观察自动恢复情况
- 模拟节点故障,测试服务迁移能力
- 进行压测,观察cattle-cluster-agent的负载均衡
性能调优参数参考:
# values.yaml中的资源限制配置
resources:
limits:
cpu: "2"
memory: "4Gi"
requests:
cpu: "1"
memory: "2Gi"
4. 生产级安全加固:超越默认配置
默认安装的Rancher往往不能满足生产安全要求,需要进行额外加固。
关键安全措施:
-
bootstrapPassword安全管理:
- 首次登录后立即修改
- 启用双因素认证(2FA)
- 定期轮换
-
网络隔离策略:
# 示例NetworkPolicy配置 kubectl apply -n rancher -f - <<EOF kind: NetworkPolicy apiVersion: networking.k8s.io/v1 metadata: name: rancher-ingress-isolation spec: podSelector: matchLabels: app: rancher ingress: - from: - namespaceSelector: matchLabels: project: cattle-system policyTypes: - Ingress EOF -
审计日志配置:
# 在values.yaml中启用审计 auditLog: enabled: true level: "2" path: "/var/log/rancher/audit.log"
5. 升级与维护:平滑过渡的艺术
生产环境的升级需要特别谨慎,以下是经过验证的升级流程:
-
备份关键数据:
# 备份Rancher设置 kubectl get settings -n rancher -o yaml > rancher-settings.yaml # 备份用户和权限 kubectl get globalrolebindings -o yaml > globalrolebindings.yaml -
测试环境验证:
# 使用--dry-run验证升级 helm upgrade rancher rancher-stable/rancher \ --namespace rancher \ --version 2.6.5 \ --dry-run -
正式升级窗口期操作:
# 执行实际升级 helm upgrade rancher rancher-stable/rancher \ --namespace rancher \ --version 2.6.5 \ --reuse-values
升级后检查清单:
- 所有Pod状态正常
- 自定义配置未被覆盖
- 监控指标无异常波动
- 用户权限保持不变
6. 监控与告警:构建完整的可观测性体系
仅仅部署成功还不够,需要建立完整的监控体系来保证持续稳定运行。
关键监控指标:
| 指标类别 | 具体指标 | 告警阈值 |
|---|---|---|
| 资源使用 | CPU利用率 | >70%持续5分钟 |
| 组件健康 | cattle-cluster-agent重启次数 | >3次/小时 |
| 证书状态 | 过期时间 | <7天 |
| API性能 | 请求延迟 | P99 >500ms |
配置Prometheus监控示例:
# rancher-monitoring的values.yaml片段
prometheus:
alertmanagerFiles:
alerts.yml:
groups:
- name: rancher-alerts
rules:
- alert: HighCPUUsage
expr: sum(rate(container_cpu_usage_seconds_total{namespace="cattle-system"}[5m])) by (pod) > 0.7
for: 5m
labels:
severity: warning
annotations:
summary: "High CPU usage on Rancher pod {{ $labels.pod }}"
7. 灾难恢复:当最坏情况发生时
即使做了万全准备,也需要为灾难场景做好准备。
恢复流程关键步骤:
-
恢复etcd数据:
# 从备份恢复etcd etcdctl snapshot restore backup.db \ --data-dir /var/lib/etcd-restore \ --initial-cluster-token etcd-cluster-1 -
重建Rancher部署:
# 使用原有配置重新部署 helm install rancher rancher-stable/rancher \ --namespace rancher \ --version 2.6.4 \ -f rancher-values-backup.yaml -
验证数据一致性:
# 检查关键资源 kubectl get clusters -A kubectl get projects -A
备份策略建议:
| 数据类型 | 备份频率 | 保留策略 | 工具 |
|---|---|---|---|
| etcd数据 | 每小时 | 保留7天 | etcdctl |
| Rancher配置 | 每天 | 保留30天 | kubectl |
| 应用数据 | 根据应用要求 | 根据SLA要求 | 应用特定工具 |
更多推荐
所有评论(0)