1. 项目概述
最近在帮客户部署一套轻量级的Kubernetes管理环境,考虑到资源限制和运维成本,最终选择了RKE2单节点集群+Rancher+私有镜像仓库的方案。这套组合特别适合中小团队快速搭建自己的容器化平台,既能满足日常开发测试需求,又不会带来过重的运维负担。
RKE2是Rancher官方维护的Kubernetes发行版,相比原生的K8s安装更加简单,内置了容器运行时、网络插件等核心组件。单节点模式虽然牺牲了高可用性,但对于资源有限的环境或者开发测试场景完全够用。配合Rancher提供的可视化界面,可以大大降低Kubernetes的学习和使用门槛。
私有镜像仓库则是企业级容器化部署的刚需,既能加速镜像拉取,又能保证代码安全。本文将详细介绍从零开始搭建整套环境的完整流程,包括常见问题的解决方案和性能优化建议。
2. 环境准备与基础配置
2.1 服务器要求
推荐使用Ubuntu 20.04/22.04 LTS系统,配置建议:
- CPU: 4核以上
- 内存: 8GB以上
- 磁盘: 100GB以上(建议SSD)
- 网络: 稳定的内网连接
注意:虽然RKE2单节点对资源要求不高,但如果要同时运行Rancher和私有仓库,建议不要低于上述配置,否则可能遇到性能问题。
2.2 系统初始化
首先进行必要的系统配置:
# 关闭swap sudo swapoff -a sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab # 设置主机名 sudo hostnamectl set-hostname rke2-server # 配置防火墙(如果使用ufw) sudo ufw allow 22/tcp sudo ufw allow 6443/tcp sudo ufw allow 9345/tcp sudo ufw enable2.3 安装依赖组件
安装Docker作为容器运行时(RKE2也支持containerd,但Docker更通用):
sudo apt-get update sudo apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg-agent \ software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable" sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io3. RKE2单节点集群安装
3.1 安装RKE2 Server
RKE2提供了极简的安装方式:
curl -sfL https://get.rke2.io | sudo sh -启动RKE2服务:
sudo systemctl enable rke2-server.service sudo systemctl start rke2-server.service检查服务状态:
sudo systemctl status rke2-server.service3.2 配置kubectl访问
获取kubeconfig文件:
mkdir -p ~/.kube sudo cp /etc/rancher/rke2/rke2.yaml ~/.kube/config sudo chown $(id -u):$(id -g) ~/.kube/config设置环境变量:
export KUBECONFIG=~/.kube/config export PATH=$PATH:/var/lib/rancher/rke2/bin验证集群状态:
kubectl get nodes kubectl get pods -A3.3 网络插件配置
RKE2默认使用Canal(Flannel+Calico)作为网络插件,如果需要修改:
sudo mkdir -p /etc/rancher/rke2/ sudo tee /etc/rancher/rke2/config.yaml <<EOF cni: "cilium" EOF然后重启RKE2服务:
sudo systemctl restart rke2-server.service4. Rancher安装与配置
4.1 安装Helm
Rancher推荐使用Helm进行安装:
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash4.2 添加Rancher Helm仓库
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable helm repo update4.3 安装Rancher
创建命名空间:
kubectl create namespace cattle-system使用Helm安装Rancher:
helm install rancher rancher-stable/rancher \ --namespace cattle-system \ --set hostname=rancher.yourdomain.com \ --set bootstrapPassword=admin123 \ --set replicas=1提示:单节点环境设置replicas=1即可,如果是生产环境建议至少3个副本
4.4 访问Rancher UI
获取Rancher服务IP:
kubectl get svc -n cattle-system rancher在浏览器访问https://<节点IP>: ,使用初始密码admin123登录。
5. 私有镜像仓库搭建
5.1 安装Harbor
Harbor是企业级的私有镜像仓库解决方案:
helm repo add harbor https://helm.goharbor.io helm repo update创建命名空间:
kubectl create namespace harbor安装Harbor:
helm install harbor harbor/harbor \ --namespace harbor \ --set expose.type=nodePort \ --set expose.tls.enabled=false \ --set persistence.enabled=true \ --set externalURL=http://harbor.yourdomain.com5.2 配置Harbor
获取管理员密码:
kubectl get secret -n harbor harbor-core -o jsonpath="{.data.HARBOR_ADMIN_PASSWORD}" | base64 -d访问Harbor UI(默认NodePort为30002):
http://<节点IP>:300025.3 配置Docker客户端
在需要推送镜像的机器上配置:
sudo tee /etc/docker/daemon.json <<EOF { "insecure-registries" : ["harbor.yourdomain.com"] } EOF sudo systemctl restart docker6. 集成与优化
6.1 将Harbor集成到Rancher
- 登录Rancher UI
- 进入"集群"->"项目"->"资源"->"密文"
- 添加Docker Registry凭证
- 在部署应用时选择私有仓库
6.2 性能优化建议
- 为RKE2配置合适的资源限制:
# /etc/rancher/rke2/config.yaml kubelet-arg: - "max-pods=100" - "kube-reserved=cpu=500m,memory=1Gi" - "system-reserved=cpu=500m,memory=1Gi"- 调整Harbor资源限制:
helm upgrade harbor harbor/harbor \ --namespace harbor \ --set resources.requests.cpu=500m \ --set resources.requests.memory=1Gi- 定期清理无用镜像:
# 在Harbor UI中设置保留策略 # 或使用gc命令 docker exec -it harbor-jobservice /bin/bash registry garbage-collect /etc/registry/config.yml7. 常见问题排查
7.1 RKE2启动失败
检查日志:
journalctl -u rke2-server -f常见原因:
- 端口冲突(6443,9345等)
- 磁盘空间不足
- 内存不足
7.2 Rancher无法访问
检查服务状态:
kubectl get pods -n cattle-system kubectl logs -n cattle-system <rancher-pod-name>常见原因:
- 证书问题(自签名证书需要手动信任)
- 网络策略阻止访问
- 资源不足导致Pod崩溃
7.3 镜像拉取失败
检查项:
- 仓库地址是否正确
- 认证信息是否正确
- 网络是否可达
- 镜像是否存在
kubectl describe pod <pod-name> kubectl logs <pod-name>8. 安全加固建议
- 为Rancher配置有效的TLS证书
- 定期备份RKE2集群状态:
sudo /var/lib/rancher/rke2/bin/kubectl --kubeconfig /etc/rancher/rke2/rke2.yaml get --all-namespaces -o yaml > rke2-backup.yaml- 启用Harbor的漏洞扫描功能
- 限制Rancher和Harbor的访问IP
- 定期更新所有组件到最新版本
这套环境经过实际项目验证,能够稳定支持中小团队的日常开发和测试需求。单节点部署虽然简单,但也要注意定期备份关键数据。如果后续资源充足,可以很方便地扩展为多节点集群。