By烟花易冷

轻量级 Kubernetes 发行版 k3s 在国内 VPS 的部署记录
2020-02-12

比 k8s 少了 5s 的 k3s 是一个轻量级的 k8s 发行版,因为占用资源比较低而闻名。至于为何占用资源小及其他特性在官方 github 已有介绍,这里不重复阐述。本文主要围绕在国内VPS(以阿里云为例)安装 k3s 并使用国内镜像加速 containerd 而展开,理论上适用于任何连接 github、docker hub 速度缓慢的环境。

安装 k3s

结合官方文档的描述,k3s 仅需要一个二进制可执行文件即可运行,但是为了做好“软链”等一系列操作,我仍选择从官方的安装脚本入手。以下安装过程便是阅读安装脚本后发掘的。

1.从 k3s 的 github 仓库下载最新 release 的可执行文件,并通过 sftp 等方式上传到服务器的 /usr/local/bin 目录下,并赋予执行权限

chmod +x /usr/local/bin/k3s

完成上述步骤后,在 VPS 执行 k3s -v 将会得到如图的正确显示结果。

2.此时将仓库中的 install.sh 文件下载至 vps,若将当前 VPS 作为 master 则运行

sh install.sh

若将当前 VPS 作为 worker 则执行

K3S_URL=https://主节点ip:6443 K3S_TOKEN=主节点token sh install.sh

此时安装脚本将会自动和 github 上最新 release 版本 md5 做对比,确认一致后便自动建立软链。安装成功后可以正常使用 kubectl、crictl、ctr 等命令,这里可自行进行验证。

使用国内镜像源加速 containerd

k3s 与常规 k8s 发行版不同之处中,有一处便是直接采用了 containerd 而不是 docker,这是一个容器标准化后的产物。值得一提的是我们通常所执行的 docker 命令是指 docker client,我们将通过它操作 docker daemon,而 docker daemon 则是与 contained 进行交互而实现最终的操作。在 k3s 安装完成后我们可以使用 crictl 去实现类似 docker 的操作。

k3s 继承的 containerd 配置文件位于 /var/lib/rancher/k3s/agent/etc/containerd 想要进行修改必须复制出一份,并命名为 config.toml.tmpl ,在这里我们需要对其镜像注册中心地址进行修改,结果如图:

[plugins.cri.registry.mirrors]
  [plugins.cri.registry.mirrors."docker.io"]
    endpoint = ["https://docker.mirrors.ustc.edu.cn"]

修改完成后,重启 k3s 使配置生效。

systemctl restart k3s

使用 crictl 验证。

crictl info

后记(吐槽)

最近无论是阿里云还是腾讯云,访问 Github 速度真的是慢到令人哭泣 QAQ,鬼知道这几天为了部署成功,我折腾了多久

以下是本次折腾的参考资料,关于 docker daemon、containerd、shim、runc 的关系,有兴趣的朋友不妨深入研究。