国内使用 Rancher v2.14.3 版本,支持K8s v1.35.6

Rancher是一款开源的Kubernetes集群管理平台,可以帮助用户快速部署和管理Kubernetes集群。在国内安装Rancher时,镜像拉取速度慢一直是个痛点问题。

Rancher是一款开源的Kubernetes集群管理平台,可以帮助用户快速部署和管理Kubernetes集群。Rancher 在 v2.14.3 版本,支持 Kuberentes v1.35.6

但是在国内使用 Rancher 时,镜像拉取速度慢一直是个痛点问题。除了 Rancher 自身的镜像,还有是 Kubernetes 等相关的镜像。Github Release 中提供了版本相关的所有的镜像列表和镜像缓存迁移工具。

藏云阁镜像仓库 已经全部同步rancher-images.txt 中的全部镜像的 ARM64/AMD64 版本,在国内可以高速拉取镜像。

安装启动Rancher

Rancher 有多种安装方式,官方推荐基于 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_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 命令和配置文件都已经就绪,可以直接使用:

docker exec -it rancher bash
kubectl 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 的日志来查看。

在 Docker Compose 中已经将容器中的目录挂载到宿主机 /data/rancher 目录。

k3s 服务端运行主要通过 k3s.log 日志文件,agent 端运行主要通过 containerd.log 日志文件。

tail -f /data/rancher/rancher/k3s.log
tail -f /data/rancher/rancher/k3s/agent/containerd/containerd.log

页面功能

Rancher 提供了丰富的多Kubernetes集群管理功能。并对每个集群提供了相关的管理功能。

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