从需求角度介绍PasteSpider(K8S平替部署工具)

        你是否被K8S的强大而吸引,我相信一部分人是被那复杂的配置和各种专业知识而劝退,应该还有一部分人是因为K8S太吃资源而放手!

        PasteSpider是一款使用c#编写的linux容器部署工具,简单易上手,非常节省资源,支持Sqlite/Postgresql数据库,支持集群部署,以维护100个docker的container为例,PasteSpider本身消耗的内存大概在300MB(下图是273.4MB)左右!接下来我们将从需求角度介绍PasteSpider是怎么来的!

        以上是一台使用PasteSpider(myspider)管理的linux服务器上的容器运行情况图,NAME为xxxx_xx_xxx_xxxxxxxxxxx的容器为PasteSpider部署的!

部署现状

        从我的观察来看,目前市面上部署服务的,大概可以分3类,

1.使用强大工具部署的,比如使用K8S,K3S等,这类有一个通性那就是这些工具消耗的资源足够大,然后是上手有难度!

2.使用原始的方式部署,就是手打命令,或者从部署的文本或者history历史复制命令部署,主打一个冷静,安静,认真的工作小透明,一不小心就部署错了!

3.基于自己对部署步骤的理解,编写sh命令部署,其实和2是一样的,半手动而已!极大减少部署错误,但是不够自动,也对版本回滚等抓头抓脑!

        综上,大家迫切需要一款节省资源,又简单易上手的部署工具!PasteSpider绝对适合你!

运行原理

        PasteSpider的运行原理很简单,就和手动的类似,用到的其他工具也就是我们常用的Nginx(作为路由,转发,代理用),docker/podman(作为容器管理用),PasteSpider没有K8S的各种POD等概念,遇到问题也不需要找特殊的资料,只要记住PasteSpider只是把部署的命令形成一条一条的命令,按序执行而已,所以遇到问题,你大可查看日志,然后找各自的资料!

图形操作

        PasteSpider使用图形界面,简单易上手,只要操作界面上的一些表单,即可完成项目,服务等的配置和部署工作!

        上图为PasteSpider管理端的主界面,可以看到大致板块和功能!

        上面是创建一个项目的服务的界面,可以看出都是图形输入的,简单易上手。

运行安全

        作为一个工具,辅助工具!必须不能寻宾夺主,提现在2个方面,

        1.吃的不能比主人的多,

        2.不能干扰主服务的运行!

        我看很多人的服务器,工具等杂七杂八的东西吃的资源是实际需求服务所占资源的几倍甚至几十倍!如果访问量大了,请问如何扩展?比较服务器空着才能应对更大的意外流量!

        近几年也有很多新闻,由于工具的原因导致主服务宕机的,PasteSpider的运行作用只在于帮助部署和服务运行状态的数据获取(用于显示报表),如果PasteSpider挂了,其他运行的服务是不受影响的,主打的一个就是简单,干净,不牵扯!

        很多人部署后,跑起来就不管了,你咋知道你的代码有没有内存泄漏,死循环等?指望docker等的重启机制?这种问题往往在关键时候掉链子,所以及时发现问题及早处理才是正事!

概念清晰

        PasteSpider的部署设计主要是基于项目的维度,偏向于微服务(其实我更偏向于说是分布式),比如有一个商城系统,我们把她拆分成api,web,manage,h5,node,grpc等服务,这几个服务可以通过nginx的location配置串联起来,比如访问/api/的路径,就转发到api所在的服务,访问/node/就转发到Node的websocket实时通讯,以此类推!

项目

        一个项目可以包含多个服务,服务有多种类型(纯静态的,不需要构建镜像的,直接放宿主服务器的,比如web,或者是打包后的vue等),需要构建镜像,然后载入到容器中运行的(比如.net/java/php/go等编写的api),其他的组件非自己编写的代码,比如redis等。可以这么理解,一个或者多个服务有关联的,可以用一个项目来描述他们!

服务

        服务之间是隔离的,比如你可以把node交给张三开发,api交给李四开发,然后在PasteSpider的后台为张三或李四指定对应的权限,那么他们就只能发布自己的服务。

环境

        做开发的都知道,开发一般会有至少2个环境,测试环境和正式环境,PasteSpider为了解决不同环境的测试问题,也引入了环境的概念,环境是另外一个维度的划分,比如nginx的配置,会按照项目和环境进行分割,也可以通过key-value的配置,针对不同环境配置不一样的启动环境变量,比如SqlConnectionString等

路由

        为了解决发布的时候遇到的服务端开的问题,PasteSpider引入Nginx作为代理模块,从环境和项目维度出发,支持服务的平滑升级,发布的时候自动更新对应的nginx内容,内置模板案例,简单配置即可使用。(Nginx安装于宿主服务器)

仓库

        PasteSpider支持使用docker的registry作为私有仓库使用,如果有多个服务器需要关联使用,则强烈建议启用仓库模式,这个仓库就是一个存放镜像的地方,这样只要一个地方打包,其他服务可以拉取这个镜像进行运行等。PasteSpider采用一键创建仓库。目前在centos7和ubuntu上都测试使用过。

