1、首先添加docker官方的国内镜像

  1. sudo tee /etc/docker/daemon.json <<-'EOF'
  2. {
  3. "registry-mirrors": ["https://registry.docker-cn.co"]
  4. }
  5. EOF

2、gcr.io镜像

根据开源项目:

https://github.com/anjia0532/gcr.io_mirror

作者将gcr.io相关镜像pull下来,然后push到docker官方仓库,相关转换语法如下:

语法

  1. gcr.io/namespace/image_name:image_tag
  2. # 等价于
  3. anjia0532/namespace.image_name:image_tag
  4. # 特别的
  5. k8s.gcr.io/{image}/{tag} <==> gcr.io/google-containers/{image}/{tag} <==> anjia0532/google-containers.{image}/{tag}

批量转换

  1. # replace gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1 to real image
  2. # this will convert gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1
  3. # to anjia0532/google-containers.federation-controller-manager-arm64:v1.3.1-beta.1 and pull it
  4. # k8s.gcr.io/{image}/{tag} <==> gcr.io/google-containers/{image}/{tag} <==> anjia0532/google-containers.{image}/{tag}
  5. images=$(cat img.txt)
  6. #or
  7. #images=$(cat <<EOF
  8. # gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1
  9. # gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1
  10. # gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1
  11. #EOF
  12. #)
  13. eval $(echo ${images}|
  14. sed 's/k8s\.gcr\.io/anjia0532\/google-containers/g;s/gcr\.io/anjia0532/g;s/\//\./g;s/ /\n/g;s/anjia0532\./anjia0532\//g' |
  15. uniq |
  16. awk '{print "docker pull "$1";"}'
  17. )
  18. # this code will retag all of anjia0532's image from local e.g. anjia0532/google-containers.federation-controller-manager-arm64:v1.3.1-beta.1
  19. # to gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1
  20. # k8s.gcr.io/{image}/{tag} <==> gcr.io/google-containers/{image}/{tag} <==> anjia0532/google-containers.{image}/{tag}
  21. for img in $(docker images --format "{{.Repository}}:{{.Tag}}"| grep "anjia0532"); do
  22. n=$(echo ${img}| awk -F'[/.:]' '{printf "gcr.io/%s",$2}')
  23. image=$(echo ${img}| awk -F'[/.:]' '{printf "/%s",$3}')
  24. tag=$(echo ${img}| awk -F'[:]' '{printf ":%s",$2}')
  25. docker tag $img "${n}${image}${tag}"
  26. [[ ${n} == "gcr.io/google-containers" ]] && docker tag $img "k8s.gcr.io${image}${tag}"
  27. done

3、 pull-google-container 工具脚本

K8S的exapmle里的yaml默认是k8s.gcr.io的镜像,为了方便运行我们可以预先拉取相关镜像:

vim pull-google.sh:

  1. image=$1
  2. echo $1
  3. img=`echo $image | sed 's/k8s\.gcr\.io/anjia0532\/google-containers/g;s/gcr\.io/anjia0532/g;s/\//\./g;s/ /\n/g;s/_/-/g;s/anjia0532\./anjia0532\//g' | uniq | awk '{print ""$1""}'`
  4. echo "docker pull $img"
  5. docker pull $img
  6. echo "docker tag $img $image"
  7. docker tag $img $image
  8. ~

然后放到/usr/local/bin

  1. chmod +x pull-google.sh && cp pull-google.sh /usr/local/bin/pull-google-container

就可以愉快的使用pull-google-container 命令了

  1. pull-google-container gcr.io/google-samples/gb-frontend:v4
  2. gcr.io/google-samples/gb-frontend:v4
  3. docker pull anjia0532/google-samples.gb-frontend:v4
  4. v4: Pulling from anjia0532/google-samples.gb-frontend
  5. Digest: sha256:aaa5b327ef3b4cb705513ab674fa40df66981616950c7de4912a621f9ee03dd4
  6. Status: Image is up to date for anjia0532/google-samples.gb-frontend:v4
  7. docker tag anjia0532/google-samples.gb-frontend:v4 gcr.io/google-samples/gb-frontend:v4

4. 替换已有的yaml

除了预先拉取镜像,我们还可以将k8s.gcr.io 替换为可执行镜像

为了方便替换,我们编写一个repair_yaml 脚本:

vim /usr/local/bin/repair_yaml

  1. cp $1 "$1.bak"
  2. cat $1.bak | sed 's/k8s\.gcr\.io\//anjia0532\/google-containers./g;s/gcr\.io\/\(.*\)\//anjia0532\/\1./g;s/google_/google-/g;' > $1
  3. rm -f "$1.bak"

保存退出,然后chmod +x /usr/local/bin/repair_yaml

效果:

  1. $ repair_yaml frontend-deployment.yaml
  2. $ cat frontend-deployment.yaml
  3. apiVersion: apps/v1 # for k8s versions before 1.9.0 use apps/v1beta2 and before 1.8.0 use extensions/v1beta1
  4. kind: Deployment
  5. metadata:
  6. name: frontend
  7. spec:
  8. selector:
  9. matchLabels:
  10. app: guestbook
  11. tier: frontend
  12. replicas: 3
  13. template:
  14. metadata:
  15. labels:
  16. app: guestbook
  17. tier: frontend
  18. spec:
  19. containers:
  20. - name: php-redis
  21. image: anjia0532/google-samples.gb-frontend:v4
  22. resources:
  23. requests:
  24. cpu: 100m
  25. memory: 100Mi
  26. env:
  27. - name: GET_HOSTS_FROM
  28. value: dns
  29. # If your cluster config does not include a dns service, then to
  30. # instead access environment variables to find service host
  31. # info, comment out the 'value: dns' line above, and uncomment the
  32. # line below:
  33. # value: env
  34. ports:
  35. - containerPort: 80

