k3s 是一个实现轻量级和小型化 k8s
集群的软件,支持安装脚本一键安装,有点类似 k8s
官方提供的 minikube,但k3s
更接近原生的k8s
集群,是快速搭建k8s
开发学习环境的首选,缺点是只支持Linux环境。
Slogan:
k3s - Kubernetes, but small and simple
由于 k3s
的服务器在国外,我们通过一键安装脚本安装时有时速度会特别慢,或者失败的情况,这时我们可以选择离线安装的方式。
- 从 https://github.com/k3s-io/k3s/releases 下载对应架构的
k3s-airgap-images-$ARCH.tar
的以.tar
为结尾的镜像文件并放到/var/lib/rancher/k3s/agent/images/
目录下,这里以x64
为例,下同:
wget https://github.com/k3s-io/k3s/releases/download/v1.27.2%2Bk3s1/k3s-airgap-images-amd64.tar
mkdir -p /var/lib/rancher/k3s/agent/images/
sudo mv ./k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
- 从 https://github.com/k3s-io/k3s/releases 下载相同版本的
k3s
可执行文件(k3s
或k3s-$ARCH
)放到/usr/local/bin
目录下,
wget https://github.com/k3s-io/k3s/releases/download/v1.27.2%2Bk3s1/k3s
file k3s
k3s: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=37Ad6no39kUYnYHPTmTm/PDaf_deq_x7o2Ts4z4ZB/2F-DQmkwTgBxGiVPpvtG/GkKhUgT2wO4C0kW362zN, stripped
sudo mv k3s /usr/local/bin
sudo chmod +x /usr/local/bin/k3s
- 从 https://get.k3s.io/ 获取安装脚本。
curl -SL -o install.sh https://get.k3s.io/
sudo chmod +x install.sh
- 添加路由
ip link add dummy0 type dummy
ip link set dummy0 up
ip addr add 169.254.255.254/31 dev dummy0
ip route add default via 169.254.255.255 dev dummy0 metric 1000
- 执行安装脚本(设置
INSTALL_K3S_SKIP_DOWNLOAD
环境变量为 true 以执行离线安装)。
INSTALL_K3S_SKIP_DOWNLOAD=true ./install.sh
- 默认的单节点,如有需要,可以向集群添加更多节点,在其他机器上重复相同的操作,最后一步改成如下命令:
INSTALL_K3S_SKIP_DOWNLOAD=true K3S_URL=https://<SERVER_IP>:6443 K3S_TOKEN=<YOUR_TOKEN> ./install.sh
token 存储在 /var/lib/rancher/k3s/server/token
文件中。
- 设置国内docker镜像仓库。
k3s
默认使用containerd
作为容器运行时, k3s
可以很方便的设置容器镜像的拉取仓库,新建文件/etc/rancher/k3s/registries.yaml
并写入以下内容,然后重启 k3s
服务。
mirrors:
docker.io:
endpoint:
- "https://qbd2mtyh.mirror.aliyuncs.com"
- "https://mirror.ccs.tencentyun.com"
- "https://hub-mirror.c.163.com"
重启k3s
可以使用命令 systemctl restart k3s.service
$ sudo systemctl restart k3s.service
$ crictl info | grep 'docker.io' -A 10
"docker.io": {
"endpoint": [
"https://qbd2mtyh.mirror.aliyuncs.com",
"https://mirror.ccs.tencentyun.com",
"https://hub-mirror.c.163.com"
],
"rewrite": null
}
},
"configs": null,
"auths": null,
crictl info
输出能看到以上信息说明设置成功。