预警

        服务器的运行状态,虽然说我们没必要实时知道,但是如果有情况,还是希望能够知晓的,比如某一个服务的CPU一直100%,比如服务器的硬盘占用过多了(由于硬盘爆满导致宕机的事件应该不少吧!),PasteSpidre里面使用2个维度进行了数据的监听,服务监控和服务器监控,可以让你在第一时间知晓危险,及时做出处理,避免不必要的宕机事件!

定时任务

        由于服务器的特性,很多时候我们往往不能随时升级,一般会选择在闲时进行升级,这个时候就需要定时任务了,定时任务支持任务串,也就是多个服务升级,按照一定顺序执行,比如我进行升级的顺序就是api-->grpc-->rabbit-->web,一般在凌晨进行,这个时候定时任务就帮上大忙了!

源码构建发布

        devops还是很火的,通过配置PasteSpider也支持这git/svn的源码发布,大致流程是通过git/svn的提交触发webhook通知PasteSpider进行对某一个服务执行拉取源码,编译,发布,构建,升级等一序列操作!

简单部署

        以上只是PasteSpider的常用功能,PasteSpider的部署也是很简单的,只需要把PasteSpider的文件下载后,根据命令构建PasteSpider的镜像,然后一行代码就可以启动自己的PasteSpider,几分钟就可以开启你的PasteSpider之行!

部署案例

        比如我们在编写api服务的代码,需要发布到服务器上,只要使用配套的PasteSpiderFile文件快稳准的完成部署工作!

        以.net的服务为例,在VS上发布到文件夹后(项目生成成功,不一定能够发布成功),按照上图的操作,选择对应的项目,然后按照顺序执行文件同步(采用差量升级,所以每次升级的文件数量很少的),最后点击构建升级,然后等待webhook的通知即可完成项目的发布工作!

  其他问题

nginx的路由,如何和container挂钩?

        针对这个问题,建议使用内部ip,能局域网的就不建议使用域名访问,项目中的服务支持是否开启监听端口模式(这种一般用于多服务器模式),配置路由的话,部署项目服务的时候会根据container的内部ip进行代理转发。

docker重启后,container的IP会变更,如何保证nginx的代理不出问题?

        针对这个问题,PasteSpider引入了网关,也就是一个项目一个网段,自定义网关的话,docker重启后,container的内部ip是不会变更的。

集群发布的时候,如何保证多个container不会占用同一个文件

        同一个服务,我们在部署的时候,设定的虚拟目录一般是一样的,其实可以通过key-value里面把环境变量打开,然后就可以在部署的时候往集群中的container写入不一样的变量,比如container1设定的目录可以为/spider/path1/,container2设定的目录可以为/spider/path2/,比如container的日志文件,我们就希望他们写入不同的文件中!

部署的时候,子任务执行失败,要如何处理?

        一个部署任务,其实是由多个子任务组合而成的,子任务有执行顺序,有错误等级,通过任务的详细,可以查看子任务的执行情况,点击子任务可以查看执行的语句和结果,通过这些信息进行排查!PasteSpider系统并没有自己的command,所有的command都是有他的来源的,比如构建镜像,就是docker build或者podman build等,搜索对应的知识库即可!

更多问题可以加入QQ群(296245685)进行讨论!

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

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

相关文章

shell脚本实现linux系统自动化配置免密互信

目录 背景脚本功能脚本内容及使用方法 1.背景 进行linux自动化运维时需要先配置免密,但某些特定场景下,做了互信的节点需要取消免密,若集群庞大节点数量多时,节点两两之间做互信操作非常麻烦,比如有五个节点&#x…

C++——动态规划

公共子序列问题 ~待补充 最长公共子序列 对于两个字符串A和B,A的前i位和B的前j位的最大公共子序列必然是所求解的一部分,设dp[i][j]为串A前i位和B串前j位的最长公共子序列的长度,则所求答案为dp[n][m],其中n,m分别为…

微信小程序主体变更的操作教程

小程序迁移变更主体有什么作用?进行小程序主体迁移变更,那可是益处多多呀!比方说,能够解锁更多权限功能;在公司变更或注销时,还能保障账号的正常使用;此外,收购账号后,也…

详解xlsxwriter 操作Excel的常用API

我们知道可以通过pandas 对excel 中的数据进行处理分析,但是pandas本身对格式化数据方面提供了很少的支持,如果我们想对pandas进行数据分析后的数据进行格式化相关操作,我们可以使用xlsxwriter,本文就对xlsxwriter的常见excel格式…

Salesforce AI研究: 从奖励建模到在线RLHF工作流

摘要 该研究在本技术报告中介绍了在线迭代基于人类反馈的强化学习(Online Iterative Reinforcement Learning from Human Feedback, RLHF)的工作流程,在最近的大语言模型(Large Language Model, LLM)文献中,这被广泛报道为大幅优于其离线对应方法。然而,现有的开源RLHF项目仍然…

