0x00 添加docker官方的国内镜像

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

0x01 gcr.io镜像转换为国内镜像

根据开源项目:

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

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

使用语法

# 一般语法
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}

批量转换脚本

# replace gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1 to real image
# this will convert gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1
# to anjia0532/google-containers.federation-controller-manager-arm64:v1.3.1-beta.1 and pull it
# k8s.gcr.io/{image}/{tag} <==> gcr.io/google-containers/{image}/{tag} <==> anjia0532/google-containers.{image}/{tag}

images=$(cat img.txt)
#or
#images=$(cat <<EOF
# gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1
# gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1
# gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1
#EOF
#)

eval $(echo ${images}|sed 's/k8s\.gcr\.io/anjia0532\/google-containers/g;s/gcr\.io/anjia0532/g;s/\//\./g;s/ /\n/g;s/anjia0532\./anjia0532\//g' |uniq |awk '{print "docker pull "$1";"}')# 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
# to gcr.io/google-containers/federation-controller-manager-arm64:v1.3.1-beta.1
# k8s.gcr.io/{image}/{tag} <==> gcr.io/google-containers/{image}/{tag} <==> anjia0532/google-containers.{image}/{tag}for img in $(docker images --format "{{.Repository}}:{{.Tag}}"| grep "anjia0532"); don=$(echo ${img}| awk -F'[/.:]' '{printf "gcr.io/%s",$2}')image=$(echo ${img}| awk -F'[/.:]' '{printf "/%s",$3}')tag=$(echo ${img}| awk -F'[:]' '{printf ":%s",$2}')docker tag $img "${n}${image}${tag}"[[ ${n} == "gcr.io/google-containers" ]] && docker tag $img "k8s.gcr.io${image}${tag}"
done

0x02 pull-google-container 工具脚本

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

pull-google脚本

# vim pull-google.sh

  image=$1echo $1img=`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""}'`echo "docker pull $img"docker pull $imgecho  "docker tag $img $image"docker tag $img $image
~  

然后放到/usr/local/bin

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

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

pull-google-container gcr.io/google-samples/gb-frontend:v4
gcr.io/google-samples/gb-frontend:v4# 转换pull源头到anjia0532
docker pull anjia0532/google-samples.gb-frontend:v4
v4: Pulling from anjia0532/google-samples.gb-frontend
Digest: sha256:aaa5b327ef3b4cb705513ab674fa40df66981616950c7de4912a621f9ee03dd4
Status: Image is up to date for anjia0532/google-samples.gb-frontend:v4# 将anjia0532的镜像打tag
docker tag anjia0532/google-samples.gb-frontend:v4 gcr.io/google-samples/gb-frontend:v4

0x03 利用替换已有的yaml的方法

除了预先拉取镜像,我们还可以将k8s.gcr.io 替换为可执行镜像
为了方便替换,我们编写一个repair_yaml 脚本:

# vim /usr/local/bin/repair_yaml

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

保存退出,然后

# chmod +x /usr/local/bin/repair_yaml

效果:

$ repair_yaml frontend-deployment.yaml
$ cat frontend-deployment.yaml
apiVersion: apps/v1 #  for k8s versions before 1.9.0 use apps/v1beta2  and before 1.8.0 use extensions/v1beta1
kind: Deployment
metadata:name: frontend
spec:selector:matchLabels:app: guestbooktier: frontendreplicas: 3template:metadata:labels:app: guestbooktier: frontendspec:# 更换镜像源
      containers:- name: php-redisimage: anjia0532/google-samples.gb-frontend:v4resources:requests:cpu: 100mmemory: 100Mienv:- name: GET_HOSTS_FROMvalue: dns# If your cluster config does not include a dns service, then to# instead access environment variables to find service host# info, comment out the 'value: dns' line above, and uncomment the# line below:# value: env
        ports:- containerPort: 80

参考

