原因

由于 kubernetes 安装时需要从 k8s.gcr.io 拉取镜像,但是该网站被我国屏蔽了,国内没法正常访问导致没法正常进行kubernetes正常安装。

这里通过介绍从Docker官方默认镜像平台拉取镜像并重新打tag的方式来绕过对 k8s.gcr.io 的访问。

解决方案

通过执行 kubeadm config images list 获取到需要拉取的镜像列表,并通过 sed 格式化成需要执行的命令。

命令如下:

kubeadm config images list
kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io/docker pull mirrorgcrio/g' | sudo sh
kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io\(.*\)/docker tag mirrorgcrio\1 k8s.gcr.io\1/g' | sudo sh
kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io/docker image rm mirrorgcrio/g' | sudo sh

命令功能

其中第1行命令是打印信息用的,主要使用2-4行的命令来执行需要的指令。

  1. kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io/docker pull mirrorgcrio/g'
  2. kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io\(.*\)/docker tag mirrorgcrio\1 k8s.gcr.io\1/g'
  3. kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io/docker image rm mirrorgcrio/g'

首先,通过命令 1 生成镜像拉取命令。

core@localhost ~ $ kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io/docker pull mirrorgcrio/g'
docker pull mirrorgcrio/kube-apiserver:v1.17.4
docker pull mirrorgcrio/kube-controller-manager:v1.17.4
docker pull mirrorgcrio/kube-scheduler:v1.17.4
docker pull mirrorgcrio/kube-proxy:v1.17.4
docker pull mirrorgcrio/pause:3.1
docker pull mirrorgcrio/etcd:3.4.3-0
docker pull mirrorgcrio/coredns:1.6.5

执行上述输出从 https://hub.docker.com//mirrorgcrio/xxx 拉取k8s.gcr.io对应的镜像。

然后,通过命令 2 生成docker tag命令对镜像重命名。

core@localhost ~ $ kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io\(.*\)/docker tag mirrorgcrio\1 k8s.gcr.io\1/g'
docker tag mirrorgcrio/kube-apiserver:v1.17.4 k8s.gcr.io/kube-apiserver:v1.17.4
docker tag mirrorgcrio/kube-controller-manager:v1.17.4 k8s.gcr.io/kube-controller-manager:v1.17.4
docker tag mirrorgcrio/kube-scheduler:v1.17.4 k8s.gcr.io/kube-scheduler:v1.17.4
docker tag mirrorgcrio/kube-proxy:v1.17.4 k8s.gcr.io/kube-proxy:v1.17.4
docker tag mirrorgcrio/pause:3.1 k8s.gcr.io/pause:3.1
docker tag mirrorgcrio/etcd:3.4.3-0 k8s.gcr.io/etcd:3.4.3-0
docker tag mirrorgcrio/coredns:1.6.5 k8s.gcr.io/coredns:1.6.5

执行上述输出会将 https://hub.docker.com//mirrorgcrio/xxx 的镜像通过打docker tag重命名为k8s.gcr.io格式。

最后,通过命令 3 生成docker image rm命令删除原始镜像。

core@localhost ~ $ kubeadm config images list 2>/dev/null | sed 's/k8s.gcr.io/docker image rm mirrorgcrio/g'
docker image rm mirrorgcrio/kube-apiserver:v1.17.4
docker image rm mirrorgcrio/kube-controller-manager:v1.17.4
docker image rm mirrorgcrio/kube-scheduler:v1.17.4
docker image rm mirrorgcrio/kube-proxy:v1.17.4
docker image rm mirrorgcrio/pause:3.1
docker image rm mirrorgcrio/etcd:3.4.3-0
docker image rm mirrorgcrio/coredns:1.6.5

执行上述输出会将从 https://hub.docker.com//mirrorgcrio/xxx 拉取的镜像进行删除。

查看镜像

通过执行 docker image ls 确认镜像是否拉取成功。

