RKE2+Rancher单节点集群与Harbor私有仓库部署指南 📅 2026/8/17 11:04:01 1. 项目概述最近在帮一家中小型电商企业搭建容器化平台时选择了RKE2Rancher的技术栈。这个组合在轻量级Kubernetes发行版中表现突出特别适合资源有限但需要完整容器编排能力的场景。本文将分享单节点集群的完整部署过程以及如何集成私有镜像仓库的实战经验。RKE2是Rancher实验室推出的新一代Kubernetes发行版相比传统RKE它采用了containerd替代Docker作为默认运行时并通过k3s的轻量化设计理念使安装包体积减少了60%。我们选择单节点部署方案主要考虑到测试环境和中小规模生产场景的需求——这种配置既保留了完整Kubernetes功能又避免了多节点集群的维护复杂度。私有镜像仓库的搭建则是企业级容器平台的关键组件。我们将使用Harbor作为解决方案它提供了镜像漏洞扫描、访问控制等企业级功能。实测表明在单节点配置下这套方案能在2核4G的云服务器上稳定运行10个微服务。2. 环境准备与基础配置2.1 硬件与系统要求对于单节点部署建议的最低配置为2核CPU推荐4核4GB内存推荐8GB50GB磁盘空间Ubuntu 20.04/22.04或CentOS 7/8重要提示生产环境务必禁用swap执行sudo swapoff -a并注释掉/etc/fstab中的swap行。Kubernetes对swap的支持在1.22版本后已被弃用。2.2 系统基础配置首先进行必要的系统优化# 设置主机名并加入hosts sudo hostnamectl set-hostname rke2-server echo 127.0.0.1 rke2-server | sudo tee -a /etc/hosts # 关闭防火墙或放行端口 sudo ufw disable # Ubuntu # 或 sudo systemctl stop firewalld # CentOS # 设置内核参数 cat EOF | sudo tee /etc/sysctl.d/k8s.conf net.bridge.bridge-nf-call-ip6tables 1 net.bridge.bridge-nf-call-iptables 1 net.ipv4.ip_forward 1 EOF sudo sysctl --system3. RKE2单节点集群部署3.1 安装RKE2 Server使用官方安装脚本是最快捷的方式curl -sfL https://get.rke2.io | sudo INSTALL_RKE2_CHANNELv1.24 sh -这里我们选择v1.24版本这是当前2023年的长期支持版本。安装完成后需要配置sudo mkdir -p /etc/rancher/rke2/ cat EOF | sudo tee /etc/rancher/rke2/config.yaml write-kubeconfig-mode: 0644 tls-san: - rke2-server - 您的服务器IP node-ip: 您的服务器IP EOF关键参数说明write-kubeconfig-mode控制kubeconfig文件的权限tls-san为API Server证书添加额外SANSubject Alternative Namenode-ip显式指定节点IP避免使用127.0.0.1启动服务并设置开机自启sudo systemctl enable rke2-server.service sudo systemctl start rke2-server.service3.2 验证集群状态等待约2分钟后检查服务状态sudo systemctl status rke2-server journalctl -u rke2-server -f # 查看实时日志获取kubeconfig文件mkdir -p ~/.kube sudo cp /etc/rancher/rke2/rke2.yaml ~/.kube/config sudo chown $USER ~/.kube/config export KUBECONFIG~/.kube/config验证节点状态kubectl get nodes # 应看到类似输出 # NAME STATUS ROLES AGE VERSION # rke2-server Ready control-plane,etcd,master 5m v1.24.4rke2r14. Rancher管理平台安装4.1 通过Helm安装Rancher首先安装helm若未安装curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash添加Rancher的helm仓库helm repo add rancher-stable https://releases.rancher.com/server-charts/stable创建命名空间并安装Rancherkubectl create namespace cattle-system helm install rancher rancher-stable/rancher \ --namespace cattle-system \ --set hostnamerancher.yourdomain.com \ --set bootstrapPasswordadmin \ --set replicas1 \ --set ingress.tls.sourcerancher关键参数说明hostname必须配置为可解析的域名生产环境建议真实域名bootstrapPassword初始管理员密码replicas单节点设为1即可ingress.tls.source使用Rancher自签名证书4.2 访问Rancher控制台安装完成后获取Ingress地址kubectl -n cattle-system get ingress在本地hosts文件中添加解析您的服务器IP rancher.yourdomain.com浏览器访问https://rancher.yourdomain.com使用用户名admin和设置的密码登录。5. Harbor私有镜像仓库部署5.1 准备存储Harbor需要持久化存储我们使用本地路径sudo mkdir -p /data/harbor sudo chmod 777 /data/harbor5.2 Helm安装Harbor添加Harbor仓库helm repo add harbor https://helm.goharbor.io安装Harbor基础配置helm install harbor harbor/harbor \ --namespace harbor-system \ --create-namespace \ --set persistence.enabledtrue \ --set persistence.resourcePolicykeep \ --set persistence.persistentVolumeClaim.registry.storageClass \ --set persistence.persistentVolumeClaim.registry.size20Gi \ --set expose.typeingress \ --set expose.ingress.hosts.coreharbor.yourdomain.com \ --set expose.ingress.annotations.nginx\.ingress\.kubernetes\.io/proxy-body-size1024m \ --set externalURLhttps://harbor.yourdomain.com \ --set harborAdminPasswordHarbor123455.3 配置Docker客户端在需要推送镜像的机器上配置sudo mkdir -p /etc/docker/certs.d/harbor.yourdomain.com # 获取CA证书 kubectl get secret -n harbor-system harbor-ingress -o jsonpath{.data.ca\.crt} | base64 --decode | sudo tee /etc/docker/certs.d/harbor.yourdomain.com/ca.crt重启Docker服务sudo systemctl restart docker测试登录docker login harbor.yourdomain.com # 用户名admin # 密码Harbor123456. 集成与优化配置6.1 将Harbor添加到Rancher在Rancher控制台导航到集群仪表盘选择资源 - Secrets创建名为harbor-creds的Docker Registry类型Secret填写Harbor地址、用户名和密码6.2 配置RKE2使用私有仓库编辑RKE2配置文件sudo vi /etc/rancher/rke2/config.yaml添加以下内容mirrors: harbor.yourdomain.com: endpoint: - https://harbor.yourdomain.com configs: harbor.yourdomain.com: auth: username: admin password: Harbor12345 tls: insecure_skip_verify: true # 仅测试环境使用重启RKE2服务sudo systemctl restart rke2-server7. 常见问题与解决方案7.1 RKE2启动失败排查典型错误1端口冲突sudo netstat -tulnp | grep 6443 # 如果被占用修改config.yaml # kubernetes-api-port: 6444典型错误2证书问题journalctl -u rke2-server | grep cert # 常见解决方法 sudo rm -rf /var/lib/rancher/rke2/server/tls/ sudo systemctl restart rke2-server7.2 Rancher无法访问检查Ingress控制器kubectl -n cattle-system get pods -l apprancher kubectl -n cattle-system logs -l apprancher常见原因域名解析不正确证书问题可临时使用--set ingress.tls.sourceletsEncrypt测试7.3 Harbor镜像拉取失败检查节点上的containerd配置sudo cat /var/lib/rancher/rke2/agent/etc/containerd/config.toml确保包含类似配置[plugins.io.containerd.grpc.v1.cri.registry.mirrors.harbor.yourdomain.com] endpoint [https://harbor.yourdomain.com]8. 性能优化建议8.1 资源分配调整对于单节点集群建议限制系统组件资源cat EOF | kubectl apply -f - apiVersion: v1 kind: Namespace metadata: name: cattle-system --- apiVersion: apps/v1 kind: Deployment metadata: name: rancher namespace: cattle-system spec: template: spec: containers: - name: rancher resources: limits: cpu: 1 memory: 1Gi requests: cpu: 500m memory: 512Mi EOF8.2 存储优化对于生产环境建议使用外部存储如NFS、Ceph替代本地存储为Harbor配置单独的高性能磁盘启用Harbor的垃圾回收定期任务kubectl -n harbor-system create cronjob harbor-gc --image goharbor/harbor-core:latest \ --schedule0 0 * * * -- /bin/sh -c harbor_garbage_collector这套方案在我负责的多个中小型项目中表现稳定单节点配置下可支持20个Pod同时运行。关键是要根据实际负载监控资源使用情况及时调整配置参数。对于需要更高可用性的场景可以考虑升级为3节点的RKE2集群部署模式基本类似只需将部分节点配置为worker角色即可。