使用docker hub获取kubernetes各个组件的镜像
2019-08-05

要部署kubernetes的话,无论手动安装kubernetes还是使用kubeadm安装kubernetes,都需要以下各模块的docker镜像。而国内的网络被墙的原因,在搭建环境时,经常无法pull到这些镜像。那我们可以考虑曲线救国,利用Docker Hub搭建自己的镜像仓库。

要使用docker hub来获取kubernetes镜像的话,前提要有github和docker hub的账号(注册即可)。docker hub通过关联github后自动构建docker镜像。在docker hub中构建好docker镜像后,就可以使用docker pull 拉取这些镜像并对拉取下来的镜像做tag处理便可正式部署kubernetes了。

步骤演示如下:

1、登录github,创建仓库名称为mykubernetes

 

2、克隆这个仓库,以备后期上传kubernetes各个组件的dockerfile文件使用

[root@linux-node2 ~]# git clone https://github.com/goser1158/mykubernetes.git

 在clone的时候可能会报错,解决办法:yum update -y nss curl libcurl 

3、编写kubernetes各个组件docker镜像对应的各个dockerfile

[root@linux-node2 ~]# cd mykubernetes/#创建各个组件dockerfile文件对应的目录[root@linux-node2 mykubernetes]# mkdir {kube-apiserver-amd64,kube-controller-manager-amd64,kube-scheduler-amd64,kube-proxy-amd64,etcd-amd64,pause-amd64,kubernetes-dashboard-amd64,k8s-dns-sidecar-amd64,k8s-dns-kube-dns-amd64,k8s-dns-dnsmasq-nanny-amd64,flannel}#编写各个镜像对应的Dockerfile文件[root@linux-node2 mykubernetes]# cat kube-apiserver-amd64/Dockerfile FROM gcr.io/google_containers/kube-apiserver-amd64:v1.10.1MAINTAINER goser[root@linux-node2 mykubernetes]# cat kube-scheduler-amd64/Dockerfile FROM gcr.io/google_containers/kube-scheduler-amd64:v1.10.1MAINTAINER goser[root@linux-node2 mykubernetes]# cat kube-controller-manager-amd64/Dockerfile FROM gcr.io/google_containers/kube-controller-manager-amd64:v1.10.1MAINTAINER goser[root@linux-node2 mykubernetes]# cat kube-proxy-amd64/Dockerfile FROM gcr.io/google_containers/kube-proxy-amd64:v1.10.1MAINTAINER goser[root@linux-node2 mykubernetes]# cat etcd-amd64/Dockerfile FROM gcr.io/google_containers/etcd-amd64:3.1.12MAINTAINER goser[root@linux-node2 mykubernetes]# cat kubernetes-dashboard-amd64/Dockerfile FROM gcr.io/google_containers/kubernetes-dashboard-amd64:v1.8.3MAINTAINER goser[root@linux-node2 mykubernetes]# cat k8s-dns-dnsmasq-nanny-amd64/Dockerfile FROM gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.8MAINTAINER goser[root@linux-node2 mykubernetes]# cat k8s-dns-kube-dns-amd64/Dockerfile FROM gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.8MAINTAINER goser[root@linux-node2 mykubernetes]# cat k8s-dns-sidecar-amd64/Dockerfile FROM gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.8MAINTAINER goser[root@linux-node2 mykubernetes]# cat pause-amd64/Dockerfile FROM gcr.io/google_containers/pause-amd64:3.1MAINTAINER goser[root@linux-node2 mykubernetes]# cat flannel/Dockerfile FROM quay.io/coreos/flannel:v0.9.1-amd64MAINTAINER goser

 说明:v1.10.1是镜像tag,这里你应该修改为你需要的版本号。例如kubernetes v1.10.1对应的kubernetes-apiserver-amd64版本为v1.10.1

4、创建好Dockerfile文件后,将其push到自己新建的github仓库mykubernetes中

[root@linux-node2 mykubernetes]# git add .[root@linux-node2 mykubernetes]# git commit -m "add kubernetes:v1.10.1-images Dockerfile"[root@linux-node2 mykubernetes]# git remote add origin https://github.com/goser1158/mykubernetes.git[root@linux-node2 flannel]# git push -u origin master

