“AI 技术+人才”如何成为企业增长新引擎?戳此了解>>> 了解详情
写点什么

单节点 Rancher 离线安装的关键一步

  • 2021-06-01
  • 本文字数:6085 字

    阅读完需:约 20 分钟

单节点Rancher离线安装的关键一步

前言

Rancher 从 v2.5.x 开始,单节点 Rancher Server 内置了 K3s 作为 local 集群,该 local 集群除了支撑 Rancher Server 运行以外,还将运行 fleet、rancher-webhook、gitjob、coredns 等组件。下图为 Rancher v2.5.8 内置 K3s 集群默认启动的组件和所需的镜像:



其中,docker.io/rancher/coredns-coredns 和 docker.io/rancher/pause 为 Rancher Server 内置的镜像,其他镜像需要在 Rancher Server 启动后到 dockerhub 去在线下载。


如果你的环境是离线环境,并且是通过 docker run 的方式启动 Rancher Server,会报一些镜像下载失败的日志:



E0511 08:39:56.060906 28 pod_workers.go:191] Error syncing pod d0f83155-f023-4ff6-9164-11b6b63ef4d6 ("helm-operation-t8mtl_cattle-system(d0f83155-f023-4ff6-9164-11b6b63ef4d6)"), skipping: [failed to "StartContainer" for "helm" with ImagePullBackOff: "Back-off pulling image \"rancher/shell:v0.1.6\"", failed to "StartContainer" for "proxy" with ImagePullBackOff: "Back-off pulling image \"rancher/shell:v0.1.6\""]
复制代码


