在 Minikube 上部署 Rancher:避坑指南与实战教程
前言
在本地环境(如 Minikube)部署 Rancher 时,最常见的两个问题是资源分配不足和证书签发卡死。本文将记录如何通过宿主机 IP(192.168.31.133)和固定 NodePort(30081)成功搭建 Rancher。
一、 环境准备
- 宿主机 IP:
192.168.31.133 - 目标访问端口:
30081
1. 启动 Minikube (关键参数)
在 Docker 驱动下,Minikube 运行在容器内。为了让宿主机能直接访问 NodePort,必须在启动时通过 --ports 参数建立隧道映射。
1 | # 建议先清理旧环境 |
2. 安装 Helm
1 | curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash |
二、 部署 cert-manager (证书基础)
Rancher 依赖 cert-manager 来处理 SSL 证书。请确保组件完全运行后再进行下一步。
1 | helm repo add jetstack https://charts.jetstack.io |
三、 安装 Rancher 与 sslip.io 的秘密
1. 执行安装命令
1 | helm repo add rancher-stable https://releases.rancher.com/server-charts/stable |
2. 深度解析:为什么用 sslip.io?
在命令中我们设置了 hostname=rancher.192.168.31.133.sslip.io。
- 为什么填它? Rancher 强制要求一个域名来生成证书和配置内部路由。
sslip.io是一个免费服务,它会自动将192.168.31.133.sslip.io解析到你的宿主机 IP。 - 为什么实际没用到? 虽然证书是发给这个域名的,但我们通过
NodePort直接访问 IP 也能打开页面。不过,强烈建议保留此设置,因为后续 Rancher 纳管其他集群时,会使用这个域名生成注册 URL。
四、 性能优化与网络微调 (避坑核心)
1. 缩减副本数:解决启动卡死
Rancher 默认启动 3 个副本,在单机 Minikube 上会造成严重的资源竞争,导致 Pod 长期处于 0/1 Ready。初始化时请务必缩减为 1 个:
1 | kubectl scale deploy rancher -n cattle-system --replicas=1 |
2. 固定 NodePort 端口
默认端口是随机的,我们需要手动将其固定为映射好的 30081:
1 | kubectl patch svc rancher -n cattle-system -p '{"spec":{"ports":[{"port":443,"targetPort":443,"nodePort":30081,"name":"https-internal"}]}}' |
五、 状态排查
运行 kubectl get certificate -n cattle-system。
如果 READY 为 True,说明证书签发成功。此时只需静候 2 分钟,Pod 就会变为 1/1 Ready。
附录:Rancher 健康检查脚本
为了方便大家快速定位部署问题,可以保存以下脚本 check_rancher.sh:
1 |
|
使用方法:chmod +x check_rancher.sh && ./check_rancher.sh
博主结语:
在 Minikube 上跑 Rancher 是一件很酷的事,但一定要给够内存并手动控制副本数。希望这篇教程能让你少走弯路!
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Damingerdai's Blog!
