一、背景

在专网情况下,你是无法下载K8S相关的软件包及镜像,这个时候你可能需要提前下载好,那么针对这种情况,如何下载指定版本的K8S相关的软件包及镜像呢?

这里以ubuntu 20.04系统为例,通过ctr工具,下载v1.25.8版本的软件包及镜像


二、操作步骤

1、安装kube三件套

root@ecs-98be:~# apt-get update 
root@ecs-98be:~# apt install -y apt-transport-https gnupg gnupg2 gnupg1 curl lsb-release
root@ecs-98be:~# curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add - 
root@ecs-98be:~# cat <<EOF >/etc/apt/sources.list.d/kubernetes.list
deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main
EOF
root@ecs-98be:~# apt-get update
root@ecs-98be:~# apt-get install -y kubelet=1.25.8-00 kubeadm=1.25.8-00 kubectl=1.25.8-00

如果只是下载不安装,请用如下命令

root@ecs-98be:~# apt-get -d install kubelet=1.25.8-00 kubeadm=1.25.8-00 kubectl=1.25.8-00

2、安装containerd

root@ecs-98be:~# apt install containerd
root@ecs-98be:~# systemctl start containerd
root@ecs-98be:~# mkdir -p /etc/containerd/
root@ecs-98be:~# containerd config default > /etc/containerd/config.toml
root@ecs-98be:~# sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml
root@ecs-98be:~# systemctl restart containerd

3、查看需要下载的镜像

root@ecs-98be:~# kubeadm config images list
registry.k8s.io/kube-apiserver:v1.25.8
registry.k8s.io/kube-controller-manager:v1.25.8
registry.k8s.io/kube-scheduler:v1.25.8
registry.k8s.io/kube-proxy:v1.25.8
registry.k8s.io/pause:3.8
registry.k8s.io/etcd:3.5.6-0
registry.k8s.io/coredns/coredns:v1.9.3

4、下载相关镜像并打包成tar.gz格式

#!/bin/bash

k8s_version=v1.25.8
pause_version=3.8
etcd_version=3.5.6-0
coredns_version=v1.9.3

ctr i pull --all-platforms registry.k8s.io/kube-apiserver:${k8s_version}
ctr i pull --all-platforms registry.k8s.io/kube-controller-manager:${k8s_version}
ctr i pull --all-platforms registry.k8s.io/kube-scheduler:${k8s_version}
ctr i pull --all-platforms registry.k8s.io/kube-proxy:${k8s_version}
ctr i pull --all-platforms registry.k8s.io/pause:${pause_version}
ctr i pull --all-platforms registry.k8s.io/etcd:${etcd_version}
ctr i pull --all-platforms registry.k8s.io/coredns/coredns:${coredns_version}

ctr image export --all-platforms kube-apiserver-${k8s_version}.tar.gz registry.k8s.io/kube-apiserver:${k8s_version}
ctr image export --all-platforms kube-controller-manager-${k8s_version}.tar.gz registry.k8s.io/kube-controller-manager:${k8s_version}
ctr image export --all-platforms kube-scheduler-${k8s_version}.tar.gz registry.k8s.io/kube-scheduler:${k8s_version}
ctr image export --all-platforms kube-proxy-${k8s_version}.tar.gz registry.k8s.io/kube-proxy:${k8s_version}
ctr image export --all-platforms pause-${pause_version}.tar.gz registry.k8s.io/pause:${pause_version}
ctr image export --all-platforms etcd-3.5.6.tar.gz registry.k8s.io/etcd:${etcd_version}
ctr image export --all-platforms coredns-${coredns_version}.tar.gz registry.k8s.io/coredns/coredns:${coredns_version}

5、下载calico.yml文件及镜像

K8S版本对应calico版本

calico 3.26版本对应K8S版本,如下图所示:

1、支持系统
RedHat Linux 7
CentOS 7
Flatcar Container Linux
Fedora CoreOS
Ubuntu 18.04
Debian 8

2、支持k8s版本
v1.24
v1.25
v1.26
v1.27

3、下载calico文件
root@ecs-98be:~# wget https://github.com/projectcalico/calico/blob/v3.26.1/manifests/calico.yaml
root@ecs-98be:~# grep "image:" calico.yaml 
          image: docker.io/calico/cni:v3.26.1
          image: docker.io/calico/cni:v3.26.1
          image: docker.io/calico/node:v3.26.1
          image: docker.io/calico/node:v3.26.1
          image: docker.io/calico/kube-controllers:v3.26.1

