当我们的服务器处在一个纯内网环境的时候,我们可以通过sealos来实现离线部署k8s 但是一些服务的镜像是拉不下来的,特别的,前期没有部署harbor和部署harbor的时候,我们可以将镜像提前打包安装,甚至于是直接部署查看缺省的镜像再上传
通过本地进行一些打包,以部署kubesphere 为例,这是他的最小安装教程:
在 Kubernetes 上最小化安装 KubeSphere
通过yaml文件我们知道,kubesphere/ks-installer是必要的,当然installer可能会下一些崽,我们可以之后再来上传
docker pull kubesphere/ks-installer:v3.2.1
docker save -o 1.tar kubesphere/ks-installer:v3.2.1
这是我们的第一步,简单的用shell脚本改写为:
rm -rf ./*.tar
inum=1
for i in $*
do
echo start pull
for j in {1..5}
do
#docker pull kubesphere/ks-installer:v3.2.1
docker pull $i
if [ "$?" = "0" ]
then
break
fi
echo try $j
done
docker save -o $inum.tar $i
if [ "$?" != "0" ]
then
echo falseWrite
exit
fi
docker rmi $i
((inum++))
done
exec pull.sh
至于为什么添加失败后的重试,在没有更换国内源的情况下有不错的效果
同时唤出pull的脚本
通过scp将tar包推送到服务端
那么推送到服务器端之后我们需要做些什么
ctr image import可以导入镜像,但这里需要引入一个ctr独有的特性,名称空间
这个名称空间不是k8s的那个概念,但是k8s确实没有用它默认的名称空间
通过
ctr ns ls
可以看到 k8s 用的k8s.io
那么这个shell 的后半段也算完成了:
scp *.tar name@host:~/image
ssh name@host << eeooff
cd image
ctr -n=k8s.io image import *.tar
rm -rf *
exit
eeooff
评论
还没有任何评论,你来说两句吧!