k3s离线安装的四种方式
离线安装的重点在于K3s 依赖的镜像部分,因为 K3s 的"安装脚本"和"二进制文件"只需要下载到对应目录,然后赋予相应的权限即可,非常简单。但K3s 依赖的镜像的安装方式取决于你使用的是手动部署镜像还是私有镜像仓库,也取决于容器运行时使用的是containerd还是docker。
针对不同的组合形式,可以分为以下几种形式来实现离线安装:
- Containerd + 手动部署镜像方式
- Docker + 手动部署镜像方式
- Containerd + 私有镜像仓库方式
- Docker + 私有镜像仓库方式
环境准备
关闭centos7的防火墙
systemctl stop firewalld
systemctl disable firewalld
安装containerd
yum install -y yum-utils
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
yum install containerd -y
准备安装文件
- K3s 的安装脚本
- K3s 的二进制文件
- K3s 依赖的镜像
以上三个组件都可以通过K3s Release页面(https://github.com/k3s-io/k3s/releases)下载,如果在国内使用,推荐从 http://mirror.cnrancher.com 获得这些组件。
Containerd + 手动部署镜像方式
如果你使用的容器运行时为containerd,在启动 K3s 时,它会检查/var/lib/rancher/k3s/agent/images/是否存在可用的镜像压缩包,如果存在,就将该镜像导入到containerd 镜像列表中。所以我们只需要下载 K3s 依赖的镜像到/var/lib/rancher/k3s/agent/images/目录,然后启动 K3s 即可。
- 导入镜像到 containerd 镜像列表
sudo mkdir -p /var/lib/rancher/k3s/agent/images/
sudo cp /root/k3s-airgap-images-amd64.tar /var/lib/rancher/k3s/agent/images/
- 将 K3s 安装脚本和 K3s 二进制文件移动到对应目录并授予可执行权限
sudo chmod a+x /root/k3s /root/k3s-install.sh
sudo cp /root/k3s /usr/local/bin/
- 安装 K3s
INSTALL_K3S_SKIP_DOWNLOAD=true /root/k3s-install.sh
此时会报错,解决方式如下:
yum install -y container-selinux selinux-policy-base
yum install -y https://rpm.rancher.io/k3s/stable/common/centos/7/noarch/k3s-selinux-0.2-1.el7_8.noarch.rpm
稍等片刻,即可查看到 K3s 已经成功启动:
[root@k3s .kube]# crictl images
IMAGE TAG IMAGE ID SIZE
docker.io/rancher/coredns-coredns 1.6.9 4e797b3234604 43.3MB
docker.io/rancher/klipper-helm v0.3.0 5c7bd28900147 148MB
docker.io/rancher/klipper-lb v0.1.2 897ce3c5fc8ff 6.46MB
docker.io/rancher/library-busybox 1.31.1 1c35c44120825 1.44MB
docker.io/rancher/library-traefik 1.7.19 aa764f7db3051 86.6MB
docker.io/rancher/local-path-provisioner v0.0.14 e422121c9c5f9 42MB
docker.io/rancher/metrics-server v0.3.6 9dd718864ce61 41.2MB
docker.io/rancher/pause 3.1 da86e6ba6ca19 746kB
[root@k3s .kube]# kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-66c464876b-5zvf7 1/1 Running 0 43m
kube-system local-path-provisioner-7ff9579c6-9t9n5 1/1 Running 7 43m
kube-system metrics-server-7b4f8b595-wqvr7 1/1 Running 7 43m
kube-system helm-install-traefik-w2mdk 0/1 Completed 7 43m
kube-system svclb-traefik-zmqwl 2/2 Running 0 31m
kube-system traefik-5dd496474-ncnbk 1/1 Running 0 31m
参考资料:
一文搞定全场景K3s离线安装