云网牛站
所在位置:首页 > Linux云服务器 > 手动拉出Kubernetes kubeadm使用的容器映像

手动拉出Kubernetes kubeadm使用的容器映像

2020-01-09 10:27:41作者:戴进稿源:云网牛站

使用kubeadmin设置Kubernetes集群时,使用init命令选项来设置Kubernetes控制平面,Kubernetes有许多容器镜像,将在引导集群时使用。在无法可靠访问Internet的环境中,或者当您使用代理服务器时您的Internet访问受到限制时,或者您的Kubernetes节点根本没有Internet访问时,可以预拉要使用的容器映像是有意义的。

 

先决操作

首先,您需要打印kubeadm将使用的图像列表(在安装了kubeadm的计算机上):

$ kubeadm config images list

k8s.gcr.io/kube-apiserver:v1.17.0

k8s.gcr.io/kube-controller-manager:v1.17.0

k8s.gcr.io/kube-scheduler:v1.17.0

k8s.gcr.io/kube-proxy:v1.17.0

k8s.gcr.io/pause:3.1

k8s.gcr.io/etcd:3.4.3-0

k8s.gcr.io/coredns:1.6.5

使用的默认注册表是k8s.gcr.io,您可以选择使用其他注册表,例如使用docker:

$ kubeadm config images list --image-repository docker.io

docker.io/kube-apiserver:v1.17.0

docker.io/kube-controller-manager:v1.17.0

docker.io/kube-scheduler:v1.17.0

docker.io/kube-proxy:v1.17.0

docker.io/pause:3.1

docker.io/etcd:3.4.3-0

docker.io/coredns:1.6.5

这将使用Kubernetes的最新稳定版本,您还可以指定要使用的Kubernetes版本,例如stable、latest:

$ kubeadm config images list --kubernetes-version latest

 

使用kubeadm命令提取容器图像

如果您的Kubernetes机器可以访问Internet来提取Container图像,则可以使用kubeadm命令预拉所需的图像。

从默认注册表中提取:k8s.gcr.io:

# kubeadm config images pull

从其他注册表中提取,例如docker.io或内部:

# kubeadm config images pull --image-repository docker.io

对于docker,您可能需要登录才能拉出图像:

# docker login

Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.

Username: jmutai

Password: 

WARNING! Your password will be stored unencrypted in /root/.docker/config.json.

Configure a credential helper to remove this warning. See

https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

请注意,如果更改容器存储库,则在运行init时需要执行相同的操作:

# kubeadm init --image-repository <registry> <options>

 

使用docker/podman命令提取容器映像

对于无法访问Internet的Kubernetes节点,您需要从本地计算机下载图像并将其上传到Kubernetes节点。

1、列出要在kubeadm的机器上使用的图像:

kubeadm config images list

2、在本地下载图像:

for image in k8s.gcr.io/kube-apiserver:v1.17.0 \

 k8s.gcr.io/kube-controller-manager:v1.17.0 \

 k8s.gcr.io/kube-scheduler:v1.17.0 \

 k8s.gcr.io/kube-proxy:v1.17.0 \

 k8s.gcr.io/pause:3.1 \

 k8s.gcr.io/etcd:3.4.3-0 \

 k8s.gcr.io/coredns:1.6.5; do

docker pull $image;

done

如果使用podman(安装参考:在CentOS 8/RHEL 8系统上安装和使用Podman的方法):

for image in k8s.gcr.io/kube-apiserver:v1.17.0 \

 k8s.gcr.io/kube-controller-manager:v1.17.0 \

 k8s.gcr.io/kube-scheduler:v1.17.0 \

 k8s.gcr.io/kube-proxy:v1.17.0 \

 k8s.gcr.io/pause:3.1 \

 k8s.gcr.io/etcd:3.4.3-0 \

 k8s.gcr.io/coredns:1.6.5; do

docker pull $image;

done

3、将图像另存为.tar文件

# 示例

mkdir ~/k8s-images

docker save k8s.gcr.io/kube-apiserver:v1.17.0 > ~/k8s-images/kube-apiserver.tar

# 对所有其他图像执行相同的操作

4、将保存的图像上传到Kubernetes节点

rsync -av ~/k8s-images/* k8s-node:~/k8s-images/

5、将.tar映像文件导入Docker:

cd k8s-images/

ls * | while read image; do docker load < $image; done

这是样本负载输出,如下图:

手动拉出Kubernetes kubeadm使用的容器映像

确认图像已导入:

# docker images

手动拉出Kubernetes kubeadm使用的容器映像

然后,您可以使用本地添加的映像继续安装Kubernetes,根据您使用的CNI,如果进行脱机安装,则可能还需要提前提取其映像。

 

相关主题

Ubuntu 16.04上使用Kubeadm快速部署Kubernetes

精选文章
热门文章