前言
现在很多企业已经进入了docker容器化的部署方式,容器化的部署离不开容器编排的工具,现在用的最多的当属K8S的编排工具。那项目从0开始时,一直进入到k8s中,整体流程是什么,以及用到什么工具组件呢?今天老顾就从整体上面来介绍一下。
整体流程
工作流程
1)开发人员提交代码到Git版本仓库;
2)Jenkins人工/定时触发项目构建;
3)Jenkins拉取代码、代码编码、打包镜像、推送到测试环境的镜像仓库;
4)k8s拉取镜像产生pod中的容器
5)测试环境中测试没有问题后,把镜像同步到生产的镜像仓库中
6)生产环境K8S部署镜像
git
git现在有的私有仓库,有两种选择gitlab,gogs。
gogs
一开始老顾选择的gogs,因为比较轻量级,消耗服务器的资源也很少。但是gogs现有版本中缺少很重要的功能,就是在web界面上面操作拉取分支的功能,这个功能是平常经常用的,但比较可惜的是gogs现在不支持。
gitlab
gitlab功能还是比较强大的,唯一的缺点就是比较耗服务器资源,最好用4G内存承载,要不然很慢哦
jenkins
jenkins应该是持续集成的唯一选择了,功能非常强大,强大的插件功能;不同的团队应用jenkins的方式也不尽相同。
拉取git的插件Git Parameter
动态获取Git仓库Branch、Tag
配置好后,在build时,你可以选择不同的分支
利用pom.xml文件构建项目
在Jenkins本机镜像构建与推送到镜像仓库
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插件
在jenkins中使用shell
mvn dockerfile:build dockerfile:push
这样就更简单一点
注意点:因为我们会对同一个版本会构建多次,镜像images会产生多次,会把上一次的镜像的tag更改为none;我们要记得清除哪些被替换的image,可以使用脚本
注意点:jenkins结点需要安装docker哦,不要忘了
docker images | grep none | awk '{print $3}' | xargs docker rmi
镜像仓库
现在市面上的镜像仓库,不二人选肯定是harbor了,使用起来比较简单,功能也是比较强大的
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.tar
sealos install --pkg-url kuboard.tar
到这里我们完成了k8s的安装,来看看炫酷的界面
创建Deployment
kuboard的优势,可以在逻辑上面区分不同的层级,可以方便的让我们一览系统架构
ingress安装
为了让集群外可以访问集群里面的访问,需要安装ingress
kubectl apply -f https://kuboard.cn/install-script/v1.16.2/nginx-ingress.yaml
配置service服务,以及ingress
总结
今天整体介绍把一个微服务项目,如何部署到k8s中,经过什么流程,以及需要什么工具,而且推荐了市面上面的主流工具。尤其介绍了k8s集群的搭建的工具,很推荐哦
当然具体工具的使用细节,需要小伙伴们自行搭建,里面会遇到很多的坑,遇到坑就去解决,这样理解起来会更好。