最新发布《数智时代的AI人才粮仓模型解读白皮书(2024版)》,立即领取! 了解详情
写点什么

单节点 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:002138

评论

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

企业云成本管控,你真的做对了吗?

Kyligence

云成本管控 云成本分析

深入理解IO流(第一篇)

JAVA活菩萨

Java 程序员

从技术全景到场景实战,透析「窄带高清」的演进突破

阿里云视频云

云计算 直播 视频

连续三次 | 灵雀云入选Gartner中国ICT技术成熟度曲线报告

York

云计算 云原生 数字化转型 ICT Gartner

4KMILES加入艾盛集团,以更强劲的数字商务能力,加速中国跨境电商的全域全效增长

Geek_2d6073

天翼云4.0分布式云赋能千行百业数字化转型

天翼云开发者社区

云存储 云上架构

Linux Lab 编译 riscv-gnu-toolchain

贾献华

8月月更

面试官:可以谈谈乐观锁和悲观锁吗

JAVA活菩萨

面试官

什么是现场服务管理系统(FSM)?有什么好处?

优秀

企业管理系统 现场管理

一款好用的FAQ搭建工具

Geek_da0866

Axure9的元件用法

乔乔

签约计划第三季 8月月更

开源一夏 | Web开发(七):登录实现及功能测试

是Dream呀

DevOps之代码检查

凌云Cloud

DevOps 研发管理 代码检查器

Mqtt开发笔记:windows下C++ ActiveMQ客户端介绍、编译和使用

JAVA活菩萨

Java 程序员 后端

MyBatis操作数据库

JAVA活菩萨

Java 程序员 后端

读书笔记之《你想过怎样的一生?》

宇宙之一粟

读书笔记 8月月更

【CSS】基础选择器,包括标签选择器、类选择器、id选择器和通配符选择器...

翼同学

CSS html 前端 HTML5, CSS3 8月月更

开源一夏 |【云原生】DevOps(五):集成Harbor

是Dream呀

发挥云网融合优势,天翼云为政企铺设数字化转型跑道

天翼云开发者社区

数字化转型 数字化基础 云网融合

线程池原理与实践|从入门到放弃,深度解析

领创集团Advance Intelligence Group

线程池 内存溢出 线程池工作原理

一朵“云“如何带来产业新变革

天翼云开发者社区

云网融合

千万级QPS下服务如何才能平滑启动

HelloGeek

微服务架构 Service Mesh 高并发优化

开源一夏 | 计算机网络:物理层

是Dream呀

开源

麦聪DaaS平台 3.7.0 Release 正式发布:全面支持国际化

雨果

DaaS数据即服务

实现客户服务自助,打造产品知识库

Baklib

天翼云4.0来了!千城万池,无所不至!

天翼云开发者社区

云计算 云平台

魔豹联盟:佛萨奇2.0dapp系统开发模式详情

开发微hkkf5566

Spring Boot整合Mybatis

JAVA活菩萨

Java 程序员 后端

竞赛:糖尿病遗传风险检测挑战赛(科大讯飞)

Lingxw

数据挖掘 Kaggle 8月月更

MOSN 反向通道详解

SOFAStack

开源 网络安全 Go 语言 社区贡献 MOSN

这份562页的算法知识点集结刷题手册,将是你拿大厂offer的突破口

了不起的程序猿

程序员 算法 编程语言 java程序员 大厂面试

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