Rancher是一款开源的Kubernetes集群管理平台,可以帮助用户快速部署和管理Kubernetes集群。Rancher 在 v2.14.3 版本,支持 Kuberentes v1.35.6
但是在国内使用 Rancher 时,镜像拉取速度慢一直是个痛点问题。除了 Rancher 自身的镜像,还有是 Kubernetes 等相关的镜像。Github Release 中提供了版本相关的所有的镜像列表和镜像缓存迁移工具。
rancher-images.txt[1] 提供了rancher和集群运行管理的所有 856 个相关镜像。
rancher-save-images.sh[2] 将 rancher-images.txt 中的镜像保存到本地
rancher-load-images.sh[3] 将导出的镜像包导入到私有的镜像仓库
藏云阁镜像仓库[4] 已经全部同步rancher-images.txt 中的全部镜像的 ARM64/AMD64 版本,在国内可以高速拉取镜像。
安装启动RancherRancher 有多种安装方式,官方推荐基于 HelmChart 的方式安装到 Kubernetes 集群中。
体验和测试等可以使用 Docker 的方式启动 Rancher 容器,方便快速体验。 由于添加了一些参数,使用docker命令管理不方便,我习惯上使用 Docker Compose 的方式进行管理。
docker-compose.yml 文件如下:
services: rancher: image:registry.cncfstack.com/docker.io/rancher/rancher:v2.14.3 container_name:rancher privileged:true environment: -CATTLE_SYSTEM_DEFAULT_REGISTRY=registry.cncfstack.com/docker.io -CATTLE_SYSTEM_CATALOG=bundled # 设置rancher管理平台页面中注册中心配置 -CATTLE_BASE_REGISTRY=registry.cncfstack.com/docker.io -CATTLE_CLUSTER_REGISTRY=registry.cncfstack.com/docker.io -CATTLE_BOOTSTRAP_PASSWORD=PWD_changeme666 # 第一次安装成功时让确认的的访问地址 -CATTLE_SERVER_URL=https://rancher.cncfstack.com # 禁用虚拟化 -CATTLE_FEATURES=harvester=false -CATTLE_DEV_MODE="yes" # Rancher证书验证,为strict时只认可挂载制定的cacerts证书,设置为system-store则认可操作系统的ca # - CATTLE_AGENT_TLS_MODE="system-store" ports: -"80:80" -"443:443" restart:always # command: '--no-cacerts' 在自签名时不需要 #command: '--no-cacerts' volumes: -/etc/timezone:/etc/timezone:ro -/etc/localtime:/etc/localtime:ro -./config/k8s-registries.yaml:/etc/rancher/k3s/registries.yaml -/data/rancher/rancher:/var/lib/rancher -/data/rancher/pods-logs:/var/log/pods# - /data/cloud-services/nginx/ssl/cncfstack.com_ecc/fullchain.cer:/etc/rancher/ssl/cert.pem # - /data/cloud-services/nginx/ssl/cncfstack.com_ecc/cncfstack.com.key:/etc/rancher/ssl/key.pem
Rancher 运行需要通过 https:// , 默认会自动签发一个自签名证书。也可以配置合法的证书,但需要注意添加 command: '--no-cacerts' 和 CATTLE_AGENT_TLS_MODE="system-store",并且目标的证书和私钥路径和名称是固定的。
CATTLE_SYSTEM_DEFAULT_REGISTRY、CATTLE_BASE_REGISTRY 和 CATTLE_CLUSTER_REGISTRY 都是为了指定 Rancher 运行时容器镜像的仓库地址,在国内网络和企业私有网络需要进行配置。
并且 rancher 容器在启动时挂载了一个 config/k8s-registries.yaml 文件,这是 K3s 运行的配置文件,也是用于配置 k8s 的镜像仓库,
mirrors: docker.io: endpoint: -"https://registry.cncfstack.com" rewrite: "^rancher/(.*)":"docker.io/rancher/$1"
命令行访问 K8s(k3s )集群rancher 启动后默认有一套 k3s 集群,它具有 Kuberentes 大部分的功能,可以满足日常学习使用。
访问 Rancher 默认提供的 Kuberentes 集群可以进入到容器内部,容器内相关的 kubectl 命令和配置文件都已经就绪,可以直接使用:
dockerexec -it rancher bashkubectl get pod -A
访问 Web 页面安装完成后打开 Web UI 页面。在 docker compose 中配置了默认访问域名 CATTLE_SERVER_URL 和密码 CATTLE_BOOTSTRAP_PASSWORD ,如果配置的是域名需要注意域名的 DNS 解析。

正常情况下有了配置文件和 docker-compose.yml 文件,只需要执行 docker-compose up -d 就可以启动 Rancher 容器了。可能由于网络带宽导致服务启动慢多等一会,或者超时 docker compose restart 重启一下就行。
如果启动后,页面无法访问,可以通过 docker compose logs -f rancher 或者 docker logs -f rancher 查看日志,这里会显示容器的标准输出日志。
有时直接通过 rancher 标准输出的日志不足以解决问题时,还可以通过 k3s 的日志来查看。
Rancher 容器运行方案是在 Docker-In-Docker 的容器运行 k3s 集群。k3s 集群分为 server 端和 agent 端, server 类似 k8s 集群的 master 节点, agent 类似 k8s 集群的 worker/node 节点。
• server: /data/rancher/rancher/k3s/server
• agent: /data/rancher/rancher/k3s/agent
在 Docker Compose 中已经将容器中的目录挂载到宿主机 /data/rancher 目录。
k3s 服务端运行主要通过 k3s.log 日志文件,agent 端运行主要通过 containerd.log 日志文件。
tail -f /data/rancher/rancher/k3s.logtail -f /data/rancher/rancher/k3s/agent/containerd/containerd.log
页面功能Rancher 提供了丰富的多Kubernetes集群管理功能。并对每个集群提供了相关的管理功能。

管理员可以接入已有的 Kubernetes 集群,如公有云的集群或自建的集群,也可以创建新的 Kubernetes 集群。

[1] rancher-images.txt: https://github.com/rancher/rancher/releases/download/v2.14.3/rancher-images.txt[2] rancher-save-images.sh: https://github.com/rancher/rancher/releases/download/v2.14.3/rancher-save-images.sh[3] rancher-load-images.sh: https://github.com/rancher/rancher/releases/download/v2.14.3/rancher-load-images.sh[4] 藏云阁镜像仓库: https://www.cncfstack.com/images