Android存储文件路径的区别

一、Android存储简介 Android系统分为内部存储和外部存储 从Android6.0开始不断在更新存储权限 外部存储路径的开头:storage/emulated/0 内部存储文件路径的开头:/data/user/0/应用的包名(packageName) 在设备上对应的目录为/data…

Linux的命名管道 共享内存

目录 命名管道 mkfifo函数 unlink函数 命名管道类 服务端 客户端 共享内存 shmget函数 ftok函数 key和shmid的区别 snprintf函数 ipcs指令 ipcrm指令 shmctl函数 shmat函数 void*做返回值 创建共享内存空间 服务端 客户端 命名管道 基本概念&#xff1…

笔记本黑屏,重新开机主板没有正常运作的解决办法

拆开笔记本后壳,打开看到主板,将主板上的这颗纽扣电池拆下来,如果是带连接线的(如下图),可以将接口处线头拔出,等1分钟再把线接上。 ------------- 以下是科普 首先,电脑主板上的这…

力扣例题(循环队列)

链接 . - 力扣(LeetCode) 描述 思路 我们使用数组来创建循环队列 数组的大小我们就额外对开辟一块空间 MyCircularQueue(k) 开辟一个结构体,存放队列的相关数据 分别为size,数组指针_a,起始位置head,结束位置tail 注意:我们…

移动端自动化测试工具 Appium 之持续集成

文章目录 一、背景二、前置条件三、代码部分1、pom.xml文件配置2、main入口代码 四、Jenkins 部分1、下载Jenkins2、安装插件3、job配置4、选择构建 五、工程目录六、报告示例七、总结 一、背景 持续集成是老生话谈的事情,用的好不好,看自己公司与使用场…

能播放SWF文件的FlashPlayer播放器

问题: 你是不是遇到了 flash 动画 放不了了? 以前的flash游戏玩不了了 在网上很难找到好用的,免费Flashplayer播放器, 找到的也没法保存.exe 以前买的课件放不了了 一打开就更新提示: 再不就是意外能打开了但【创建…

IBM Granite模型开源:推动软件开发领域的革新浪潮

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

高中数学:平面向量-加减运算

一、向量的加法运算 三角形法则(推荐) 两个或多个向量收尾相连的加法运算,用三角形法则 简便算法 首尾相连的多个向量,去掉中间点,就是最终的和。 也可以用三角形法则证明 向量加法交换律 向量加法结合律 平行四…

讲解SSM的xml文件

概述&#xff1a;这些配置文件很烦&#xff0c;建议直接复制粘贴 springMVC.xml文件 <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema/beans"xmlns:xsi"http://www.w3.org/2001/XM…

【Image captioning】In Defense of Grid Features for Visual Question Answering实现流程

In Defense of Grid Features for Visual Question Answering实现流程 网格特征预训练代码 这是该论文的特征预训练代码发布: @InProceedings{jiang2020defense,title={In Defense of Grid Features for Visual Question Answering},author={Jiang, Huaizu and Misra, Ishan…

霍廷格电源 Tru plasma DC3030 通快DC3040 MF3030

霍廷格电源 Tru plasma DC3030 通快DC3040 MF3030

jdk安装多个版本,但是java -version显示最早安装的版本,换掉Path或者JAVA_HOME不生效问题

问题一&#xff1a;当你的电脑上又多个jdk版本&#xff0c;如17 或者8时&#xff0c;使用命令行 java -version显示最早安装的&#xff0c;如下图所示&#xff1a;环境变量配置的17&#xff0c;但是命令行显示的是8。 原因&#xff1a;windows电脑装jdk17后 会在你的环境变量…

5.14_练习

1、字符串逆序 编写一个函数reverse_string(char* string)(递归实现) 实现&#xff1a;将参数字符串中的字符反向排列&#xff0c;不是逆序打印 要求&#xff1a;不能使用C函数库中的字符串操作函数 比如&#xff1a; char arr[ ]"abcdef"; 逆序之后数组的内容…

全面提升数据采集效率:亮数据产品的应用与评估详解

全面提升数据采集效率&#xff1a;亮数据产品的应用与评估详解 文章目录 全面提升数据采集效率&#xff1a;亮数据产品的应用与评估详解背景应用场景&#xff1a;平台首页信息抓取准备评测素材详细的产品使用和评测流程产品介绍亮数据的IP代理服务亮数据的爬虫工具及采集技术 注…

云商城系统源码,无后门,一站式系统Java源码

云商城系统&#xff0c;无后门&#xff0c;一站式系统Java源码&#xff0c;心权益商品数量不限数量 系统对接 手动发货 自动发货 兑 换 码 订单监控 商品监控 对象存储 邮箱提醒 加价模板 密价功能 三方支付 会员体系 财务明细 交易分析 售后服务 技术支持 【Java源码】云商…