手动拉取 Kubernetes kubeadm 使用的容器镜像

本文介绍了如何在互联网访问不可靠或无互联网的环境中使用kubeadm设置Kubernetes集群。首先,你需要列出kubeadm将使用的镜像,然后可以选择或指定镜像仓库。如果网络受限,可以从本地下载所需镜像,通过.tar文件在目标节点导入并预加载。该过程包括使用docker或podman拉取、保存、上传和加载镜像,确保集群安装顺利进行。
摘要由CSDN通过智能技术生成

使用kubeadmin设置 Kubernetes 集群时,会使用一个init命令选项来设置 Kubernetes 控制平面。Kubernetes 有许多将在引导集群时使用的容器镜像。

在互联网访问不可靠的环境中,或者当您使用代理服务器时互联网访问受限,或者如果您的 Kubernetes 节点根本没有互联网访问权限,预拉要使用的容器镜像是有意义的.

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

<span style="background-color:#051e30"><span style="color:#ffffff"><code>$ <strong>sudo kubeadm config images list</strong>
k8s.gcr.io/kube-apiserver:v1.22.2
k8s.gcr.io/kube-controller-manager:v1.22.2
k8s.gcr.io/kube-scheduler:v1.22.2
k8s.gcr.io/kube-proxy:v1.22.2
k8s.gcr.io/pause:3.5
k8s.gcr.io/etcd:3.5.0-0
k8s.gcr.io/coredns/coredns:v1.8.4</code></span></span>

使用的默认注册表是k8s.gcr.io,您可以选择使用不同的注册表。例如使用码头工人:

<span style="background-color:#051e30"><span style="color:#ffffff"><code>$<strong> sudo kubeadm config images list --image-repository docker.io</strong>
docker.io/kube-apiserver:v1.22.2
docker.io/kube-controller-manager:v1.22.2
docker.io/kube-scheduler:v1.22.2
docker.io/kube-proxy:v1.22.2
docker.io/pause:3.5
docker.io/etcd:3.5.0-0
docker.io/coredns:v1.8.4</code></span></span>

这将使用最新稳定版本的 Kubernetes。您还可以指定要使用的 Kubernetes 版本,例如stablelatest

<span style="background-color:#051e30"><span style="color:#ffffff"><code>$ sudo kubeadm config images list --kubernetes-version latest</code></span></span>

使用 kubeadm 命令拉取容器镜像

如果您的 Kubernetes 机器可以访问互联网以拉取容器镜像,您可以使用 kubeadm 命令预拉取所需的镜像:

<span style="background-color:#051e30"><span style="color:#ffffff"><code><strong><em>### Pull from default registry: k8s.gcr.io ###
</em></strong>$ sudo kubeadm config images pull

<strong><em>### Pull from a different registry, e.g docker.io or internal ###
</em></strong>$ sudo kubeadm config images pull --image-repository docker.io</code></span></span>

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

<span style="background-color:#051e30"><span style="color:#ffffff"><code>$<strong> sudo docker login</strong>
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</code></span></span>

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

<span style="background-color:#051e30"><span style="color:#ffffff"><code>$ sudo kubeadm init --image-repository <registry> <options></code></span></span>

使用 docker / podman 命令拉取容器镜像

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

  • 使用kubeadm列出要在机器上使用的图像
<span style="background-color:#051e30"><span style="color:#ffffff"><code>sudo kubeadm config images list </code></span></span>
  • 本地下载图片
<span style="background-color:#051e30"><span style="color:#ffffff"><code>for image in k8s.gcr.io/kube-apiserver:v1.22.2 \
  k8s.gcr.io/kube-controller-manager:v1.22.2 \
  k8s.gcr.io/kube-scheduler:v1.22.2 \
  k8s.gcr.io/kube-proxy:v1.22.2 \
  k8s.gcr.io/pause:3.5 \
  k8s.gcr.io/etcd:3.5.0-0 \
  k8s.gcr.io/coredns:1.8.4; do
sudo docker pull $image;
done</code></span></span>

如果使用 podman:

<span style="background-color:#051e30"><span style="color:#ffffff"><code>for image in k8s.gcr.io/kube-apiserver:v1.22.2 \
  k8s.gcr.io/kube-controller-manager:v1.22.2 \
  k8s.gcr.io/kube-scheduler:v1.22.2 \
  k8s.gcr.io/kube-proxy:v1.22.2 \
  k8s.gcr.io/pause:3.5 \
  k8s.gcr.io/etcd:3.5.0-0 \
  k8s.gcr.io/coredns/coredns:v1.8.4; do