4、执行下载镜像的脚本并打包成tar.gz格式
root@ecs-98be:~# cat get_images.sh
#!/bin/bash
ctr i pull --all-platforms docker.io/calico/cni:v3.26.1
ctr i pull --all-platforms docker.io/calico/node:v3.26.1
ctr i pull --all-platforms docker.io/calico/kube-controllers:v3.26.1
ctr image export --all-platforms cni-v3.26.1.tar.gz docker.io/calico/cni:v3.26.1
ctr image export --all-platforms node-v3.26.1.tar.gz docker.io/calico/node:v3.26.1
ctr image export --all-platforms kube-controllers-v3.26.1.tar.gz docker.io/calico/kube-controllers:v3.26.1

calico 3.25版本对应K8S版本,如下图所示:

1、支持系统
RedHat Linux 7
CentOS 7
CoreOS Container Linux stable
Ubuntu 16.04
Debian 8

2、支持k8s版本
v1.23
v1.24
v1.25
v1.26

3、下载calico文件
root@ecs-98be:~# wget https://docs.tigera.io/archive/v3.25/manifests/calico.yaml
root@ecs-98be:~# grep "image:" calico.yaml 
          image: docker.io/calico/cni:v3.25.0
          image: docker.io/calico/cni:v3.25.0
          image: docker.io/calico/node:v3.25.0
          image: docker.io/calico/node:v3.25.0
          image: docker.io/calico/kube-controllers:v3.25.0

4、执行下载镜像的脚本并打包成tar.gz格式
root@ecs-98be:~# cat get_images.sh
#!/bin/bash
ctr i pull --all-platforms docker.io/calico/cni:v3.25.0
ctr i pull --all-platforms docker.io/calico/node:v3.25.0
ctr i pull --all-platforms docker.io/calico/kube-controllers:v3.25.0
ctr image export --all-platforms cni-v3.25.0.tar.gz docker.io/calico/cni:v3.25.0
ctr image export --all-platforms node-v3.25.0.tar.gz docker.io/calico/node:v3.25.0 
ctr image export --all-platforms kube-controllers-v3.25.0.tar.gz docker.io/calico/kube-controllers:v3.25.0

calico 3.24版本对应K8S版本,如下图所示:

1、支持系统
RedHat Linux 7
CentOS 7
CoreOS Container Linux stable
Ubuntu 16.04
Debian 8

2、支持k8s版本
v1.22
v1.23
v1.24
v1.25

3、下载calico文件
root@lolaage-virtual-machine:~# wget https://docs.tigera.io/archive/v3.24/manifests/calico.yaml

calico 3.23版本对应K8S版本,如下图所示:

1、支持系统
RedHat Linux 7
CentOS 7
CoreOS Container Linux stable
Ubuntu 16.04
Debian 8

2、支持k8s版本
v1.21
v1.22
v1.23

3、下载calico文件
root@lolaage-virtual-machine:~# wget https://docs.tigera.io/archive/v3.23/manifests/calico.yaml

calico 3.22版本对应K8S版本,如下图所示:

1、支持系统
RedHat Linux 7
CentOS 7
CoreOS Container Linux stable
Ubuntu 16.04
Debian 8

2、支持k8s版本
v1.21
v1.22
v1.23

3、下载calico文件
root@lolaage-virtual-machine:~# wget https://docs.tigera.io/archive/v3.22/manifests/calico.yaml

calico 3.21版本对应K8S版本,如下图所示:

1、支持系统
RedHat Linux 7
CentOS 7
CoreOS Container Linux stable
Ubuntu 16.04
Debian 8

2、支持k8s版本
v1.20
v1.21
v1.22

3、下载calico文件
root@lolaage-virtual-machine:~# wget https://docs.tigera.io/archive/v3.21/manifests/calico.yaml

calico 3.20版本对应K8S版本,如下图所示:

1、支持系统
RedHat Linux 7
CentOS 7
CoreOS Container Linux stable
Ubuntu 16.04
Debian 8

2、支持k8s版本
v1.19
v1.20
v1.21

3、下载calico文件
root@lolaage-virtual-machine:~# wget https://docs.tigera.io/archive/v3.20/manifests/calico.yaml

calico 3.19版本对应K8S版本,如下图所示:

1、支持系统
RedHat Linux 7
CentOS 7
CoreOS Container Linux stable
Ubuntu 16.04
Debian 8

2、支持k8s版本
v1.19
v1.20
v1.21

3、下载calico文件
root@lolaage-virtual-machine:~# wget https://docs.tigera.io/archive/v3.19/manifests/calico.yaml

calico 3.18版本对应K8S版本,如下图所示:

1、支持系统
RedHat Linux 7
CentOS 7
CoreOS Container Linux stable
Ubuntu 16.04
Debian 8

2、支持k8s版本
1.18
1.19
1.20

3、下载calico文件
root@lolaage-virtual-machine:~# wget https://docs.tigera.io/archive/v3.18/manifests/calico.yaml

总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:《K8S集群运维指南》

Logo

开源、云原生的融合云平台

更多推荐