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

近期,经常有小伙伴在 K3s 社区中咨询关于使用国内资源安装 K3s 的问题,本文将对此进行详细介绍。

K3s 安装和启动流程

K3s 是一个轻量级的 Kubernetes 发行版,非常简单易用而且轻量。只需要一个简单的安装脚本即可把 K3s 安装到主机。

以下是使用官方安装脚本的执行过程:

# curl -sfL https://get.k3s.io | sh -
[INFO]  Finding release for channel stable
[INFO]  Using v1.25.3+k3s1 as release
[INFO]  Downloading hash https://github.com/k3s-io/k3s/releases/download/v1.25.3+k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary https://github.com/k3s-io/k3s/releases/download/v1.25.3+k3s1/k3s
[INFO]  Verifying binary download
...
...
[INFO]  systemd: Starting k3s

如果从国内环境安装 K3s 可能会遇到安装速度特别缓慢或者 time out 的情况,从以上的安装过程可以分析出以下几个原因:

  • K3s 的安装脚本 存储在国外的服务器,从国内环境访问可能出现无法访问的情况。
  • K3s 默认安装 stable 版本,stable 对应的具体 K3s 版本是通过 https://update.k3s.io/v1-release/channels 解析来的,而这个地址也是运行在一个国外的服务器上。
  • 当通过 channel 解析出对应 K3s 的版本为:v1.25.3+k3s1,此时需要到 github 上拉取对应的 K3s 二进制文件。虽然这个二进制文件才几十兆,但国内环境访问 github 经常会出现无法访问的情况。
# kubectl get pods -A
NAMESPACE     NAME                                      READY   STATUS              RESTARTS   AGE
kube-system   helm-install-traefik-crd-7k9rw            0/1     ContainerCreating   0          10m
kube-system   helm-install-traefik-8q69g                0/1     ContainerCreating   0          10m
kube-system   coredns-75fc8f8fff-hlx2w                  0/1     ContainerCreating   0          10m
kube-system   metrics-server-5c8978b444-xz6vx           0/1     ContainerCreating   0          10m
kube-system   local-path-provisioner-5b5579c644-8g2kn   0/1     ImagePullBackOff    0          10m

另外,要完整运行 K3s,还依赖一些系统的服务,这些系统服务(例如:coredns、traefik)都是以容器的方式运行;而这些系统服务依赖的系统镜像默认是从 DockerHub 去拉取。同样从国内访问偶尔会出现无法访问或拉取镜像缓慢的情况。

以上,就是在国内环境使用 K3s 的一些痛点。

使用国内资源安装 K3s

为了解决以上问题,K3s 社区已经将所需的 K3s 资源都同步到了国内的服务器上,这样我们就可以使用这些国内资源在国内环境上安装 K3s,不但提升了安装速度也提升了安装的稳定性。

该站点由 K3s 社区维护,同步资源到国内服务器有可能出现延后或遗漏情况,如发现延后或遗漏情况欢迎反馈到中文论坛。

K3s 社区都同步了哪些资源到国内?

  • K3s 安装脚本
  • Channel 解析文件
  • K3s 的二进制文件
  • K3s 依赖系统镜像

接下来,再来看下应该如何运用国内的资源安装 K3s:

# curl –sfL \https://rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/k3s-install.sh | \INSTALL_K3S_MIRROR=cn sh -s - \--system-default-registry "registry.cn-hangzhou.aliyuncs.com"[INFO]  Finding release for channel stable
[INFO]  Using v1.25.3+k3s1 as release
[INFO]  Downloading hash rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/v1.25.3-k3s1/sha256sum-amd64.txt
[INFO]  Downloading binary rancher-mirror.oss-cn-beijing.aliyuncs.com/k3s/v1.25.3-k3s1/k3s
[INFO]  Verifying binary download
...
...
[INFO]  systemd: Starting k3s

确认系统镜像是否从阿里云镜像仓库拉取:

