详细介绍借助Docker Hub访问gcr.io镜像

前言

在搭建 Kubernetes 集群时,国内用户遇到的第一个问题就是无法访问 gcr.io 镜像,直接导致无法初始化集群也就没有办法成功搭建 Kubernetes 集群。
通常要解决此问题有几种方法:

  • 通过梯子直接访问 gcr.io 镜像。由于目前对梯子的打击力度很大,使用这种方式很难。
  • 通过公开的镜像服务器寻找别人搜集的镜像进行下载。缺点是匹配到的镜像版本很难找到。
  • 通过国内的 gcr.io 镜像的代理进行访问。笔者尝试使用这种方法,但是由于代理失效也无法访问到镜像
  • 通过将 gcr.io 的镜像搬运到 Docker hub 上进行访问。

由于前三种方法都存在一些问题。本文主要介绍第四种方法,其实现方式是通过 Docker Hub 的自动构建功能,结合 Github 仓库使用 Dockerfile 文件构建镜像。镜像完成后,可以进行 pulltag 修改从而完成 Kubernetes 集群的搭建。

Kubernetes 组件

下面我们会以 kube-apiserver1.18.3 版本为例详细介绍。同时列出了搭建 v1.18.3 的 kubernetes 集群所需要的组件以及事先创建好的 Docker Hub 访问地址。

k8s.gcr.io/kube-apiserver:v1.18.3

docker pull jason88/kube-apiserver:1.18.3

k8s.gcr.io/kube-controller-manager:v1.18.3

docker pull jason88/kube-controller-manager:v1.18.3

k8s.gcr.io/kube-scheduler:v1.18.3

docker pull jason88/kube-scheduler:v1.18.3

k8s.gcr.io/kube-proxy:v1.18.3

docker pull jason88/kube-proxy:v1.18.3

k8s.gcr.io/pause:3.2

docker pull jason88/pause:3.2

k8s.gcr.io/etcd:3.4.3-0

docker pull jason88/etcd:3.4.3-0

k8s.gcr.io/coredns:1.6.7

docker pull jason88/coredns:1.6.7

配置

前提条件:

需要在Docker Hub (https://hub.docker.com/) 和Github(https://github.com/) 上注册帐号并登陆。

Github 上创建仓库。

  • 1.1 在 + 号上点击 New repostory
    New repostory

  • 1.2 在新建页面的 Repository name 列输入仓库名称,点击"create reposifoty"完成创建。示例中的名称为 k8s-images
    Repository Name

创建新文件用来存放 Dockerfile 命令。

  • 1.3 仓库页面,点击 "creating a new file"
    Creating a New File

  • 1.4 在页面编辑页面,输入文件名称 kube-apiserver:v1.18.3 ,在文件中输入内容为 FROM gcr.io/google-containers/kube-apiserver:v1.18.3 。点击页面下方的"Commit new file"
    Commit New File

  • 1.5 返回仓库查看创建的文件。
    Kube-apiserver File

  • 1.6 按照以上步骤创建剩下的组件。All File

Docker Hub 上进行 Github 授权。

  • 2.1 打开 帐号的 "Account Settings" ,点击 "Linked Accounts"
    Linked Accounts

  • 2.2 在Github 后面点击 "Connect" 进行相关账户的授权
    Connect

Docker Hub 上创建仓库。

  • 2.3 点击页面上方的 "Repositories" ,进入到仓库管理页面。
    Repositories

  • 2.4 在点击 "Create Repository" ,在name 栏中输入仓库名称 "kube-apiserver"(建议使用组件名称作为仓库名称)。
    Create Repository

  • 2.5 在 Build Settings 选项点击 github 的图标,选择GitHub帐号和仓库。这里选择 k8s-images 仓库,即上面步骤中创建的仓库。

  • 2.6 点击 Build Rules,会出现构建规则选项卡。在Docker Tag 选项输入版本号 v1.18.3 ,在Dockerfile location 选项卡中输入Github 中创建的文件名称 kube-apiserver:v1.18.3,然后点击 Create & Build
    注:Dockerfile location 选项必须要与Github 中文件名称对应上。

Create Repository

  • 2.7 在此仓库的 Builds 页面查看创建进度。
    Build Activity

Recent Builds 中可以查看构建详情,状态变成 success 后就可以进行下载。

  • 2.8 在 tags 中查看镜像的标签信息
    Tags

结束语

  • 镜像制作完成后使用 pull 命令将镜像下载到本地
  • 使用tag 命令为镜像重新打标签,标签要和gcr.io 镜像标签一致。
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值