作者:Jadepeng

出处:jqpeng的技术记事本--http://www.cnblogs.com/xiaoqi

您的支持是对博主最大的鼓励,感谢您的认真阅读。

本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

google gcr.io、k8s.gcr.io 国内镜像的更多相关文章

  1. [转帖]k8s国内镜像

    k8s国内镜像 https://www.jianshu.com/p/b9fecdb5e3a7 wu_sphinx 关注 2019.05.06 20:43* 字数 155 阅读 628评论 0喜欢 0 ...

  2. K8S学习笔记之将Google的gcr.io、k8s.gcr.io 换为国内镜像

    0x00 添加docker官方的国内镜像 sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ...

  3. Kubernetes之解决从k8s.gcr.io拉取镜像失败问题

    前言 因谷歌网络限制问题,国内的K8ser大多数在学习Kubernetes过程中因为镜像下载失败问题间接地产生些许失落感,笔者也因此脑壳疼,故翻阅资料得到以下解决方式: 在应用yaml文件创建资源时, ...

  4. k8s.gcr.io、gcr.io仓库的镜像下载

    镜像下载.域名解析.时间同步请点击 阿里巴巴开源镜像站 获取这类镜像的方法一般有2种: 1.通过拉取国内镜像仓库的内容(操作简单直接拉取即可,缺点是镜像的版本更新可能较慢,可能无法获取最新的镜像) 2 ...

  5. [转帖]k8s.gcr.io镜像无法下载的问题

    k8s.gcr.io镜像无法下载的问题 https://blog.51cto.com/liuzhengwei521/2301497 看了下 赵安家老师应该是青岛人 在济南顺能网络科技有限公司上班 铭盛 ...

  6. Kubernetes搭建过程中使用k8s.gcr.io、quay.io、docker.io的镜像加速

    前言 因为众所周知的原因,在使用Kubernetes和docker的时候会出现一些镜像无法拉取或者速度较慢的情况,错误信息类似以下: [ERROR ImagePull]: failed to pull ...

  7. 还在因为部署 Kubernetes 时,无法拉取 k8s.gcr.io/*** 镜像而头疼吗

    拉取外网 Kubernetes 镜像 还在因为部署 Kubernetes 时,无法拉取 k8s.gcr.io/*** 镜像而头疼吗? 传送门 https://github.com/liamhao/pu ...

  8. [ERROR ImagePull]: failed to pull image [k8s.gcr.io/kube-apiserver-amd64:v1.11.1]: exit status 1

    问题描述 [root@localhost ~]# kubeadm init --kubernetes-version=v1.11.1 --pod-network-cidr=10.244.0.0/16 ...

  9. [转帖]k8s.gcr.io/pause的作用

    k8s.gcr.io/pause的作用 https://blog.51cto.com/liuzhengwei521/2422120 weilovepan520关注0人评论196人阅读2019-07-2 ...

随机推荐

  1. modbus-vcr介绍

    相关链接:modbus-vcr modbus-vcr是一个Ettercap的插件,被使用在缺少数据完整性的工业控制系统协议方面. 这个Ettercap插件执行一个MITM攻击在使用Modbus协议的系 ...

  2. 20155302 2016-2017-2 《Java程序设计》第九周学习总结

    20155302 2016-2017-2 <Java程序设计>第九周学习总结 教材学习内容总结 基本数据库操作相关的JDBC接口或类是位于java.sql包中.在程序中要取得数据库联机,我 ...

  3. js设定延迟时间的函数

    1.如果想要在执行一个js函数之前延迟一段时间应该怎么做? 答:"setTimeout('update()',1000);" 其中update()函数就是延迟后执行的函数,后面的时 ...

  4. d 属性: 赋予字段执行动作的能力

    1.对只读属性误解 property AppSetting: ISuperobject read fAppSetting;当看到 AppInfo.AppSetting.D['lastLat'] := ...

  5. Maven入门-依赖管理(Jar包管理)(二)

    1       依赖管理(Jar包管理) 1.添加依赖  

  6. Informatic学习总结_day02

    1.sort组件(排序) 2.aggregater组件  聚集组件  sum   如果不排序,去做汇总的话,一个大的session 运行起来会很慢 3.join控件  连接组件 对于异构的数据源,一个 ...

  7. python中argparse模块用法实例详解

    python中argparse模块用法实例详解 这篇文章主要介绍了python中argparse模块用法,以实例形式较为详细的分析了argparse模块解析命令行参数的使用技巧,需要的朋友可以参考下 ...

  8. CONFIG_DEBUG_USER【转】

    转自:https://blog.csdn.net/adaptiver/article/details/12778621 关于CONFIG_DEBUG_USER 把menuconfig中查到的 CONF ...

  9. unicode 和 utf-8字符编码的区别

    作者:于洋链接:https://www.zhihu.com/question/23374078/answer/69732605来源:知乎著作权归作者所有,转载请联系作者获得授权.   原文:unico ...

  10. 半自动代码生成--方式C#

    寻找半自动代码生成方式基于C#的GUI或者其它: 1. (推荐)Millennials - A Custom Source Code Generator  https://www.codeprojec ...