问题描述
该笔记将记录:在 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