5、在GitHub上可以查询到你的commit上传的文件

6、登录Docker Hub配置Automated Build镜像

 点击Create下的Create Automated Build

 这个时候会提示要求绑定github仓库,如果之前未绑定,会提示绑定,按照步骤提示操作即可

  选择你创建的GitHub上的仓库mykubernetes

 填写Name及Short Description,点击Create按钮,切换到Build Setting栏

 填写Dockerfile Location及Docker Tag Name,点击Save Change,然后点击上方的Trigger,就触发构建镜像。

 切换到Build Details栏,会看到Queue->Building->Success或者Error

 这样一个kube-apiserver-amd64:v1.10.1的docker镜像使用docker  hub的自动构建完成了,当你修改了Dockerfile文件重新commit到GitHub上时,Docker Hub就自动开始构建新的镜像。

 按照构建kube-apiserver-amd64:v1.10.1的镜像方式构建kubernetes其他组件的docker镜像。在kubernetes各个组件的docker镜像构建完成后,就可以正式部署kubernetes了

7、将构建出的Kubernetes镜像pull到本地主机,并重新tag为kubernetes要求定义的镜像名

 创建一个可以拉取kubernetes组件docker镜像同时修改tag的脚本pull-k8s.sh

[root@linux-node2 ~]# vim pull-k8s.sh#!/bin/bashimages=(kube-proxy-amd64:v1.10.1 kube-scheduler-amd64:v1.10.1 kube-controller-manager-amd64:v1.10.1 kube-apiserver-amd64:v1.10.1 etcd-amd64:3.1.12 pause-amd64:3.1 kubernetes-dashboard-amd64:v1.8.3 k8s-dns-sidecar-amd64:1.14.8 k8s-dns-kube-dns-amd64:1.14.8 k8s-dns-dnsmasq-nanny-amd64:1.14.8)for image in ${images[@]} ; do docker pull goser/$image docker tag goser/$image gcr.io/google_containers/$image docker rmi goser/$imagedone# pull flannel && tag flanneldocker pull goser/flannel:v0.9.1-amd64 && docker tag goser/flannel:v0.9.1-amd64 quay.io/coreos/flannel:v0.9.1-amd64 &&docker rmi goser/flannel:v0.9.1-amd64

 运行pull-k8s.sh后,检查pull的镜像

[root@linux-node2 ~]# sh pull-k8s.sh[root@linux-node2 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZEquay.io/coreos/flannel v0.9.1-amd64 c309cd26d428 8 hours ago 51.3 MBgcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64 1.14.8 14a4f52fa725 8 hours ago 40.9 MBgcr.io/google_containers/kubernetes-dashboard-amd64 v1.8.3 f9b7e7a05753 8 hours ago 102 MBgcr.io/google_containers/etcd-amd64 3.1.12 2f7b9681bfac 9 hours ago 193 MBgcr.io/google_containers/kube-proxy-amd64 v1.10.1 3f1425ae677b 9 hours ago 97.1 MBgcr.io/google_containers/kube-controller-manager-amd64 v1.10.1 a6368b54f5e1 9 hours ago 148 MBgcr.io/google_containers/kube-apiserver-amd64 v1.10.1 7c9017884357 9 hours ago 225 MBgcr.io/google_containers/kube-scheduler-amd64 v1.10.1 34dea3bc0ba7 9 hours ago 50.4 MBgcr.io/google_containers/pause-amd64 3.1 c2b09938bcb8 9 hours ago 742 kBgcr.io/google_containers/k8s-dns-kube-dns-amd64 1.14.8 1f5bd4ca55be 9 hours ago 50.5 MBgcr.io/google_containers/k8s-dns-sidecar-amd64 1.14.8 ff06e2ddc9fe 9 hours ago 42.2 MB

8、pull完kubernetes各个组件的docker镜像后,就可以正式部署kubernetes了。。。

 至于如何部署kubernetes,参考:https://www.cnblogs.com/goser/articles/9361338.html

, 1, 0, 9);