core@localhost ~ $ docker image ls
REPOSITORY                           TAG                 IMAGE ID            CREATED             SIZE
k8s.gcr.io/kube-proxy                v1.17.4             6dec7cfde1e5        10 days ago         116MB
k8s.gcr.io/kube-apiserver            v1.17.4             2e1ba57fe95a        10 days ago         171MB
k8s.gcr.io/kube-controller-manager   v1.17.4             7f997fcf3e94        10 days ago         161MB
k8s.gcr.io/kube-scheduler            v1.17.4             5db16c1c7aff        10 days ago         94.4MB
k8s.gcr.io/coredns                   1.6.5               70f311871ae1        4 months ago        41.6MB
k8s.gcr.io/etcd                      3.4.3-0             303ce5db0e90        4 months ago        288MB
k8s.gcr.io/pause                     3.1                 da86e6ba6ca1        2 years ago         742kB

到此为止,镜像已经拉取成功了,可以继续执行 kubernetes 的安装了。

1条命令解决使用kubeadm安装 kubernetes 从 k8s.gcr.io 拉取镜像失败的问题相关推荐

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

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

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

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

  3. 【问题解决】This container is having trouble accessing https://k8s.gcr.io | 如何解决从k8s.gcr.io拉取镜像失败问题?

    docker.io仓库对google的容器做了镜像,可以通过下列命令下拉取相关镜像: docker pull mirrorgooglecontainers/kube-apiserver-amd64:v ...

  4. 解决从k8s.gcr.io拉取镜像失败问题

    1.解决方案 docker.io仓库对google的容器做了镜像,可以通过下列命令下拉取相关镜像: docker pull mirrorgooglecontainers/kube-apiserver- ...

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

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

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

    问题 由于国内网络原因,kubeadm init会卡住不动,一卡就是半个小时,然后报出这种问题: [ERROR ImagePull]: failed to pull image k8s.gcr.io/ ...

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

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

  8. k8s(kubernetes)通过jenkins从harbor拉取镜像,包括yaml传参(史诗级,保姆级)

    上一篇:k8s(kubernetes)通过yaml从harbor拉取镜像(史诗级,保姆级)https://blog.csdn.net/fsjwin/article/details/109911495 ...

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

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

最新文章

  1. 新概念英语(1-73)The way to King Street
  2. nat+端口转发,使得宿主机secureCRT可以访问vbox里linux虚拟机
  3. 【C++ grammar】对象指针、对象数组、函数参数
  4. python怎么背景实现循环_在Python的一段程序中如何使用多次事件循环详解
  5. 做点RouteOS方面的备忘,关于流量监控限速的
  6. “再见,Linux!”
  7. 游戏接腾讯平台的一些锁事
  8. matlab simout,每日学习Matlab(2)
  9. python、声明全局变量的关键字是_python基础之全局变量与global关键字
  10. 无卡支付,快捷支付,认证支付,协议支付,代扣区别与联系
  11. 快速上手Springboot项目(登录注册保姆级教程)
  12. 趣味python3编程_Python趣味编程与精彩实例
  13. css 文字颜色渐变 animation,css3文字渐变动画
  14. html代码制作的个人简历
  15. canvas 绘制七巧板
  16. 重磅推荐:5款强大的开源报表工具!
  17. 过河问题(经典贪心)
  18. JS学习日记(二)字符与对象
  19. war3骚招之剑牛拆家流
  20. SVN客户端安装和服务器搭建

热门文章

  1. 人工智能相关概念整理
  2. vue.js 拖拽排序_快速轻巧的Vue.js拖放可排序库
  3. Replacing Elements (CodeForces - 1473A)
  4. 快速复现利用Log4j漏洞启动windows计算器
  5. 使用System.setOut()
  6. python反爬虫与绕过_python中绕过反爬虫的方法总结
  7. a标签href的几种写法
  8. android的app图标大全,安卓app图标
  9. elementUI重难点
  10. org.apache.flink.util.FlinkRuntimeException: Exceeded checkpoint tolerable failure threshold