k8s业务上线流程

搭建好k8s集群之后,需要在集群内部运行一些业务程序,并可以访问,这样的集群才有意义。之前只是自己学习如何搭建集群,如何创建资源对象,更多的是在学习和练习层面,并没有实际用处,对k8s实际业务上线流程也不是很了解,所以最近学习了下k8s集群的部署流程,简单整理记录如下。

1.传统部署

整体流程为:

开发人员将写好的代码提交到代码仓库(如Gitlab),运维人员通过CI/CD工具(如Jenkins)将代码拉取下来,并执行相应的命令或脚本进行构建,对于多节点集群来说,还需要使用自动化工具(如Ansible)将代码分发到各个节点,并启动程序,另外还需要配置负载均衡器实现请求转发和负载均衡。

2.k8s部署

 

整体流程为:

开发人员将写好的代码提交到代码仓库(如Gitlab),运维人员通过CI/CD工具(如Jenkins)将代码拉取下来,然后使用新版本代码构建新版本镜像并上传到镜像仓库。如果是新上线的业务,需要基于新镜像创建pod等,如果是系统升级,则直接修改已有pod的镜像版本即可,k8s会自动完成滚动升级。当然还需要创建相应的service和ingress以使我们的业务程序可供外部访问。

3.项目迁移到k8s流程

整体流程为:

首先构建新版本镜像,然后基于新镜像启动相应pod,并使用volume对数据进行持久化存储,然后创建service将应用暴露出去,使用ingress对外发布应用,最后为集群添加日志和监控等系统。

4.Jenkins接入k8s流程

整体流程为:

1.项目开发:开发写好代码并提交到Gitlab仓库中;

2.编写dockerfile:一般研发同事会写好,如果研发不会写,运维也可以帮忙写,通用是这样的,由运维构建一个只有lnmp的镜像,研发在写dockerfile时from指定lnmp的镜像,并添加相应的代码文件和启动命令即可,然后把dockerfile文件上传到Gitlab仓库;

3.配置Jenkins:运维人员搭建并配置Jenkins,添加相应的执行命令或执行脚本,包括代码拉取,镜像构建,程序启动等;

4.构建:开发人员只需要在Jenkins页面上点一下立即构建,就会执行相应命令或脚本来拉取代码,构建镜像,启动程序;

5.镜像上传:构建完docker镜像后可以将镜像上传到私有仓库中;

6.创建pod:一般会在Jenkins远程通过kubectl -s apiserver地址去调用k8s管理命令去创建pod,kube-apiserver会在相应node节点从私有仓库获取镜像并运行容器;

7.暴露应用:如果是全新部署直接使用run命令部署即可,然后用expose开放端口,过滤出svc的端口发个邮件提示上线成功;

8.发布应用:对于实际业务来说,一般需要创建ingress来对外发布应用,并实现七层负载均衡;

即:开发写代码---将代码上传至gitlab---通过Jenkins从gitlab上获取代码并构建镜像---将镜像上传至私有仓库---调用kube-apiserver创建pod---暴露并发布应用---上线。

说明:如果使已有项目升级,只需要修改相应pod的镜像版本即可,k8s会自动完成滚动升级,不会影响业务系统正常运行。

5.分布式服务架构

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