使用docker hub获取kubernetes各个组件的镜像

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

通过科学上网的方式可以查看到kubernetes各个组件的docker镜像,通过这些镜像我们使用docker hub来构建自定义的k8s镜像。

k8s镜像官方地址:https://console.cloud.google.com/gcr/images/google-containers/GLOBAL?location=GLOBAL&project=google-containers

要使用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.1
MAINTAINER goser
[root@linux-node2 mykubernetes]# cat  kube-scheduler-amd64/Dockerfile 
FROM gcr.io/google_containers/kube-scheduler-amd64:v1.10.1
MAINTAINER goser
[root@linux-node2 mykubernetes]# cat  kube-controller-manager-amd64/Dockerfile 
FROM gcr.io/google_containers/kube-controller-manager-amd64:v1.10.1
MAINTAINER goser
[root@linux-node2 mykubernetes]# cat  kube-proxy-amd64/Dockerfile 
FROM gcr.io/google_containers/kube-proxy-amd64:v1.10.1
MAINTAINER goser
[root@linux-node2 mykubernetes]# cat  etcd-amd64/Dockerfile 
FROM gcr.io/google_containers/etcd-amd64:3.1.12
MAINTAINER goser
[root@linux-node2 mykubernetes]# cat  kubernetes-dashboard-amd64/Dockerfile 
FROM gcr.io/google_containers/kubernetes-dashboard-amd64:v1.8.3
MAINTAINER goser
[root@linux-node2 mykubernetes]# cat  k8s-dns-dnsmasq-nanny-amd64/Dockerfile 
FROM gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64:1.14.8
MAINTAINER goser
[root@linux-node2 mykubernetes]# cat  k8s-dns-kube-dns-amd64/Dockerfile 
FROM gcr.io/google_containers/k8s-dns-kube-dns-amd64:1.14.8
MAINTAINER goser
[root@linux-node2 mykubernetes]# cat  k8s-dns-sidecar-amd64/Dockerfile 
FROM gcr.io/google_containers/k8s-dns-sidecar-amd64:1.14.8
MAINTAINER goser
[root@linux-node2 mykubernetes]# cat  pause-amd64/Dockerfile 
FROM gcr.io/google_containers/pause-amd64:3.1
MAINTAINER goser
[root@linux-node2 mykubernetes]# cat  flannel/Dockerfile 
FROM quay.io/coreos/flannel:v0.9.1-amd64
MAINTAINER 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/bash
images=(kube-proxy-amd64:v1.10.1 kube-scheduler-amd64:v1.10.1 kube-controller-manager-amd64:v1.10.1 kube-apiserver-amd6
4: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/$image
done
# pull flannel && tag flannel
docker 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             SIZE
quay.io/coreos/flannel                                   v0.9.1-amd64        c309cd26d428        8 hours ago         51.3 MB
gcr.io/google_containers/k8s-dns-dnsmasq-nanny-amd64     1.14.8              14a4f52fa725        8 hours ago         40.9 MB
gcr.io/google_containers/kubernetes-dashboard-amd64      v1.8.3              f9b7e7a05753        8 hours ago         102 MB
gcr.io/google_containers/etcd-amd64                      3.1.12              2f7b9681bfac        9 hours ago         193 MB
gcr.io/google_containers/kube-proxy-amd64                v1.10.1             3f1425ae677b        9 hours ago         97.1 MB
gcr.io/google_containers/kube-controller-manager-amd64   v1.10.1             a6368b54f5e1        9 hours ago         148 MB
gcr.io/google_containers/kube-apiserver-amd64            v1.10.1             7c9017884357        9 hours ago         225 MB
gcr.io/google_containers/kube-scheduler-amd64            v1.10.1             34dea3bc0ba7        9 hours ago         50.4 MB
gcr.io/google_containers/pause-amd64                     3.1                 c2b09938bcb8        9 hours ago         742 kB
gcr.io/google_containers/k8s-dns-kube-dns-amd64          1.14.8              1f5bd4ca55be        9 hours ago         50.5 MB
gcr.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

原文地址:https://www.cnblogs.com/goser/p/9365937.html