国内无法下载k8s镜像的解决办法

关于通过各种方法下载k8s相关镜像的方法总结如下:

1.使用Azure中国镜像站,目前限制只能“Azure China IP”可用,不再对外提供服务,此路不通。

2.直接使用mirrorgooglecontainers用户同步到DockerHub的镜像。

用户mirrorgooglecontainers在DockerHub上同步了一些相应的google镜像,可以直接使用,当然安全性无法保证。

# 下载mirrorgooglecontainers用户同步的etcd镜像
docker pull mirrorgooglecontainers/etcd-amd64:3.2.18

# 下载mirrorgooglecontainers用户同步的kube-scheduler镜像
docker pull mirrorgooglecontainers/kube-scheduler-s390x:v1.13.12

如果需要搜索更过的镜像,比如我需要在DockerHub上搜索用户mirrorgooglecontainers上传的kube-apiserver镜像,就输入关键字mirrorgooglecontainers/kube-apiserver进行搜索。
通过这种方式下载的镜像可能需要重新打tag才能使用,如下示例:

# 对下载的google镜像重新打tag才能被正常使用
# 对镜像mirrorgooglecontainers/kube-scheduler-s390x:v1.13.12打tag为:k8s.gcr.io/kube-scheduler-s390x:v1.13.12
docker tag mirrorgooglecontainers/kube-scheduler-s390x:v1.13.12 k8s.gcr.io/kube-scheduler-s390x:v1.13.12

3.使用国内的镜像仓库,这种方式本质上跟方法2相同,只不过使用的是国内的镜像仓库。

# 从阿里云Docker镜像仓库下载用户google_containers同步的Google镜像
# 阿里云镜像仓库不支持搜索指定用户的镜像
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.2

4.自己有一台国外的服务器,先在服务器上下载k8s镜像,再上传到DockerHub,然后从DockerHub下载到本地(这一步可以通过设置Docker加速器解决),最后再通过重新打tag的方式将下载的镜像命名为对应的k8s原始镜像名称。

5.使用github构建,再使用阿里云镜像进行同步,最后从阿里云镜像仓库下载,具体实现步骤参考利用阿里云下载国外镜像,国内顺畅下载k8s.gcr.io的镜像。当然,这一步可能需要使用魔法才能正常访问到Github。而且对于个人版本有配额限制。

方法4和方法5都是自己去下载镜像,所以镜像的安全性能得到保证。

【参考】
failed to pull image k8s.gcr.io/kube-controller-manage
常用镜像仓库
K8S(kubernetes)镜像源
使用重新打 tag 的方式,拉取 k8s.gcr.io 的镜像
Docker 国内仓库和镜像

posted @ 2023-08-20 16:28  nuccch  阅读(838)  评论(0编辑  收藏  举报