使用kubeadm离线下载k8s安装镜像

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用kubeadm离线下载k8s安装镜像相关的知识,希望对你有一定的参考价值。

1、说明
2、系统及软件版本
3、安装kubeadm
4、离线镜像
5、打包镜像
6、导入镜像


1、说明
由于使用kubeadm安装 k8s 时需要从 k8s.gcr.io 拉取镜像,但是该网站被屏蔽了,国内没法正常访问导致无法正常进行k8s的安装。
这里介绍从阿里云镜像平台拉取镜像并重新打tag的方式来绕过对 k8s.gcr.io 的访问。

2、系统及软件版本

# cat /etc/redhat-release 
CentOS Linux release 7.7.1908 (Core)
# docker version
Client: Docker Engine - Community
 Version:           19.03.8
 API version:       1.40
 Go version:        go1.12.17
 Git commit:        afacb8b
 Built:             Wed Mar 11 01:27:04 2020
 OS/Arch:           linux/amd64
 Experimental:      false

3、安装kubeadm
(1)配置kubeadm源

# cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

(2)安装kubeadm

# yum -y install kubeadm kubectl kubelet
# systemctl enable kubelet.service

(3)获取镜像列表

# kubeadm config images list
k8s.gcr.io/kube-apiserver:v1.18.0
k8s.gcr.io/kube-controller-manager:v1.18.0
k8s.gcr.io/kube-scheduler:v1.18.0
k8s.gcr.io/kube-proxy:v1.18.0
k8s.gcr.io/pause:3.2
k8s.gcr.io/etcd:3.4.3-0
k8s.gcr.io/coredns:1.6.7

4、离线镜像
(1)编写脚本,从阿里云下载镜像

# cat pull-images.sh 
#!/bin/bash
images=(
    kube-apiserver:v1.18.0
    kube-controller-manager:v1.18.0
    kube-scheduler:v1.18.0
    kube-proxy:v1.18.0
    pause:3.2
    etcd:3.4.3-0
    coredns:1.6.7
)
for imageName in ${images[@]};
do
    docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
    docker tag registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName} k8s.gcr.io/${imageName}
    docker rmi registry.cn-hangzhou.aliyuncs.com/google_containers/${imageName}
done

(2)查看下载镜像

# docker images
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kube-proxy                v1.18.0             43940c34f24f        7 days ago          117MB
k8s.gcr.io/kube-apiserver            v1.18.0             74060cea7f70        7 days ago          173MB
k8s.gcr.io/kube-controller-manager   v1.18.0             d3e55153f52f        7 days ago          162MB
k8s.gcr.io/kube-scheduler            v1.18.0             a31f78c7c8ce        7 days ago          95.3MB
k8s.gcr.io/pause                     3.2                 80d28bedfe5d        6 weeks ago         683kB
k8s.gcr.io/coredns                   1.6.7               67da37a9a360        2 months ago        43.8MB
k8s.gcr.io/etcd                      3.4.3-0             303ce5db0e90        5 months ago        288MB

5、打包镜像
(1)编写脚本打包镜像

# cat save-images.sh 
#!/bin/bash
images=(
    kube-apiserver:v1.18.0
    kube-controller-manager:v1.18.0
    kube-scheduler:v1.18.0
    kube-proxy:v1.18.0
    pause:3.2
    etcd:3.4.3-0
    coredns:1.6.7
)
for imageName in ${images[@]};
do
    docker save -o `echo ${imageName}|awk -F ‘:‘ ‘{print $1}‘`.tar k8s.gcr.io/${imageName}
done

# tar czvf kubeadm-images-1.18.0.tar.gz *.tar

6、导入镜像
(1)在安装节点分别导入离线镜像或者放入私有仓库使用

# cat load-image.sh 
#!/bin/bash
ls /root/kubeadm-images-1.18.0 > /root/images-list.txt
cd /root/kubeadm-images-1.18.0
for i in $(cat /root/images-list.txt)
do
     docker load -i $i
done

(2)导入镜像
# ./load-image.sh

以上是关于使用kubeadm离线下载k8s安装镜像的主要内容,如果未能解决你的问题,请参考以下文章

centos7 kubeadm部署单机k8s

K8s集群离线安装-kubeadm-详细篇

使用 Kubeadm 部署 K8S安装

使用kubeadm部署k8s集群00-缓存gcr.io镜像

04—K8S的kubeadm安装+dashboard 部署+部署harbor镜像仓库

04—K8S的kubeadm安装+dashboard 部署+部署harbor镜像仓库