Kubernetes:如何解决从k8s.gcr.io拉取镜像失败问题

docker镜像默认的官网上传平台:https://hub.docker.com/,k8s运行时需要从google下载镜像(k8s.gcr.io),但该网被屏蔽了,怎样下载到所需镜像呢?

1. 可在知道镜像名情况下到hub.docker.com上搜索相应的docker镜像,pull后修改相应的tag即可。

如:k8s.gcr.io/kube-apiserver:v1.14.1,直接搜索kube-apiserver,匹配相应版本号后pull即可,注意不同平台设备的镜像后缀不同,如64位X86平台:kube-apiserver-amd64。

docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.14.1

下载完成后需要更换成原来的tag:

docker tag mirrorgooglecontainers/kube-apiserver-amd64:v1.14.1 k8s.gcr.io/kube-apiserver-amd64:v1.14.1

常用的hub.docker镜像地址:anjia0532,github:https://github.com/anjia0532/gcr.io_mirror

地址转换方法:

复制代码

gcr.io/namespace/image_name:image_tag

# 等价于

anjia0532/namespace.image_name:image_tag

# 特别的

k8s.gcr.io/{image}/{tag} <==> gcr.io/google-containers/{image}/{tag} <==> anjia0532/google-containers.{image}/{tag}

复制代码

示例:kubeadm在Ubuntu16上安装k8s:

复制代码

#kubeadm config images list --kubernetes-version=v1.14.1
k8s.gcr.io/kube-apiserver:v1.14.1
k8s.gcr.io/kube-controller-manager:v1.14.1
k8s.gcr.io/kube-scheduler:v1.14.1
k8s.gcr.io/kube-proxy:v1.14.1
k8s.gcr.io/pause:3.1
k8s.gcr.io/etcd:3.3.10
k8s.gcr.io/coredns:1.3.1

复制代码

下载镜像:

复制代码

docker pull mirrorgooglecontainers/kube-apiserver-amd64:v1.14.1
docker pull mirrorgooglecontainers/kube-controller-manager-amd64:v1.14.1
docker pull mirrorgooglecontainers/kube-scheduler-amd64:v1.14.1
docker pull mirrorgooglecontainers/kube-proxy-amd64:v1.14.1
docker pull mirrorgooglecontainers/pause-amd64:3.1
docker pull mirrorgooglecontainers/etcd-amd64:3.3.10
docker pull kontenapharos/coredns-amd64:1.3.1

复制代码

打标签:

复制代码

docker tag mirrorgooglecontainers/kube-apiserver-amd64:v1.14.1  k8s.gcr.io/kube-apiserver:v1.14.1
docker tag mirrorgooglecontainers/kube-controller-manager-amd64:v1.14.1 k8s.gcr.io/kube-controller-manager:v1.14.1
docker tag mirrorgooglecontainers/kube-scheduler-amd64:v1.14.1  k8s.gcr.io/kube-scheduler:v1.14.1
docker tag mirrorgooglecontainers/kube-proxy-amd64:v1.14.1  k8s.gcr.io/kube-proxy:v1.14.1
docker tag mirrorgooglecontainers/pause-amd64:3.1  k8s.gcr.io/pause:3.1
docker tag mirrorgooglecontainers/etcd-amd64:3.3.10  k8s.gcr.io/etcd:3.3.10
docker tag kontenapharos/coredns-amd64:1.3.1  k8s.gcr.io/coredns:1.3.1

复制代码

 2. 从gcr镜像服务器下载。许多公司提供了gcr的镜像服务器,可直接从服务器下载镜像。

如微软azure上的gcr镜像服务器:http://mirror.azure.cn/help/gcr-proxy-cache.html

GCR Proxy Cache服务器相当于一台GCR镜像服务器,国内用户可以经由该服务器从gcr.io下载镜像。

使用GCR Proxy Cache从gcr.io下载镜像

docker pull gcr.azk8s.cn/google_containers/<imagename>:<version>

例子

docker pull gcr.azk8s.cn/google_containers/pause-amd64:3.0
docker pull gcr.azk8s.cn/google_containers/kubedns-amd64:1.7

 

参考:

1.  google gcr.io、k8s.gcr.io 国内镜像

2. https://hub.docker.com/u/anjia0532

error execution phase preflight: [preflight] Some fatal errors occurred: [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.22.17: output: Error response from daemon: Ge t "https://k8s.gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers), error: exit status 1 [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-controller-manager:v1.22.17: output: Error response from d aemon: Get "https://k8s.gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers), error: exit status 1 [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-scheduler:v1.22.17: output: Error response from daemon: Ge t "https://k8s.gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers), error: exit status 1 [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-proxy:v1.22.17: output: Error response from daemon: Get "h ttps://k8s.gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers), error: exit status 1 [ERROR ImagePull]: failed to pull image k8s.gcr.io/pause:3.5: output: Error response from daemon: Get "https://k8s .gcr.io/v2/": context deadline exceeded, error: exit status 1 [ERROR ImagePull]: failed to pull image k8s.gcr.io/etcd:3.5.0-0: output: Error response from daemon: Get "https:// k8s.gcr.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers), error: exit status 1 [ERROR ImagePull]: failed to pull image k8s.gcr.io/coredns/coredns:v1.8.4: output: Error response from daemon: Get "https://k8s.gcr.io/v2/": context deadline exceeded, error: exit status 1 [preflight] If you know what you are doing, you can make a check non-fatal with `--ignore-preflight-errors=...` To see the stack trace of this error execute with --v=5 or higher
07-12
这个错误是由于在安装 Kubernetes 期间无法拉取所需的镜像引起的。它表明在尝试从 k8s.gcr.io 拉取镜像时出现了连接超时的问题。 这个问题可能是由于网络连接问题、防火墙设置或者代理配置引起的。以下是一些解决问题的常见步骤: 1. 确保您的网络连接正常,尝试通过浏览器访问 `https://k8s.gcr.io/v2/` 确认是否可以访问。 2. 如果您使用了代理,请确保已正确配置 Docker 的代理设置。您可以通过编辑 `/etc/systemd/system/docker.service.d/http-proxy.conf`(如果不存在则创建它)文件来设置代理。例如,如果您使用 HTTP 代理,可以添加以下内容: ``` [Service] Environment="HTTP_PROXY=http://proxy.example.com:8080/" Environment="HTTPS_PROXY=http://proxy.example.com:8080/" ``` 3. 如果您在防火墙后面,确保防火墙允许 Docker 访问所需的资源。您可以尝试临时禁用防火墙并重新运行安装命令,以验证是否与防火墙有关。 4. 如果您使用的是私有网络或内部网络,请确保您的网络环境正确配置,以允许 Docker 访问所需的资源。 5. 您还可以尝试使用其他镜像源或加速器来拉取所需的镜像。例如,您可以使用阿里云容器镜像服务(https://cr.console.aliyun.com/)或其他可靠的镜像源。 尝试上述步骤后,如果问题仍然存在,请确保您的环境满足 Kubernetes 的最低要求,并尝试在不同的网络环境下重新运行安装命令。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值