国内拉取google kubernetes镜像

常用镜像仓库

DockerHub镜像仓库:
https://hub.docker.com/
阿里云镜像仓库:
https://cr.console.aliyun.com
google镜像仓库:
https://console.cloud.google.com/gcr/images/google-containers/GLOBAL
coreos镜像仓库:
https://quay.io/repository/
RedHat镜像仓库:
https://access.redhat.com/containers

部分国外镜像仓库无法访问,但国内有对应镜像源,例如kubernetes相关镜像、coreos相关镜像国内无法直接拉取,可以从以下镜像源拉取:

微软google gcr镜像源

#以gcr镜像为例,以下镜像无法直接拉取
docker pull gcr.io/google-containers/kube-apiserver:v1.15.2
#改为以下方式即可成功拉取:
docker pull gcr.azk8s.cn/google-containers/kube-apiserver:v1.15.2

微软coreos quay镜像源

#以coreos镜像为例,以下镜像无法直接拉取
docker pull quay.io/coreos/kube-state-metrics:v1.7.2
#改为以下方式即可成功拉取:
docker pull quay.azk8s.cn/coreos/kube-state-metrics:v1.7.2

微软dockerhub镜像源

#以下方式拉取镜像较慢
docker pull centos
#改为以下方式使用微软镜像源:
docker pull dockerhub.azk8s.cn/library/centos
docker pull dockerhub.azk8s.cn/willdockerhub/centos

dockerhub google镜像源

#以gcr镜像为例,以下镜像无法直接拉取
docker pull gcr.io/google-containers/kube-apiserver:v1.15.2
#改为以下方式即可成功拉取:
docker pull mirrorgooglecontainers/google-containers/kube-apiserver:v1.15.2

阿里云google镜像源

#以gcr镜像为例,以下镜像无法直接拉取
docker pull gcr.io/google-containers/kube-apiserver:v1.15.2
#改为以下方式即可成功拉取:
docker pull registry.cn-hangzhou.aliyuncs.com/google_containers/kube-apiserver:v1.15.2

创建个人仓库

我们也可以在dockerhub或阿里云创建个人仓库,把需要的最新版本镜像从google仓库push到个人仓库,一般有几下几种方法:
1.购买云服务器
购买1台能同时访问国外和国内网络的云服务器,使用docker login登录dockerhub或阿里云仓库,docker push命令推送上去然后再拉取到本地即可。
如果不想购买服务器又能够访问国外网络,建议使用google提供的cloud shell:
https://console.cloud.google.com/cloudshell
它类似一个永久免费的拥有5G存储空间的linux服务器,能够执行所有docker命令和bash命令,最重要的是它能够访问全球网络。

2.Travis CI推送镜像
使用travis CI+GitHub将镜像push到国内镜像仓库。

3.Github镜像构建功能
使用github的dockerfile构建功能,将镜像构建到国内仓库。
参考:https://blog.csdn.net/networken/article/details/85215714

Travis CI推送dokcer镜像

下面介绍第2种方法,使用travis CI+GitHub的方法将镜像拉取到阿里云或者dockehub。

创建github仓库
首先登录github创建一个仓库,名称自定义,仓库包含如下3个文件:

  • push-images.sh 脚本文件
  • imagepath.txt 镜像列表文件
  • .travis.yaml 自动构建文件

示例仓库:https://github.com/willzhang/DockerImages

push-images.sh脚本内容如下,主要从国外镜像仓库pull镜像,打tag,并push到阿里云或dockerhub.

#!/bin/bash

for imagepath in $(cat ./imagepath.txt)
do
imagename=$(echo $imagepath | awk -F '/' '{print $NF}')
docker pull $imagepath

# push到阿里云仓库
docker tag $imagepath registry.cn-hangzhou.aliyuncs.com/aliwill/$imagename
docker push registry.cn-hangzhou.aliyuncs.com/aliwill/$imagename

# push到dockerhub
docker tag $imagepath willdockerhub/$imagename
docker push willdockerhub/$imagename
done

imagepath.txt主要包含国内无法拉取的镜像列表,注意必须为完整镜像路径和名称,示例如下:

gcr.io/google-containers/kube-apiserver-amd64:v1.12.0
quay.io/external_storage/nfs-client-provisioner:latest

.travis.yaml文件主要监控github仓库的代码变动,当有代码变动时比如imagepath.txt写入新的镜像列表时将触发tarvis的自动构建,.travis.yaml文件内容如下:

language: bash

services:
- docker

script:
- docker login -u $ALI_USERNAME registry.cn-hangzhou.aliyuncs.com -p $ALI_PASSWORD
- docker login -u $DOCKER_USERNAME -p $DOCKER_PASSWORD
- bash push-images.sh

这里需要登录阿里云或dockerhub才能执行docker push操作,其中$ALI_USERNAME这类变量在TravisCI管理界面定义好即可。

TravisCI配置

访问travis官网: https://www.travis-ci.org/, 使用github账号登录。

开启需要进行自动化构建的仓库即可:
国内拉取google kubernetes镜像_第1张图片
另外需要点击右上角的more options —》settings选项,定义写在.travis.yaml中的账号密码等敏感参数。
国内拉取google kubernetes镜像_第2张图片
当对github仓库执行git commit、git push操作时将自动触发构建,执行仓库中的脚本,这里的构建结果如下:
国内拉取google kubernetes镜像_第3张图片
登录阿里云或dockerhub查看,imagepath.txt 列表中的镜像已经成功被push上来:
注意:push到阿里云的镜像默认为私有的,可以手动改为公开的。
国内拉取google kubernetes镜像_第4张图片
国内拉取google kubernetes镜像_第5张图片
日常拉取镜像方法:
修改imagepath.txt,写入需要拉取的镜像完整路径,保存后travis-CI监测到仓库代码变动,自动触发构建,几分钟后镜像就会被自动拉取到个人仓库。

参考:
https://blog.csdn.net/nklinsirui/article/details/80581286
https://www.cnblogs.com/xuxinkun/p/11025020.html

你可能感兴趣的:(kubernetes)