![30e4d10ea5987e3e45f21501d6f0fd97.png](https://i-blog.csdnimg.cn/blog_migrate/f6d6436ac560935bc4cf2fe8d1c38df5.jpeg)
从这篇文章开始就写写如何在虚拟机中通过minikube搭建一个K8s集群,并在这个K8s集群里安装Jenkins X,体验一把云原生下的CICD框架是如何运行的。在开始介绍搭建K8s、JenkinsX之前,我先说一下如何解决在搭建过程中遇到的一个大难题:镜像下载问题。在使用minikube搭建K8s环境时可以指定国内的阿里云,但Jenkins X只能从国外网站下载了。
在网上也有几种下载的方法:
①自己租用能访问云服务器,然后docker pull & docker save,然后再下载下来使用。
②使用aliyun的镜像地址(这个只能用于使用yum install安装K8s,但如果在安装过程中涉及到docker pull xxx镜像时无效)
③使用github和docker hub共同完成镜像的拉取(经济实惠,性价比高)。
这篇文章也主要介绍如何使用Github和Docker hub实现国外镜像的拉取,为搭建K8s环境、JenkinsX环境以及需要安装任何在国内访问不到镜像时指了一条光明大道。也希望能够帮助想踏上K8s,云原生这条船但苦于镜像无处拉取的臭味相投朋友。在通过github编写代码之前,请先到Docker hub上搜索一下,没准你想要的那个版本别人已经上传上去了,这就省大事了。如果没有再进行后面的步骤。
1、准备条件
①GitHub账号
②Docker Hub账号
2、Github代码库
在GitHub上新建一个代码库,或者直接fork我的k8s代码库,这个代码库专门用来存储需要构建镜像的Dockerfile。不同的镜像最好根据镜像路径创建目录。
![85218b7e77be5060d8428e5453b6c8f0.png](https://i-blog.csdnimg.cn/blog_migrate/f254cef7872adbf1d6359e5682824944.jpeg)
添加相应的Dockerfile,如下图所示,内容比较简单,就是拉取一下所需要的镜像。
![478eeb1c55f049bae9ecb49a463d9c16.png](https://i-blog.csdnimg.cn/blog_migrate/aa91d0da3e636e41053987dd2140dcf1.jpeg)
3、Docker hub上构建镜像
在Docker Hub上新建一个账号,登录后,在账号设置里,设置关联账号,用于关联你自己的代码库,当有变更时能够触发构建。
![5fd9727fc4bf684ab1bcde174266fefc.png](https://i-blog.csdnimg.cn/blog_migrate/545af2e93d8565acca815394f5203efc.jpeg)
新建一个镜像仓库,根据需要设置镜像的名字和备注,下面选择已经Connected的Github代码托管平台,选择自己账号下的k8s代码库。在BUILD RULES里添加一条构建规则。选择构建的信息,比如来源类型,哪个分支,镜像版本,以及Dockerfile所在路径(从代码库的根目录开始 使用 / 斜杠。)然后点击Create & Build。
![8e580c6c33af5e3855a487486a23774a.png](https://i-blog.csdnimg.cn/blog_migrate/2c7bbb3d8878c787d3f3c02a222d76bb.jpeg)
等待一段时间(有时会很长。小时级,主要是等待时间,真正构建很快),等构建成功后,在Tags里会看到我们想要的标签版本。此时就可以在服务器上使用docker pull xinglongjian/kube-apiserver:TAG下载镜像了。
![5d52446ca01f3d45490b0a2830329171.png](https://i-blog.csdnimg.cn/blog_migrate/84c682f928ae90f3868ba6b80c212764.jpeg)
4、查看镜像状态
有几种方法可以查看k8s集群或JenkinsX构建过程中到底有没有成功,如果没有成功,是什么原因导致的。我们得先发现问题,才能想办法解决问题。
①在构建时,最好再开一个窗口,tail -f /var/log/message 能够显示出系统的信息,如果出现镜像拉不下来,这里也会显示。
②使用kubectl describe pod xxx -n namespace能够查看这个pod的详细信息,如果镜像拉不下来,这里也会显示。
好了,镜像问题解决了,后续就可以开始环境搭建了。