k8s业务上线流程

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.分布式服务架构

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/29111.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot3使用Swagger

SpringBoot3使用Swagger 项目中的后端接口进行简单的前端展示一、依赖引入二、快速启动1.在application.yml中配置2.或者properties文件,则配置3.启动项目访问swagger 项目中的后端接口进行简单的前端展示 Swagger是一个用于设计、构建、文档化和使用RESTful Web服务的开源工具…

TWM论文阅读笔记

这是ICLR2023的一篇world model论文,用transformer来做世界模型的sequence prediction。文章贡献是transformer-based world model(不同于以往的如transdreamer的world model,本文的transformer-based world model在inference 的时候可以丢掉…

Xcode编译报错 #error unsupported Swift architecture

1. 问题描述: Xcode15 引入某些三方库时,真机跑起来没问题;但模拟器build时报错卡在 #error unsupported Swift architecture,注释掉代码也不行; 2. 解决办法: 得找到Rosetta类型模拟器才能run起来&…

信号处理中的梯型权重操作(Tapering)

目录 1. 引言2. 一个Tapering操作的例子3. Tapering操作的简单实现延伸阅读1. 引言 Tapering 操作是对信号数据在水平和垂直方向上应用梯形权重,这个操作可以减弱数据边界效应,从而在进行傅里叶变换时减少伪影和边缘效应。本文将通过一个简单的例子来展示 Tapering 操作的具…

ARM应用处理器系列

ARM 应用处理器系列是指基于 ARM 架构设计的用于各种应用场景的处理器。这些处理器被广泛应用于移动设备、嵌入式系统、服务器、物联网设备等领域。以下是一些主要的 ARM 应用处理器系列: 1. Cortex-A 系列 Cortex-A 系列处理器专为高性能和低功耗应用设计&#xf…

【C/C++】工业级别的日志文件轮转策略原理

日志文件轮转(Log Rotation)是一种日志管理策略,用于自动管理日志文件的大小和数量。随着应用程序运行时间的增加,日志文件可能会变得非常大,这不仅会占用大量的磁盘空间,还可能影响应用程序的性能。日志文…

函数模板的具体化

函数模板优点是通用性&#xff0c;可以解决某个方面的普遍性问题&#xff0c;但是这个世界上的事情不是绝对的&#xff0c;有普遍的&#xff0c;就有绝对的。举个栗子&#xff1a; #include <iostream> using namespace std; template <typename T> void Swap(T &…

redis持久化方式—AOF

redis为什么需要持久化 redis是内存数据库&#xff0c;redis所有的数据都保存在内存中 如果此时pc关机或重启&#xff0c;那么内存中的用户数据岂不是丢失了&#xff1f;redis这么不安全吗&#xff1f; 作为数据库&#xff0c;保证数据的安全&#xff0c;持久是基本需求&…

SQL笔记——表的操作、数据修改、列的属性和查询操作

表的操作 在之前应该有一个数据库 先创建一个 user 库,然后可以查看、修改、删除 create databases user;//创建 show databases; //展示 alter databases user //修改 修改的内容; drop databases user1;//删除 或者是 drop databases if exists user1;添加数据之前肯定要知…

java基础-IDEA环境基础用法自动导包等设置

IDEA&#xff1a; 是用于Java语言开发的集成环境&#xff0c;它是业界公认的目前用于Java程序开发最好的工具。 把代码编写&#xff0c;编译&#xff0c;执行&#xff0c;调试等多种功能综合到一起的开发工具。 IDEA项目结构&#xff1a; 多级包用 . 链接。 快速生成 快…

STM32的通用定时器中断编程

如果遇到需要单片机产生严格时序的场景&#xff08;比如DAC输出特定模拟信号&#xff0c;GPIO口控制模拟开关&#xff09;&#xff0c;延时函数可能就无法胜任了。最近在工作时公司上级教会了我使用“门票”思维&#xff08;中断标志位)编写单片机裸机程序&#xff0c;今天写一…

JAVA 替代SWITCH 枚举值 CASE 的 策略模式

看看使用策略模式之前的代码&#xff1a; // switch (type) { // case 0: // terme.setKhdmlist(dmList); // List<Kehu> list getSdList$api(terme); // for (Kehu kehu : list) { // …

论文学习_Large Language Models Based Fuzzing Techniques: A Survey

论文名称发表时间发表期刊期刊等级研究单位 Large Language Models Based Fuzzing Techniques: A Survey 2024年arXiv- 悉尼大学 0.摘要 研究背景在软件发挥举足轻重作用的现代社会&#xff0c;软件安全和漏洞分析对软件开发至关重要&#xff0c;模糊测试作为一种高效的软件…

前端学习-day10

文章目录 01-体验平面转换02-平移效果03-绝对定位元素居中04-案例-双开门06-转换旋转中心点07-案例-时钟-转换原点08-平面转换-多重转换09-缩放效果10-案例-按钮缩放11-倾斜效果12-渐变-线性13-案例-产品展示14-渐变-径向15-综合案例-喜马拉雅 01-体验平面转换 <!DOCTYPE h…

2024.6.17总结1113

今天早上进行了毕设答辩&#xff0c;无论是打印报告还是答辩&#xff0c;整个过程都挺顺利的。 其实&#xff0c;昨天还是挺慌的&#xff0c;就觉得自己的论文还存在许多问题&#xff0c;但是&#xff0c;早上看到那么多人的论文都存在这样那样的问题的时候&#xff0c;我反而…

Spring框架的原理及应用详解(七)

本系列文章简介&#xff1a; 在当今的软件开发世界中&#xff0c;随着应用复杂性的不断增加和技术的快速发展&#xff0c;传统的编程方式已经难以满足快速迭代、高可扩展性和易于维护的需求。为此&#xff0c;开发者们一直在寻求更加高效、灵活且易于管理的开发框架&#xff0c…

C#(C Sharp)学习笔记_多态【十九】

前言 个人觉得多态在面向对象编程中还比较重要的&#xff0c;而且不容易理解。也是学了一个下午&#xff0c;才把笔记写得相对比较完善&#xff0c;但仍欠缺一些内容。慢慢来吧…… 什么是多态&#xff1f; 基本概念 在编程语言和类型论中&#xff0c;多态&#xff08;Poly…

C# + easyui 写的一个web项目

用C# easyui 来开发&#xff0c;其实就是为了开发速度&#xff0c;用easyui可以一天写很多页面&#xff0c;比一些低代码平台还快。 登陆页面 主界面 记录数统计 家庭信息采集表 新建家庭 家庭成员 低保、五保人员帮扶情况登记表 低保、五保人员帮扶情况登记表的新增和编辑 治…

【UE数字孪生学习笔记】 Gameplay框架之TSubclassOf

声明&#xff1a;部分内容来自于b站&#xff0c;知乎&#xff0c;慕课&#xff0c;公开课等的课件&#xff0c;仅供学习使用。如有问题&#xff0c;请联系删除。 部分内容来自UE官方文档&#xff0c;博客等 TSubclassOf TSubclassOf 是一个模板类&#xff0c;用于存储对某个特…

科研辅助工具

科研工具收集 1. 如何筛选出最合适的SCI论文投稿杂志:点击直达 2. 分享三种正确查找期刊全称、缩写的网站: 点击直达