k8s各版本离线部署附件下载方法
准备
随便找一台能连接外网得服务器
镜像包获取
集群部署所需要的kubelet、kubeadm、kubectl包下载
#docker 安装
yum install -y yum-utils device-mapper-persistent-data lvm2 bash-completion
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io -y
#k8s相关安装
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
#若想选择安装指定的版本,可以yum list kubelet --showduplicate查找对应版本,不指定则安装当前最新版本
yum install -y kubelet-1.20.2 kubeadm-1.20.2 kubectl-1.20.2
同时k8s集群启动需要docker image,所以我们需要在本地机器上将相关的镜像下载之后,传到我们的服务器上
#启动docker
mkdir -p /etc/docker
cat <<EOF >/etc/docker/daemon.json
{
"bridge": "none",
"iptables": false,
"exec-opts":
[
"native.cgroupdriver=systemd"
],
"data-root": "/opt/docker",
"live-restore": true,
"log-driver": "json-file",
"log-opts":
{
"max-size": "100m"
},
"registry-mirrors":
[
"https://lje6zxpk.mirror.aliyuncs.com",
"https://lms7sxqp.mirror.aliyuncs.com",
"https://registry.docker-cn.com"
]
}
EOF
systemctl --enable now docker
#使用aliyun的镜像站拉取镜像,通过脚本的方式进行拉取
vim images.sh
#!/bin/bash
url=registry.cn-hangzhou.aliyuncs.com/google_containers
version=v1.20.2
images=(`kubeadm config images list --kubernetes-version=$version|awk -F '/' '{print $2}'`)
for imagename in ${images[@]} ; do
docker pull $url/$imagename
docker tag $url/$imagename k8s.gcr.io/$imagename
docker rmi -f $url/$imagename
done
#给脚本赋权限
chmod +x images.sh
#执行脚本
./ images.sh
#执行结束后,查看相关的镜像:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
k8s.gcr.io/kube-proxy v1.20.2 43154ddb57a8 2 weeks ago 118MB
k8s.gcr.io/kube-apiserver v1.20.2 a8c2fdb8bf76 2 weeks ago 122MB
k8s.gcr.io/kube-controller-manager v1.20.2 a27166429d98 2 weeks ago 116MB
k8s.gcr.io/kube-scheduler v1.20.2 ed2c44fbdd78 2 weeks ago 46.4MB
k8s.gcr.io/etcd 3.4.13-0 0369cf4303ff 5 months ago 253MB
k8s.gcr.io/coredns 1.7.0 bfe3a36ebd25 7 months ago 45.2MB
k8s.gcr.io/pause 3.2 80d28bedfe5d 11 months ago 683kB
将下载好的docker images 都打包,传到相关的服务器
#打包docker镜像(一定要使用tag的方式进行打包,若用id 进行打包,导出的时候tag信息是空)
docker save -o kube-proxy.tar k8s.gcr.io/kube-proxy:v1.20.2
docker save -o kube-apiserver.tar k8s.gcr.io/kube-apiserver:v1.20.2
docker save -o kube-controller-manager.tar kube-controller-manager:v1.20.2
docker save -o kube-controller-manager.tar k8s.gcr.io/kube-controller-manager:v1.20.2
docker save -o kube-scheduler.tar k8s.gcr.io/kube-scheduler:v1.20.2
docker save -o flannel.tar quay.io/coreos/flannel:v0.13.1-rc1
需要得镜像就制作完成,复制到其他服务器上通过如下命令加载即可
docker load < xxxx.tar
二进制rpm获取
在上一步【镜像包获取】第一小节获取执行的“yum install -y kubelet-1.20.2 kubeadm-1.20.2 kubectl-1.20.2”命令,换成如下命令即可:
yum install --downloadonly --downloaddir ./rpm kubelet-1.20.2 kubeadm-1.20.2 kubectl-1.20.2
会在当前目录下生成rpm目录,里面存放的既是需要的文件
注:如果没有cri-tools等文件(本次测试的k8s1.20.2版本里没有,测试的1.16/1.18/1.21都没问题),执行该rpm创建k8s环境的时候可能会提示缺少cri-tools>1.13的类似错误,解决办法:同样方法,可以去获取较老版本的rpm,如k8s1.16.0、k8s1.18.6等的rpm文件,复制过来即可
二进制文件获取完成,复制到其他服务器待用
K8s一键安装方式
可参考本人另一篇随笔《离线搭建K8s1.21.2集群》,该方案通用目前所有主流k8s版本部署