前言

现在很多企业已经进入了docker容器化的部署方式容器化的部署离不开容器编排的工具,现在用的最多的当属K8S的编排工具。那项目从0开始时,一直进入到k8s中,整体流程是什么,以及用到什么工具组件呢?今天老顾就从整体上面来介绍一下。

整体流程




k8s 自动拉取镜像 k8s拉取镜像命令_k8s拉取harbor镜像


工作流程

1)开发人员提交代码到Git版本仓库;2)Jenkins人工/定时触发项目构建;3)Jenkins拉取代码、代码编码、打包镜像、推送到测试环境的镜像仓库;4)k8s拉取镜像产生pod中的容器5)测试环境中测试没有问题后,把镜像同步到生产的镜像仓库中6)生产环境K8S部署镜像

git

git现在有的私有仓库,有两种选择gitlab,gogs。

gogs


k8s 自动拉取镜像 k8s拉取镜像命令_git_02


一开始老顾选择的gogs,因为比较轻量级,消耗服务器的资源也很少。但是gogs现有版本中缺少很重要的功能,就是在web界面上面操作拉取分支的功能,这个功能是平常经常用的,但比较可惜的是gogs现在不支持。

gitlab


k8s 自动拉取镜像 k8s拉取镜像命令_git_03


gitlab功能还是比较强大的,唯一的缺点就是比较耗服务器资源,最好用4G内存承载,要不然很慢哦

jenkins


k8s 自动拉取镜像 k8s拉取镜像命令_docker_04


k8s 自动拉取镜像 k8s拉取镜像命令_docker_05


jenkins应该是持续集成的唯一选择了,功能非常强大,强大的插件功能;不同的团队应用jenkins的方式也不尽相同。

拉取git的插件Git Parameter

动态获取Git仓库Branch、Tag


k8s 自动拉取镜像 k8s拉取镜像命令_jar_06


k8s 自动拉取镜像 k8s拉取镜像命令_git_07


配置好后,在build时,你可以选择不同的分支


k8s 自动拉取镜像 k8s拉取镜像命令_jar_08


利用pom.xml文件构建项目


k8s 自动拉取镜像 k8s拉取镜像命令_k8s 自动拉取镜像_09


在Jenkins本机镜像构建与推送到镜像仓库


k8s 自动拉取镜像 k8s拉取镜像命令_docker_10


REPOSITORY=192.168.110.10/qy-tribe/user-server:${branch}#构建镜像

cat > Dockerfile << EOF

FROM openjdk:8-jdk-alpine

RUN rm -rf /usr/local/qy-tribe

COPY target/*.jar /usr/local/qy-tribe/user-server.jar

ENTRYPOINT java -jar /usr/local/qy-tribe/user-server.jar

EOF

docker build -t $REPOSITORY .

#上传镜像

docker push $REPOSITORY

上面是直接在jenkins的shell中输入了构建镜像脚本。

其实还有一种常用的方式就是在项目工程下新建Dockerfile文件,在可以利用mvn插件


k8s 自动拉取镜像 k8s拉取镜像命令_docker_11


在jenkins中使用shell

mvn dockerfile:build dockerfile:push

这样就更简单一点

注意点:因为我们会对同一个版本会构建多次,镜像images会产生多次,会把上一次的镜像的tag更改为none;我们要记得清除哪些被替换的image,可以使用脚本

注意点:jenkins结点需要安装docker哦,不要忘了

docker images | grep none | awk '{print $3}' | xargs docker rmi

镜像仓库

现在市面上的镜像仓库,不二人选肯定是harbor了,使用起来比较简单,功能也是比较强大的


k8s 自动拉取镜像 k8s拉取镜像命令_docker_12


harbor的安装推荐使用docker方式安装,比较方便

https://github.com/goharbor/harbor/releases/download

harbor中有个复制管理,即是同步镜像的功能。

很多网上有harbor的高可用,以及集群的架构方案,老顾认为没有必要,应该harbor是在内部使用,高可用的需求不强烈。我们只要保证镜像文件不丢失即可,正好harbor的复制管理即可完成此功能。

所以我们只要架设几个harbor就ok了

k8s

k8s集群安装是比较复杂的,网上介绍的有两种方式kubeadm方式和二进制方式,我们今天介绍更简单的方式,只要几句命令就ok。

利用sealyun工具,利用go语言方式,能够快速搭建k8s集群

结点规划

主机名

IP地址

master01

192.168.0.2

master02

192.168.0.3

master03

192.168.0.4

work01

192.168.0.5

work02

192.168.0.6

注意:

系统支持:centos7.2以上 ubuntu16.04以上 内核推荐4.14以上

推荐配置:centos7.4

注意事项

1)必须同步所有服务器时间

2)所有服务器主机名不能重复

#下载并安装sealos, sealos是个golang的二进制工具,直接下载拷贝到#bin目录即可, release页面也可下载wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/latest/sealos &&      chmod +x sealos && mv sealos /usr/bin      #下载离线资源包wget -c https://sealyun.oss-cn-beijing.aliyuncs.com/d551b0b9e67e0416d0f9dce870a16665-1.18.0/kube1.18.0.tar.gz #安装一个三master的kubernetes集群sealos init --passwd 123456      --master 192.168.0.2  --master 192.168.0.3  --master 192.168.0.4       --node 192.168.0.5 --node 192.168.0.6      --pkg-url /root/kube1.18.0.tar.gz      --version v1.18.0

上面就是3条命令,就可以帮我们完成k8s集群的搭建,等待的时长根据自身的网络环境。

注意:上面的passwd 123456,是5个服务器结点的root密码,一定要一样哦

k8s界面控制台

安装好了k8s后,只能用命令方式控制k8s,是很不方便的,所以我们还需要安装一个界面控制台,我们这里选择强大的kuboard

wget https://github.com/sealstore/dashboard/releases/download/v1.0-1/kuboard.tarsealos install --pkg-url kuboard.tar

到这里我们完成了k8s的安装,来看看炫酷的界面


k8s 自动拉取镜像 k8s拉取镜像命令_docker_13


创建Deployment


k8s 自动拉取镜像 k8s拉取镜像命令_k8s拉取harbor镜像_14


k8s 自动拉取镜像 k8s拉取镜像命令_docker_15


kuboard的优势,可以在逻辑上面区分不同的层级,可以方便的让我们一览系统架构


k8s 自动拉取镜像 k8s拉取镜像命令_jar_16


ingress安装

为了让集群外可以访问集群里面的访问,需要安装ingress

kubectl apply -f https://kuboard.cn/install-script/v1.16.2/nginx-ingress.yaml


k8s 自动拉取镜像 k8s拉取镜像命令_k8s拉取harbor镜像_17


配置service服务,以及ingress


k8s 自动拉取镜像 k8s拉取镜像命令_k8s拉取harbor镜像_18


总结

老顾今天整体介绍把一个微服务项目,如何部署到k8s中,经过什么流程,以及需要什么工具,而且推荐了市面上面的主流工具。尤其介绍了k8s集群的搭建的工具,很推荐哦

当然具体工具的使用细节,需要小伙伴们自行搭建,里面会遇到很多的坑,遇到坑就去解决,这样理解起来会更好。

---End---