官网文档单节点离线安装 Rancher Server(http://docs.rancher.cn/docs/rancher2.5/installation/other-installation-methods/air-gap/install-rancher/_index/#单节点安装)章节中指出了可以通过 CATTLE_SYSTEM_DEFAULT_REGISTRY 参数指定从私有镜像仓库去获取 Rancher Server 所需的镜像,但如果你的私有镜像仓库是启用 TLS 有认证的情况,CATTLE_SYSTEM_DEFAULT_REGISTRY 是无法满足你的需求的。


针对上述场景,我们可以将内置 k3s 集群的/etc/rancher/k3s/registries.yaml 映射到宿主机上,然后通过修改 registries.yaml 来实现启用 TLS 或有认证 等更复杂的场景,关于 k3s 配置私有仓库,可参考 k3s 官网(http://docs.rancher.cn/docs/k3s/installation/private-registry/_index/).

单节点 Rancher Server 配置私有镜像仓库

以下章节将指导大家如何通过私有镜像仓库在离线环境下安装单节点 Rancher Server,针对镜像仓库类型的不同,分为以下几种场景:


  • 私有仓库为 SSL 证书颁发机构颁发的证书(https),有认证

  • 私有仓库为自签名证书(https),有认证

  • 私有仓库不使用 SSL(使用 http),有认证


私有仓库为 SSL 证书颁发机构颁发的证书(https),有认证私有仓库中已经提前上传了 Rancher Server 所需要的镜像,如何同步镜像到私有镜像仓库可以参考官方文档(http://docs.rancher.cn/docs/rancher2.5/installation/other-installation-methods/air-gap/populate-private-registry/_index).


1.配置 K3s registries.yaml



root@ip-172-31-14-159:~# cat /opt/registries.yamlmirrors: # 私有仓库域名 harbor.kingsd.top: endpoint: - "https://harbor.kingsd.top"configs: "harbor.kingsd.top": auth: username: admin # 这是私有镜像仓库的用户名 password: Password # 这是私有镜像仓库的密码
复制代码


2.启动单节点 Rancher Server



root@ip-172-31-14-159:~# docker run -itd --privileged \> --restart=unless-stopped \> -p 80:80 -p 443:443 \> -e CATTLE_SYSTEM_DEFAULT_REGISTRY=harbor.kingsd.top \ # 设置私有仓库域名> -v /opt/registries.yaml:/etc/rancher/k3s/registries.yaml \ # 将宿主机`registries.yaml`映射到容器内> rancher/rancher:v2.5.8
复制代码


3.验证

等待 Rancher Server 启动成功后,我们可以 exec 到容器内确认所需要的组件是否启动:



root@3fd636aa513e:/var/lib/rancher# kubectl get pods -ANAMESPACE NAME READY STATUS RESTARTS AGEcattle-system helm-operation-5w49g 0/2 Completed 0 3m21scattle-system helm-operation-gclkp 0/2 Completed 0 3m3scattle-system helm-operation-jt948 0/2 Completed 0 3m13scattle-system helm-operation-l76g6 0/2 Completed 0 3m41scattle-system helm-operation-zmm6f 0/2 Completed 0 3m28scattle-system rancher-webhook-58b8d9f6c6-bxmns 1/1 Running 0 3m24sfleet-system fleet-agent-7c7d457b6d-x4kvf 1/1 Running 0 2m33sfleet-system fleet-controller-5ddfd96f5c-lxbnt 1/1 Running 0 3m10sfleet-system gitjob-7b4ddfcbf7-6hx52 1/1 Running 0 3m10skube-system coredns-66c464876b-hfjqk 1/1 Running 0 4m1srancher-operator-system rancher-operator-5cbfb5d6d7-kq29z 1/1 Running 0 3m32s
root@3fd636aa513e:/var/lib/rancher# k3s crictl imagesIMAGE TAG IMAGE ID SIZEdocker.io/rancher/coredns-coredns 1.6.9 4e797b3234604 43.3MBdocker.io/rancher/pause 3.1 da86e6ba6ca19 746kBharbor.kingsd.top/rancher/fleet-agent v0.3.5 2a0c55d5db357 55.9MBharbor.kingsd.top/rancher/fleet v0.3.5 981b7123a405f 23.9MBharbor.kingsd.top/rancher/gitjob v0.1.15 dac9b6c58fe07 24.8MBharbor.kingsd.top/rancher/rancher-operator v0.1.4 c18d03bea7c6f 14.5MBharbor.kingsd.top/rancher/rancher-webhook v0.1.0 aec2ca2e747d7 12.6MBharbor.kingsd.top/rancher/shell v0.1.6 2e550736e6a49 46.8MB
复制代码


可以看到,除了 Rancher Server 内置的 rancher/coredns-coredns 和 rancher/pause 镜像以外,其他的镜像都是从 harbor.kingsd.top 拉取。


私有仓库为自签名证书(https),有认证 Rancher Server 连接自签名证书的私有仓库和 SSL 证书颁发机构的私有仓库配置的区别主要在于连接自签名证书的私有仓库时需要在 k3s 的 registries.yaml 中指定私有镜像仓库的自签名证书。


1.配置 K3s registries.yaml



root@ip-172-31-14-159:~# cat /opt/registries.yamlmirrors: # 私有仓库域名 harbor.kingsd.top: endpoint: - "https://harbor.kingsd.top"configs: "harbor.kingsd.top": auth: username: admin # 这是私有镜像仓库的用户名 password: Password # 这是私有镜像仓库的密码 tls: ca_file: /opt/certs/ca.crt # 镜像仓库中使用的ca文件的路径。 cert_file: /opt/certs/harbor.kingsd.top.cert # 镜像仓库中使用的cert文件的路径。 key_file: /opt/certs/harbor.kingsd.top.key # 镜像仓库中使用的key文件的路径。
复制代码


2.启动单节点 Rancher Server



root@ip-172-31-14-159:~# docker run -itd --privileged \> --restart=unless-stopped \> -p 80:80 -p 443:443 \> -e CATTLE_SYSTEM_DEFAULT_REGISTRY=harbor.kingsd.top \ # 设置私有仓库域名> -v /opt/registries.yaml:/etc/rancher/k3s/registries.yaml \ # 将宿主机`registries.yaml`映射到容器内> -v /opt/certs:/opt/certs \ # 将证书映射到容器内> rancher/rancher:v2.5.8
复制代码


3.验证

等待 Rancher Server 启动成功后,我们可以 exec 到容器内确认所需要的组件是否启动:



root@381b5d2c26d9:/var/lib/rancher# kubectl get pods -ANAMESPACE NAME READY STATUS RESTARTS AGEcattle-system helm-operation-b5mvm 0/2 Completed 0 6m27scattle-system helm-operation-cdlc8 0/2 Completed 0 5m57scattle-system helm-operation-hcxmj 0/2 Completed 0 5m47scattle-system helm-operation-vqz9z 0/2 Completed 0 6m4scattle-system helm-operation-wqgz9 0/2 Completed 0 6m12scattle-system rancher-webhook-58b8d9f6c6-z68ps 1/1 Running 0 6m18sfleet-system fleet-agent-7c7d457b6d-zznvd 1/1 Running 0 5m25sfleet-system fleet-controller-5ddfd96f5c-kcqmq 1/1 Running 0 5m53sfleet-system gitjob-7b4ddfcbf7-99l46 1/1 Running 0 5m53skube-system coredns-66c464876b-mflfv 1/1 Running 0 6m49srancher-operator-system rancher-operator-5cbfb5d6d7-prsqh 1/1 Running 0 6m9s
root@381b5d2c26d9:/var/lib/rancher# k3s crictl imagesIMAGE TAG IMAGE ID SIZEdocker.io/rancher/coredns-coredns 1.6.9 4e797b3234604 43.3MBdocker.io/rancher/pause 3.1 da86e6ba6ca19 746kBharbor.kingsd.top/rancher/fleet-agent v0.3.5 2a0c55d5db357 55.9MBharbor.kingsd.top/rancher/fleet v0.3.5 981b7123a405f 23.9MBharbor.kingsd.top/rancher/gitjob v0.1.15 dac9b6c58fe07 24.8MBharbor.kingsd.top/rancher/rancher-operator v0.1.4 c18d03bea7c6f 14.5MBharbor.kingsd.top/rancher/rancher-webhook v0.1.0 aec2ca2e747d7 12.6MBharbor.kingsd.top/rancher/shell v0.1.6 2e550736e6a49 46.8MB
复制代码


可以看到,除了 Rancher Server 内置的 rancher/coredns-coredns 和 rancher/pause 镜像以外,其他的镜像都是从 harbor.kingsd.top 拉取。


私有仓库不使用 SSL(使用 http),有认证针对 HTTP 的私有仓库,只需要将 registries.yaml 里的 mirrors.endpoint 配置修改为 http 开头即可。


1.配置 K3s registries.yaml



root@ip-172-31-14-159:~# cat cat /opt/registries.yamlcat: cat: No such file or directorymirrors: # 私有仓库IP 3.96.56.137: endpoint: - "http://3.96.56.137"configs: "3.96.56.137": auth: username: admin # 这是私有镜像仓库的用户名 password: Password # 这是私有镜像仓库的密码
复制代码


2.启动单节点 Rancher Server



root@ip-172-31-14-159:~# docker run -itd --privileged \> --restart=unless-stopped \> -p 80:80 -p 443:443 \> -e CATTLE_SYSTEM_DEFAULT_REGISTRY=3.96.56.137 \ # 设置私有仓库IP> -v /opt/registries.yaml:/etc/rancher/k3s/registries.yaml \ # 将宿主机`registries.yaml`映射到容器内> rancher/rancher:v2.5.8
复制代码


3.验证



root@cb018bb70446:/var/lib/rancher# kubectl get pods -ANAMESPACE NAME READY STATUS RESTARTS AGEcattle-system helm-operation-44tb7 0/2 Completed 0 77scattle-system helm-operation-cwpvz 0/2 Completed 0 66scattle-system helm-operation-f898m 0/2 Completed 0 58scattle-system helm-operation-fc4tj 0/2 Completed 0 51scattle-system helm-operation-qq4kz 0/2 Completed 0 42scattle-system rancher-webhook-c49756c7f-rjwdj 1/1 Running 0 63sfleet-system fleet-agent-55865c8959-rz8p2 1/1 Running 0 21sfleet-system fleet-controller-797ff98bfd-xj48k 1/1 Running 0 47sfleet-system gitjob-58bdfc4c69-mp84z 1/1 Running 0 47skube-system coredns-66c464876b-dbm8v 1/1 Running 0 96srancher-operator-system rancher-operator-578b4c64d4-4ptq9 1/1 Running 0 69s
root@cb018bb70446:/var/lib/rancher# k3s crictl imagesIMAGE TAG IMAGE ID SIZE3.96.56.137/rancher/fleet-agent v0.3.5 2a0c55d5db357 55.9MB3.96.56.137/rancher/fleet v0.3.5 981b7123a405f 23.9MB3.96.56.137/rancher/gitjob v0.1.15 dac9b6c58fe07 24.8MB3.96.56.137/rancher/rancher-operator v0.1.4 c18d03bea7c6f 14.5MB3.96.56.137/rancher/rancher-webhook v0.1.0 aec2ca2e747d7 12.6MB3.96.56.137/rancher/shell v0.1.6 2e550736e6a49 46.8MBdocker.io/rancher/coredns-coredns 1.6.9 4e797b3234604 43.3MBdocker.io/rancher/pause 3.1 da86e6ba6ca19 746kB
复制代码


可以看到,除了 Rancher Server 内置的 rancher/coredns-coredns 和 rancher/pause 镜像以外,其他的镜像都是从 3.96.56.137 拉取。

后记

单节点 Rancher Server 连接私有仓库其实就是内置的 K3s 集群连接私有仓库,关于更多 k3s 私有镜像仓库配置可以参考 k3s 官网(http://docs.rancher.cn/docs/k3s/installation/private-registry/_index)。


作者简介

王海龙,SUSE/Rancher 中国社区技术经理,负责 Rancher 中国技术社区的维护和运营。拥有 7 年的云计算领域经验,经历了 OpenStack 到 Kubernetes 的技术变革,无论底层操作系统 Linux,还是虚拟化 KVM 或是 Docker 容器技术都有丰富的运维和实践经验。


本文转载自:RancherLabs(ID:RancherLabs)

原文链接:单节点Rancher离线安装的关键一步

2021-06-01 08:002118

评论

发布
暂无评论
发现更多内容

大数据ELK(九):使用VSCode测试分词器

Lansonli

ELK 10月月更

第1章:初识数据库与MySQL----数据库基本概念

乌龟哥哥

9月月更

阿里云搭建halo博客

乌龟哥哥

9月月更

linxu入门指令

乌龟哥哥

9月月更

测试

乌龟哥哥

9月月更

Spring Security 在 Servlet 的作用区域

HoneyMoose

从单机百万tpmc到分布式千万tpmc,GaussDB性能提升的3个关键技术剖析

乌龟哥哥

9月月更

Python之斐波那契数列的实现

攻城狮Wayne

Python 9月月更 斐波那契数列

开发者有话说|我想给你讲一个故事

石云升

个人成长 9月月更

OptaPlanner场景和示例

成长兔🐇

工业4.0时代IIoT存储面临哪些挑战

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

(WebFlux)004、WebFilter踩坑记录

编号94530

Spring Boot WebFlux Reactor3 WebFilter

数据价值平台化输出:数据服务平台

Taylor

数据中台 接口管理 API接口管理 数据服务 数据服务平台

leetcode 513. Find Bottom Left Tree Value 找树左下角的值 (简单)

okokabcd

LeetCode 数据结构与算法

Java中的悲观锁和乐观锁是什么意思?其分类依据是啥?

wljslmz

Java 乐观锁 悲观锁 9月月更

GaussDB(DWS)如何实现实时,批量和交付式查询一站式开发

乌龟哥哥

9月月更

启动 Hello Spring Security Boot 应用

HoneyMoose

「产品运营」研发效能之DevOps平台如何运营?

laofo

DevOps cicd 研发效能 持续交付 工程效率

《MySQL入门很轻松》第2章:MySQL管理工具介绍

乌龟哥哥

9月月更

无线网络安全技术中的王牌标准:WPA到底是个什么东东?解决了什么问题?

wljslmz

网络安全 无线技术 9月月更 WAP

Python之简易计算器的制作

攻城狮Wayne

Python 9月月更 简易计算器

Python之鸡兔同笼

攻城狮Wayne

9月月更 Python语法 鸡兔同笼

腾讯云搭建wordpress网站超详细介绍

乌龟哥哥

9月月更

浅谈云原生安全

HummerCloud

云原生 云安全 云原生安全

微信架构图

Johnny

#架构实战营

14个你必须要知道的ubuntu快捷键

乌龟哥哥

9月月更

《MySQL入门很轻松》第4章:数据表中存放的数据类型

乌龟哥哥

9月月更

极速体验SpringCloud Gateway

程序员欣宸

Java SpringCloud SpringCloud Gateway 9月月更

2022-09-30:以下go语言代码输出什么?A: true true false true false; B: true false false true false; C: true true

福大大架构师每日一题

部署华为云DWS过程

乌龟哥哥

9月月更

《MySQL入门很轻松》第5章:数据完整性及其分类

乌龟哥哥

9月月更

单节点Rancher离线安装的关键一步_架构_Rancher_InfoQ精选文章