问题

由于国内网络原因,kubeadm init会卡住不动,一卡就是半个小时,然后报出这种问题:
[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.18.5: 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)

完整的错误日志如下:

root@ubuntu:/home/c# kubeadm init
W0709 04:14:45.954974   70230 configset.go:202] WARNING: kubeadm cannot validate component configs for API groups [kubelet.config.k8s.io kubeproxy.config.k8s.io]
[init] Using Kubernetes version: v1.18.5
[preflight] Running pre-flight checks
[preflight] Pulling images required for setting up a Kubernetes cluster
[preflight] This might take a minute or two, depending on the speed of your internet connection
[preflight] You can also perform this action in beforehand using 'kubeadm config images pull'
error execution phase preflight: [preflight] Some fatal errors occurred:[ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver:v1.18.5: 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/kube-controller-manager:v1.18.5: 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/kube-scheduler:v1.18.5: 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/kube-proxy:v1.18.5: 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/pause:3.2: 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/etcd:3.4.3-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:1.6.7: 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
[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

原因显而易见,是因为要下载k8s.gcr.io的docker镜像,但是国内连不上https://k8s.gcr.io/v2/。

还有其它问题可以看我上一篇文章使用VMware虚拟机搭建Kubernetes的Master和Worker节点 最全教程(1)准备工作,有很详细的解决过程。接下来进入正题:

解决方法

使用阿里云镜像

运行kubeadm init时加上阿里云镜像的参数--image-repository=registry.aliyuncs.com/google_containers,如下:(版本改为自己需要的)

kubeadm init --image-repository=registry.aliyuncs.com/google_containers --pod-network-cidr=10.244.0.0/16 --kubernetes-version=v1.18.5

如果还有问题,那可以用下面这个比较复杂的方法

从DockerHub的其它仓库拉取

网上搜了半天,很多人说从别的仓库一个一个拉取再改名,但是这些教程仓库名称不一,有的教程已经很老了,仓库很多年没更新,这里直接授之以渔,自己学怎么找仓库。
并且一个一个拉取改名太累了,可以写个脚本。

过程如下:

首先使用下面的命令获取需要的docker镜像名称:

kubeadm config images list

结果如下:

k8s.gcr.io/kube-apiserver:v1.22.15
k8s.gcr.io/kube-controller-manager:v1.22.15
k8s.gcr.io/kube-scheduler:v1.22.15
k8s.gcr.io/kube-proxy:v1.22.15
k8s.gcr.io/pause:3.5
k8s.gcr.io/etcd:3.5.0-0
k8s.gcr.io/coredns/coredns:v1.8.4

注意:新版本的coredns改名了,变成了coredns/coredns,需要特殊处理,不放在脚本中

首先要看看该在哪个地方拉取,可以去docker hub搜一搜哪里有kube-proxy之类的组件
进入dockerhub搜索:
https://hub.docker.com/search?q=kube-proxy&type=image
按照最近更新排序,结果如下,可以发现一个下载次数10k+,更新也很频繁的仓库:

然后开始编写脚本:

vim pull_k8s_images.sh
set -o errexit
set -o nounset
set -o pipefail##这里定义版本,按照上面得到的列表自己改一下版本号KUBE_VERSION=v1.22.15
KUBE_PAUSE_VERSION=3.5
ETCD_VERSION=3.5.0-0
# DNS_VERSION=1.8.4 # coredns需要特殊处理##这是原始仓库名,最后需要改名成这个
GCR_URL=k8s.gcr.io##这里就是写你要使用的仓库
DOCKERHUB_URL=gotok8s##这里是镜像列表,新版本要把coredns需要特殊处理
images=(
kube-proxy:${KUBE_VERSION}
kube-scheduler:${KUBE_VERSION}
kube-controller-manager:${KUBE_VERSION}
kube-apiserver:${KUBE_VERSION}
pause:${KUBE_PAUSE_VERSION}
etcd:${ETCD_VERSION}
# coredns:${DNS_VERSION} # coredns需要特殊处理
)##这里是拉取和改名的循环语句
for imageName in ${images[@]} ; dodocker pull $DOCKERHUB_URL/$imageNamedocker tag $DOCKERHUB_URL/$imageName $GCR_URL/$imageNamedocker rmi $DOCKERHUB_URL/$imageName
done

然后授予执行权限

chmod +x ./pull_k8s_images.sh

执行:

./pull_k8s_images.sh

执行过程中就会拉取镜像,完成后,使用docker images命令查看所有镜像,如下:

然后要处理coredns,这个其实很好下载,直接拉取coredns/coredns,使用命令:(注意调成自己需要的版本)

docker pull coredns/coredns:1.8.4

然后改名:

docker tag coredns/coredns:1.8.4 k8s.gcr.io/coredns/coredns:1.8.4

这就完成了。

如果还有镜像没有拉取下来,比如我第一次用的不是gotok8s仓库,而是另一个仓库,但是它里面并没有最新的etcd,所以这个没有拉取下来,那就再去找一些仓库,直接搜索etcd,进入仓库后点击Tag,看是不是有你需要的版本,如下图:

如果有,假如这个仓库叫kubelibrary,然后使用vim命令再新建一个可执行文件。

vim pull_k8s_images2.sh

添加内容:

set -o errexit
set -o nounset
set -o pipefail## 这里只需要留下还需要下载的组件的版本号
ETCD_VERSION=3.5.0-0GCR_URL=k8s.gcr.io
## 这里写新的仓库地址
DOCKERHUB_URL=kubelibrary## 这里也只留下需要下载的镜像
images=(
etcd:${ETCD_VERSION}
)for imageName in ${images[@]} ; dodocker pull $DOCKERHUB_URL/$imageNamedocker tag $DOCKERHUB_URL/$imageName $GCR_URL/$imageNamedocker rmi $DOCKERHUB_URL/$imageName
done

然后授予执行权限

chmod +x ./pull_k8s_images2.sh

执行:

./pull_k8s_images2.sh

这下就应该没问题了

结果

再进行kubeadm init,这次没有任何问题(如果有其它问题可以看我的另一篇文章使用VMware虚拟机搭建Kubernetes的Master和Worker节点 最全教程(1)准备工作,有很详细的解决过程。)

Kubernetes k8s拉取镜像失败最简单最快最完美解决方法 [ERROR ImagePull]: failed to pull image k8s.gcr.io/kube-apiserver相关推荐

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

    安装k8s的时候需要从k8s.gcr.io拉取镜像 执行kubeadm init     --pod-network-cidr=10.244.0.0/16   --apiserver-advertis ...

  2. k8s拉取镜像失败处理 ImagePullBackOff ErrImageNeverPull

    目录 一.环境描述 二.pod失败状态 三.整体解决方案 四.补充一下Pod状态解释 一.环境描述 系统环境:CentOS Linux release 7.9.2009 (Core) 系统内核:Lin ...

  3. k8s 拉取镜像失败_k8s 拉取私有仓库失败

    k8s 报错拉取镜像失败 Error response from daemon: pull access denied for istio/citadel, repository does not e ...

  4. k8s 拉取镜像失败_[k8s问题笔录] 记一次 kubectl 部署时,pull image 报错,拉取不到镜像...

    部署一个简单的 demo 返现一个很奇妙的错误,yaml 文件内容在下方,镜像仓库是内网自建的 harbor-1.9.1 单节点仓库,测试就没有整高可用了. 用户名:admin 密码:admin123 ...

  5. k8s 拉取镜像失败_kubernetes k8s.gcr.io拉取镜像失败问题

    kubeadm init默认用的是k8s.gcr.io这个仓库,由于国内被屏蔽了 搜了很多文章都是用脚本去解决,这个太繁琐了. 最后kubeadm init --help看了一下,发现其实可以指定im ...

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

    安装k8s的时候需要从k8s.gcr.io拉取镜像 kubeadm init --pod-network-cidr=10.244.0.0/16 --apiserver-advertise-addres ...

  7. 快速解决Kubernetes从k8s.gcr.io仓库拉取镜像失败问题

    前言:  在部署Kubernetes的过程中,需要从k8s.grc.io仓库中拉取部署所需的镜像文件,但是由于国内对国外的防火墙问题导致无法正常拉取,下面介绍一个方法来解决此问题,完成Kubernet ...

  8. 解决从k8s.gcr.io/gcr.io/quay.io等地址拉取镜像失败问题(Kubernetes国内镜像仓库地址)

    解决从k8s.gcr.io/gcr.io/quay.io等地址拉取镜像失败问题(Kubernetes国内镜像仓库地址) 参考文章: (1)解决从k8s.gcr.io/gcr.io/quay.io等地址 ...

  9. 解决k8s中node拉取镜像失败问题

    在k8s集群的使用过程中,初学者可能会碰到这样的(怪异)问题: 在一个k8s集群里,部署服务(用的私有镜像仓库,如harbor)的时候,只有个别node的服务是部署成功的,其他都是部署失败的. 错误的 ...

最新文章

  1. 在idea中移除子模块Moudle后重新导入
  2. 转:去掉Flex4生成的SWF加载时的进度条
  3. 2014.09线上课堂报名帖:敏捷个人手机应用使用
  4. 视频会议的分类和适用范围详解
  5. 我爱Java系列---【mysql基础约束】
  6. python自动安装apk文件
  7. 【已解决】Unable to resolve column ‘name‘
  8. Exp3:MAL_免杀原理与实践
  9. Starting zookeeper ... already running as process 30988.
  10. maven命令打jar包
  11. 英特尔傲腾内存linux,英特尔至强6226R处理器性能测评,支持英特尔傲腾持久内存...
  12. mysql neq_ecshop中smarty比较操作符(eq,ne,neq)含义
  13. linux怎么取消文件隐藏命令,linux命令行下隐藏文件的操作
  14. Control Egress TCP Traffic
  15. jsp mysql问卷调查_课内资源 - 基于JSP的在线调查问卷系统
  16. scrapy ,Selenium 企查查模拟登录
  17. 一个普通计算机培训学校学生的迷茫。
  18. CodeBERT理解
  19. easyUI FileBox(文件框)的setValue不能用,回显文件名称则可以用prompt代替
  20. 世事洞明职场“行”(上篇)——刘墉力作《我不是教你诈》花絮采撷

热门文章

  1. 跨境电商亚马逊卖家最需要关注的四个维度的数据
  2. 基本数据结构(算法导论)与python
  3. 石家庄阿福卡4G问题
  4. 大三成长日记——第二弹(批处理bat篇)
  5. 在firefox下载不收费的HackBar
  6. 爬取中国空气质量在线监测分析平台
  7. 用户画像(profile v.s. persona)
  8. eayui input的坑坑洼洼
  9. 关闭tcp连接时有时发送FIN有时发送RST
  10. 2021高台一中高考成绩查询,2021年高考数学(理)一轮复习题型归纳与训练 专题1.3 简单的逻辑联结词、全称量词与存在量词(学生版).docx...