转载于:https://www.cnblogs.com/JetpropelledSnake/p/10170206.html

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

  1. docker,k8s学习笔记汇总

    整理了下博客里关于docker和k8s的文章,方便查看 docker学习笔记(一)docker入门 docker学习笔记(二)创建自己的镜像 docker学习笔记(三)docker中的网络 docke ...

  2. K8S 学习笔记三 核心技术 Helm nfs prometheus grafana 高可用集群部署 容器部署流程

    K8S 学习笔记三 核心技术 2.13 Helm 2.13.1 Helm 引入 2.13.2 使用 Helm 可以解决哪些问题 2.13.3 Helm 概述 2.13.4 Helm 的 3 个重要概念 ...

  3. 【k8s学习笔记】第二篇:在Ubuntu系统中安装kubelet,kubeadm和kubectl

    在这一篇中,我们在Ubuntu系统中通过命令行的方式安装kubelet,kubeadm和kubectl. kubelet:运行在Cluster 的所有节点上面,负责Pod和容器的启动和维护: kube ...

  4. k8s学习笔记一集群部署

    k8s安装笔记 基础环境配置 修改主机名: 修改hosts配置文件 安装依赖包 关闭防火墙并未Iptables设置空规则 关闭swap分区和linux虚拟内存 调整内核参数 调整系统时区 关闭系统不需 ...

  5. [k8s 学习笔记]

    摘自知乎: k8s入门及实践 一. k8s简介 K8S 是Kubernetes的全称,官方称其是: Kubernetes is an open source system for managing c ...

  6. K8S学习笔记0522

    K8S中资源限制 如果运行的容器没有定义资源(memory.CPU)等限制,但是在namespace定义了LimitRange限制,那么该容器会继承LimitRange中的默认限制. 如果namesp ...

  7. k8s学习笔记- 部署prometheus

    1.Prometheus概述 Prometheus是一个开源监控系统,它前身是SoundCloud的警告工具包.从2012年开始,许多公司和组织开始使用Prometheus. 该项目的开发人员和用户社 ...

  8. k8s学习笔记(一)

    第一章 kubernetes介绍 本章节主要介绍应用程序在服务器上部署方式演变以及kubernetes的概念.组件和工作原理. 应用部署方式演变 在部署应用程序的方式上,主要经历了三个时代: 传统部署 ...

  9. 最详细的 K8S 学习笔记总结(2021最新版)

    虽然 Docker 已经很强大了,但是在实际使用上还是有诸多不便,比如集群管理.资源调度.文件管理等等.那么在这样一个百花齐放的容器时代涌现出了很多解决方案,比如 Mesos.Swarm.Kubern ...

最新文章

  1. 如何设计第三方账号登陆?
  2. EOJ Monthly 2019.11 E. 数学题(反演 + 杜教筛 + 拉格朗日插值)
  3. 使用TVP批量插入数据
  4. WPF中同一窗口下的界面切换
  5. CorelDRAWX4的VBA插件开发(二十九)使用C++制作动态连接库DLL辅助VBA构键强大功能-(3)制作最简单的可供调用的DLL
  6. idm下载器怎么下载网页视频?如何用idm自动下载网站文件?
  7. Java8 Stream list转map及问题解决
  8. C#+Halcon调用Basler相机
  9. 基于dragonboard 410c的智能魔镜设计(7)——UI原型设计
  10. Mysql 索引存放位置
  11. 乡村振兴的道路,农村污水处理设备搭建至关重要
  12. “武汉加油”“中国加油”
  13. 华为OD机试 - 玩牌高手(Python) | 机试题算法+思路 【2023】
  14. 零基础编程教学实录-000 思考要与不要
  15. Django接口文档的生成
  16. 我的spring入门级理解
  17. 2014、2015年国家级虚拟仿真实验教学中心入选名单
  18. 使用js乘法 精度错乱 使用Decimal插件处理格式问题
  19. ansible一键部署高可用集群项目实战最细教程
  20. 什么是云桌面计算机,云电脑桌面是什么?这是一篇良心科普文

热门文章

  1. c 与易语言程序间通信,易语言与三菱PLC通信-FX系列
  2. 视频服务器(4) webrtc-streamer(windows下卡住了)
  3. 微信如何用软件测试是否被拉黑,怎么知道微信里对方把自己拉黑或删除了?微信被好友拉黑检测方法...
  4. <视觉SLAM十四讲> 李群与李代数
  5. excel小写转大写公式_Excel办公技巧:快速将单元格中小写字母全部转换为大写字母...
  6. 【NLP】语料库和词汇知识库
  7. 我的世界服务器如何修改天气,我的世界怎么切换天气 原来这么简单
  8. 群晖无数据丢失的磁盘阵列变更解决方案(4盘位两个Raid1转SHR-1)
  9. win32简单只读文件程序
  10. SpringCloud——网关2