# kubectl get pods -n kube-system
NAME                                     READY   STATUS      RESTARTS   AGE
coredns-7c855cf8c6-x6d77                 1/1     Running     0          7m55s# kubectl describe pods coredns-7c855cf8c6-x6d77 -n kube-system
Events:Type    Reason     Age    From               Message----    ------     ----   ----               -------Normal  Scheduled  7m44s  default-scheduler  Successfully assigned kube-system/coredns-7c855cf8c6-x6d77 to k3s3Normal  Pulling    7m40s  kubelet            Pulling image "registry.cn-hangzhou.aliyuncs.com/rancher/mirrored-coredns-coredns:1.9.1"Normal  Pulled     7m6s   kubelet            Successfully pulled image "registry.cn-hangzhou.aliyuncs.com/rancher/mirrored-coredns-coredns:1.9.1" in 34.050826086sNormal  Created    7m6s   kubelet            Created container corednsNormal  Started    7m6s   kubelet            Started container coredns

首先,安装 K3s 使用的是存储在阿里云对象存储上的 K3s 安装脚本,并且使用存储在国内 channel 去解析对应的 K3s 版本。

其次,通过 INSTALL_K3S_MIRROR=cn 环境变量来指定 K3s 的二进制文件从国内的阿里云对象存储上去拉取。

最后,通过--system-default-registry参数来指定 K3s 的系统镜像从国内的阿里云镜像仓库(registry.cn-hangzhou.aliyuncs.com) 去拉取。

如果你的带宽充足,一分钟之内即可完成 K3s 的安装和系统服务的启动。

K3s 配置 Mirror

以上这些步骤只是为了加速 K3s 的安装和启动。启动 K3s 后你可能会在 K3s 上部署自己的业务(例如 nginx),而这些镜像默认也是从 DockerHub 拉取。如果使用 docker 容器运行时,你可能会在 docker 上配置 mirror 来加速镜像的拉取。

K3s 默认使用的 containerd 容器运行时。而且,可以通过 K3s 的参数来设置 containerd 的 mirror,设置方式如下:

cat >> /etc/rancher/k3s/registries.yaml <<EOFmirrors:  "docker.io":    endpoint:      - "https://docker.mirrors.ustc.edu.cn" # 可根据需求替换 mirror 站点      - "https://registry-1.docker.io"EOFsystemctl restart k3s

经过以上配置后,通过 K3s 拉取的镜像如果在配置的 mirror 站点中存在,那么将会从该站点拉取镜像。如果不存在,将会从默认的 docker.io 中拉取镜像。

如果你想确认 containerd 的 mirror 是否生效,你可以使用 crictl info 检查:

# crictl info"registry": {"configPath": "","mirrors": {"docker.io": {"endpoint": ["https://docker.mirrors.ustc.edu.cn","https://registry-1.docker.io"],"rewrite": null}},

通过 Rancher Manager 创建 K3s 集群

从 Rancher v2.6 开始,支持从 Rancher Manager 创建 K3s 集群。通过 Rancher Manager 创建 K3s 集群和默认的 K3s 集群安装有所不同,前者创建集群主要依赖一些镜像完成,这些镜像默认是从 DockerHub 拉取。

同样,可以在 Rancher Manager 修改创建 K3s 集群的参数来完成使用国内资源安装 K3s 集群。只需要在创建 K3s 集群时导航到 Registries,选择 Pull images for Rancher from a private registry 并设置 Registry hostname for Rancher images 的值为阿里云镜像仓库的地址 “registry.cn-hangzhou.aliyuncs.com” 即可,如下图:

后 记

通过以上方式安装 K3s 基本能满足国内环境使用 K3s 的各种需求,而且安装和启动速度也更快。

如果使用以上方式安装 K3s 出现问题或疑问,或者有其他需求,欢迎大家通过中文论坛进行反馈。

