相信很多朋友在学习安装k8s的过程中,在安装到calico网络组件的时候或多或少都会因为国内外网络的问题一直卡在pull镜像的阶段无法完成安装,本篇文章提供一种离线安装calico的方法供大家交流学习。
K8s1.27.3,离线安装calico 3.26.1为例子
1、下载calico离线包
首先去github全局搜索calico,点击进入项目,在Releases下下载自己需要的calico版本的离线包(文章以3.26.1版本为例)。
附上项目链接https://github.com/projectcalico/calico
2、解压calico离线包并将所需文件上传至服务器
我们解压calico的离线包后会得到很多文件,并不是全部需要。
首先将calico.yaml文件上传至服务器。
然后使用cat calico.yaml |grep image:命令查看calico所需的镜像包。
cat calico.yaml |grep image:
这里显示安装calico需要三个镜像,去解压的离线包imgaes文件夹中找到对应的三个离线镜像包文件,这里对应的分别是calico-cni.tar,calico-kube-controllers.tar和calico-node.tar三个离线包,将这三个离线镜像上传至服务器。
3、离线镜像导入containerd的k8s命名空间中
可以使用 ctr namespace ls 命令查看containerd的命名空间。k8s的命名空间为k8s.io
使用containerd的导入镜像命令将calico的离线镜像包导入到k8s的命名空间中
ctr -n k8s.io images import calico-cni.tar
ctr -n k8s.io images import calico-kube-controllers.tar
ctr -n k8s.io images import calico-node.tar
4、安装calico
使用之前上传的calico.yaml文件安装calico,calico.yaml可根据自己的实际需要修改。
kubectl apply -f calico.yaml
至此k8s1.27.3版本的calico安装完成,不同版本的k8s需要不同版本的calico,具体对应版本需自行查询。