「Rancher」- 安装 2.5.9 版本(Docker Compose)

  CREATED BY JENKINSBOT

问题描述

该笔记将记录:在 Linux 中,使用 Docker 部署 Rancher 的方法,以及相关问题的解决方案。

注意事项

部署环境

官方建议使用专用的 Kubernetes Cluster 来运行 Rancher Server 服务。
但是出于成本考虑,我们暂时通过 Docker 部署,后面再通过 Rancher Backup Operator 进行迁移。

版本选择

Support matrix/2.6.3 | SUSE
Support matrix/2.5.9 | SUSE

不同版本的 Rancher 能够支持的 Kubernetes Cluster 版本也不同。

参考 Support matrix | SUSE 文档,以获取具体细节:
1)Rancher …:该章节介绍 Rancher Server 要求的 Kubernetes Cluster 版本信息:
2)Downstream Clusters …:该章节介绍 Rancher Server 能够管理的 Kubernetes Cluster 版本;

Rancher    Kubernetes Cluster
2.6.3      1.18.x - 1.21.x
2.5.9      1.17.x - 1.20.x

解决方案

第一步、编写 Docker Compose 文件

version: "3"

services:
  kaas:
    image: rancher/rancher:v2.5.9
    container_name: kaas
    privileged: true
    restart: always
    volumes:
      - "/srv/hdd/kaas/data:/var/lib/rancher"
    ports:
      - "50365:80"
      - "40365:443"
    # command:
    #   - --no-cacerts

第二步、启动 Rancher 服务

docker-compose up -d

docker-compose logs -f

第三步、配置 Nginx 代理

map $http_upgrade $connection_upgrade {
    default Upgrade;
    ''      close;
}

server {

    listen               443 ssl;
    server_name          rancher.example.com;
    ssl_certificate      /path/to/example.pem;
    ssl_certificate_key  /path/to/example.key;

    client_max_body_size 1G;

    location / {
        # 这里不要添加 / 后缀,即不要使用 https://127.0.0.1:40365/ 地址,否则导致 Unable to fetch user info 错误;
        # 如果携带斜线,Nginx 则会处理 URL,导致类似 local://u-782hp 参数被解码传入后端,而影响 Rancher 正常处理;
        proxy_pass https://127.0.0.1:40365;
        proxy_ssl_verify              off;

        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection $connection_upgrade;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto "https";
    }
}

升级 2.5.9 到 2.6.3 版本

问题:部署 Rancher Agent 组件,出现 the server could not find the requested resource 错误。

分析:我们的 Rancher 为 v2.5.9 版本,而该版本不支持 Kubernetes 1.22 集群,所以需要版本升级。

环境概述

软件版本:Rancher v2.5.9
部署方式:Rancher on a Single Node Using Docker

升级过程

过程大致为:停止容器 ⇒ 数据备份 ⇒ 启动新版本

我们尝试从 2.5.9 直接升级到 2.6.3 版本,但是当 Rancher 启动后,主界面提示我们从日志中查看密码,当登录后我们又发现数据全部丢失。

然后,我们尝试开始逐步升级:2.5.9 ⇒ 2.5.12 ⇒ 2.6.0 ⇒ 2.6.1 ⇒ 2.6.2 ⇒ 2.6.3

但是,当 2.6.2 ⇒ 2.6.3 时,再次出现数据全部丢失,经过论坛搜索得知是 Docker/K3s/etcd 的数据目录变化,导致无法加载原由数据

解决办法(Rancher 2.6.2 upgrade 2.6.3 cluster down. · Issue #35955 · rancher/rancher · GitHub):

cd /opt/rancher                                                                 # 挂载到 /var/lib/rancher 的目录
mkdir -p k3s/server/db/etcd
cp -rf management-state/etcd/member k3s/server/db/etcd/

参考文献

Install fail the server could not find the requested resource – Rancher 2.x – Rancher Labs
Release Release v2.6.3 · rancher/rancher · GitHub
Rancher Update on docker Host lost all Config Data – Rancher 2.x – Rancher Labs
nginx as reverse proxy with upstream SSL – Server Fault
Compose file version 3 reference | Docker Documentation
Rancher Docs: Advanced Options for Docker Installs
Rancher Docs: Installing Rancher on a Single Node Using Docker
Rancher Docs: Installation Requirements
ruby – How to preserve request url with nginx proxy_pass – Stack Overflow