轻松上手 | 使用国内资源安装 K3s 全攻略相关推荐

  1. IBM T60/X60安装操作系统全攻略

    1.bios设置.这一步是针对T60/X60的.开机按f1进入bios,进入configuration,然后在SATA里面将SATA的模式设置成compatibility(兼容模式),默认的是AHCI ...

  2. Longhorn安装使用全攻略(下)(转)

    Longhorn安装使用全攻略(下)(转)[@more@] 微软Windows图形和游戏负责人Lester,在接受Gamespot访问的时候表示,微软下一代操作系统Longhorn将原生支持XNA开发 ...

  3. 树莓派安装RetroPie全攻略

    树莓派安装RetroPie全攻略 前言: RetroPie可以将树莓派变成一台复古游戏机. Retropie是一款运行于Raspbian系统之上的app,安装方式可以是在现有的系统环境中安装Retro ...

  4. Vysor安装使用全攻略

    为什么80%的码农都做不了架构师?>>>    Vysor安装使用全攻略 Vysor 是一款可以免费让你在电脑上控制 Android 手机/平板的软件!它实用性超高,不仅可以将安卓手 ...

  5. mysql中phpmyadmin安装教程_phpMyAdmin 安装教程全攻略

    管理MYSQL数据库的最好工具是PHPmyAdmin,现在最新版本是phpMyAdmin 2.9.0.2,这是一个国际上开源的软件,一直在更新版本,你可以从 http://www.phpmyadmin ...

  6. EndeavourOS安装配置全攻略!

    安装 添加Archlinuxcn软件源 编辑配置 执行下面命令编辑文件: vi /etc/pacman.conf 在文件的末尾添加2行内容: [archlinuxcn] Server = https: ...

  7. ARM7开发板模拟器Skyeye安装设置全攻略

    本文目的:在linux里装Skyeye,用Skyeye模拟ARM7DTMI,运行uClinnux-2.4.x SkyEye可以做什么事情? 1. 通过SkyEye可以帮助促进嵌入式系统的学习,在不需要 ...

  8. Chrome OS安装配置全攻略

    对于Chrome大家应该都不陌生吧,非常好用的一款浏览器,尤其是强大的同步功能,对于我这种经常游离于各种电脑之间的人来说特别方便.而Chrome OS则是把Chrome做到了极致:Google觉得wi ...

  9. Typora安装使用全攻略(2022/07/06)

    一款 Markdown 编辑器和阅读器 风格极简 / 多种主题 / 支持 macOS,Windows 及 Linux 实时预览 / 图片与文字 / 代码块 / 数学公式 / 图表 目录大纲 / 文件管 ...

最新文章

  1. python 列表表达式 if_python中if else如何判断表达式成立?
  2. Glide @GlideModule 注解使用
  3. 小谈RTMP中AMF3类型的Command message
  4. webrtc 和 rtp 协议
  5. 云服务厂商都在推荐轻量级的存储队列服务,用来取代原有的比较重的消息队列服务...
  6. iPhone的mysql客户端_苹果系统Sequel Pro—MySQL客户端工具一个大坑
  7. VB/VBA的浮点数结构
  8. 手机版kali Linux教程(质量高)
  9. 如何修改pdf文件内容
  10. sass-ihrm项目-系统用户权限设计概述-部门微服务、部门前端
  11. bzoj 3437: 小P的牧场
  12. Newkirk effect and Morton effect
  13. json解析教程(1)程序员不得不掌握的数据格式json
  14. Requirement already satisfied问题
  15. H3C MSR 2600-10 Winet 交换机consol口设置
  16. 计算机作业攒机单,计算机攒机作业.docx
  17. TCP BBR Startup gain计算总结和Startup失速问题
  18. Three.js光源梳理3——平行光(DirectionalLight)
  19. 动态使用element-plus 的图标
  20. 正确率/精度(precision),召回率(recall),F1-score,ROC 曲线,AUC值

热门文章

  1. 2-1课:万事的抽象:控制流程
  2. 软考信息安全工程师笔记(第二章--密码学基础与应用)
  3. crazygames一个神奇的网站
  4. EMNLP2021 | DeepBlueAI团队少量数据关系抽取论文被录用
  5. 笔记本电脑,电池/电源适配器建议使用方式及疑难解答
  6. 一粒云盘v2.4版本更新
  7. 迷茫与焦虑---是世界观,价值观,人生观,人格品行的形成
  8. 成功职业指导:我适合往管理方向发展吗?
  9. 控制台推箱子小游戏的实现
  10. Windows7安装IIS