sudo docker pull $image;
done</code></span></span>
  • 将图像另存为.tar文件
<span style="background-color:#051e30"><span style="color:#ffffff"><code># Example
mkdir ~/k8s-images
docker save k8s.gcr.io/kube-apiserver:v1.22.2 > ~/k8s-images/kube-apiserver.tar
# Do the same for all other images</code></span></span>
  • 将保存的图像上传到 Kubernetes 节点
<span style="background-color:#051e30"><span style="color:#ffffff"><code>rsync -av ~/k8s-images/* k8s-node:~/k8s-images/</code></span></span>
  • .tar图像文件导入 Docker。
<span style="background-color:#051e30"><span style="color:#ffffff"><code>cd k8s-images/
ls * | while read image; do sudo docker load < $image; done</code></span></span>

这是一个示例负载输出。

<span style="background-color:#051e30"><span style="color:#ffffff"><code># <strong>ls * | while read image; do docker load < $image; done</strong>
225df95e717c: Loading layer [==================================================>]  336.4kB/336.4kB
7c9b0f448297: Loading layer [==================================================>]  41.37MB/41.37MB
Loaded image: k8s.gcr.io/coredns:1.6.5
fe9a8b4f1dcc: Loading layer [==================================================>]  43.87MB/43.87MB
ce04b89b7def: Loading layer [==================================================>]  224.9MB/224.9MB
1b2bc745b46f: Loading layer [==================================================>]  21.22MB/21.22MB
Loaded image: k8s.gcr.io/etcd:3.4.3-0
fc4976bd934b: Loading layer [==================================================>]  53.88MB/53.88MB
f103db1d7ea4: Loading layer [==================================================>]  118.6MB/118.6MB
Loaded image: k8s.gcr.io/kube-apiserver:v1.17.0
01b437934b9d: Loading layer [==================================================>]  108.5MB/108.5MB
Loaded image: k8s.gcr.io/kube-controller-manager:v1.17.0
ac06623e44c6: Loading layer [==================================================>]   42.1MB/42.1MB
Loaded image: k8s.gcr.io/kube-scheduler:v1.17.0
682fbb19de80: Loading layer [==================================================>]  21.06MB/21.06MB
2dc2f2423ad1: Loading layer [==================================================>]  5.168MB/5.168MB
ad9fb2411669: Loading layer [==================================================>]  4.608kB/4.608kB
597151d24476: Loading layer [==================================================>]  8.192kB/8.192kB
0d8d54147a3a: Loading layer [==================================================>]  8.704kB/8.704kB
6bc5ae70fa9e: Loading layer [==================================================>]  37.81MB/37.81MB
Loaded image: k8s.gcr.io/kube-proxy:v1.17.0
e17133b79956: Loading layer [==================================================>]  744.4kB/744.4kB
Loaded image: k8s.gcr.io/pause:3.1</code></span></span>

确认图像已导入:

<span style="background-color:#051e30"><span style="color:#ffffff"><code>[root@k8s-master-01 ~]# <strong>crictl images</strong>
IMAGE                                 TAG                 IMAGE ID            SIZE
docker.io/calico/apiserver            v3.20.1             4e7da027faaa7       53.2MB
docker.io/calico/cni                  v3.20.1             e69ccb66d1b65       146MB
docker.io/calico/kube-controllers     v3.20.1             5df320a38f63a       63.2MB
docker.io/calico/node                 v3.20.1             355c1ee44040b       158MB
docker.io/calico/pod2daemon-flexvol   v3.20.1             55fa5eb71e097       21.8MB
docker.io/calico/typha                v3.20.1             8473ae43d01b8       59.4MB
k8s.gcr.io/coredns/coredns            v1.8.4              8d147537fb7d1       47.7MB
k8s.gcr.io/etcd                       3.5.0-0             0048118155842       296MB
k8s.gcr.io/kube-apiserver             v1.22.2             e64579b7d8862       130MB
k8s.gcr.io/kube-controller-manager    v1.22.2             5425bcbd23c54       123MB
k8s.gcr.io/kube-proxy                 v1.22.2             873127efbc8a7       105MB
k8s.gcr.io/kube-scheduler             v1.22.2             b51ddc1014b04       53.9MB
k8s.gcr.io/pause                      3.2                 80d28bedfe5de       688kB
k8s.gcr.io/pause                      3.5                 ed210e3e4a5ba       690kB
quay.io/tigera/operator               v1.20.3             98e04bee27575       48.2MB</code></span></span>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值