从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)

pastespider,k8s · 浏览次数 : 0

小编点评

## PasteSpider内存需求分析 **服务器空闲资源如何拿来使用?** * 服务器空闲资源可以用于存放服务之间的镜像,以便在需要时进行切换。 * 服务器空闲资源也可以用于存放缓存数据,以便在需要时进行读取。 **空着有什么问题?** * 暂停服务会导致服务无法正常运行。 * 暂停服务会导致其他服务无法连接到服务。 * 暂停服务会导致数据库连接失败。 **空着如何应对流量高峰?** * 使用负载均衡技术将流量分配到多个服务。 * 使用缓存技术减少服务器处理请求的次数。 **空着如何应对其他问题?** * 使用监控工具实时监控服务状态。 * 定期运行扫描工具检测内存泄漏。 * 使用动态脚本调整服务器资源配置。

正文

 

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

        这里介绍一款平替工具PasteSpider,PasteSpider是一款使用c#编写的linux容器部署工具(使用PasteSpider和自己用啥语言开发没关系哈!),简单易上手(从0到一键发布30分钟学习足够了!)非常节省资源,支持Sqlite/Postgresql数据库,支持集群部署,以维护100个docker的container为例,PasteSpider本身消耗的内存大概在300MB(下图是273.4MB)左右!接下来我们将从需求角度介绍PasteSpider是怎么来的!

        我用java开发的,可以使用PasteSpider么?

        我用node开发的,能用PasteSpider部署我的项目么?

        我不开发,只是使用别人的镜像的,能用PasteSpider部署我的项目么?

        ... .. .

        使用PasteSpider部署你的项目,和你的项目本身的开发语言无关,只要满足以下条件即可

        1.你的项目是否需要发布到linux服务器上(因为目前PasteSpider还无法在windows服务器上运行)?

        2.你的项目是纯静态的么?比如html5,这种只要nginx路由一下就能访问的?这个也是可以的!

        3.你的项目通过Dockerfile后,可以打包到容器docker/podman里面运行么?

        只要是你的项目需要发布到linux上,是静态资源或者可以载入到docker/podman里面运行的就可以使用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.占用的资源不能过多,目前很多流行的工具都是油老虎,动不动大几个GB的内存需求,服务器不要钱的啊???

        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的后台为张三或李四指定对应的权限,那么他们就只能发布自己的服务。可以简单理解为子项目为一个服务,比如开发接口的,开发前端的,开发管理端的。在nginx的配置中往往是一个location作为一个服务!

 

 

环境

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

 

 

路由Nginx

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

 

 

仓库Registry

        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)进行讨论!

 

与从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)相似的内容:

从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)

你是否被K8S的强大而吸引,我相信一部分人是被那复杂的配置和各种专业知识而劝退,应该还有一部分人是因为K8S太吃资源而放手! 这里介绍一款平替工具PasteSpider,PasteSpider是一款使用c#编写的linux容器部署工具(使用PasteSpider和自己用啥语言开发没关系哈!),简单易

PasteSpider的集群组件PasteCluster(让你的项目快速支持集群模式)的思路及实现(含源码)

PasteSpider是什么? 一款使用.net编写的开源的Linux容器部署助手,支持一键发布,平滑升级,自动伸缩, Key-Value配置,项目网关,环境隔离,运行报表,差量升级,私有仓库,集群部署,版本管理等! 30分钟上手,让开发也可以很容易的学会在linux上部署你得项目! [从需求角度介

从油猴脚本管理器的角度审视Chrome扩展

从油猴脚本管理器的角度审视Chrome扩展 在之前一段时间,我需要借助Chrome扩展来完成一个需求,当时还在使用油猴脚本与浏览器扩展之间调研了一波,而此时恰好我又有一些做的还可以的油猴脚本 TKScript ,相对会比较熟悉脚本管理器的能力,预估是不太能完成需求的,所以趁着这个机会,我又学习了一波

AI 和 DevOps:实现高效软件交付的完美组合

AI 时代,DevOps 与 AI 共价结合。AI 由业务需求驱动,提高软件质量,而 DevOps 则从整体提升系统功能。DevOps 团队可以使用 AI 来进行测试、开发、监控、增强和系统发布。AI 能够有效地增强 DevOps 驱动流程,从开发人员的业务实用性和支持的角度来看,评估 AI 在 D

[转帖]eBPF 技术实践:加速容器网络转发,耗时降低 60%+

https://my.oschina.net/u/6150560/blog/5587717 背景 Linux 具有功能丰富的网络协议栈,并且兼顾了非常优秀的性能。但是,这是相对的。单纯从网络协议栈各个子系统的角度来说,确实做到了功能与性能的平衡。不过,当把多个子系统组合起来,去满足实际的业务需求,功

如何在2023年开启React项目

在这里,我想给你一个新的React项目入门的简要概述。我想反思一下优点和缺点,反思一下作为一个开发者所需要的技术水平,反思一下作为一个React开发者,每个启动项目都能为你提供哪些功能。最后,你将了解到针对不同需求的3种解决方案。 **免责声明**:从个人开发者的角度来看,我完全支持React团队在

聊聊基于Alink库的推荐系统

概述 Alink提供了一系列与推荐相关的组件,从组件使用得角度来看,需要重点关注如下三个方面: 算法选择 推荐领域有很多算法,常用的有基于物品/用户的协同过滤、ALS、FM算法等。对于不同的数据场景,算法也会在计算方式上有很大的变化。 推荐方式 输入信息可以有多种选择,输入结果也有多种情况。 同时输

从前后端的角度分析options预检请求

options预检请求是干嘛的?options请求一定会在post请求之前发送吗?前端或者后端开发需要手动干预这个预检请求吗?不用文档定义堆砌名词,从前后端角度单独分析,大白话带你了解!

既然测试也要求写代码,那干脆让开发兼任测试不就好了吗?

在软件行业,测试和开发是两个不可或缺的角色。 然而,随着技术的不断演进,测试工作也逐渐从单纯的手工测试过渡到自动化测试,乃至如今的智能化测试。在这个过程中,测试工作也越来越多地涉及到编写代码,甚至代码要求丝豪不比软件开发低,以应对日益复杂的测试需求。这也引发了一个有趣的讨论:既然如此,让开发直接兼任

深度解读《深度探索C++对象模型》之默认构造函数

C++的默认构造函数的作用是什么?什么时候会需要一个默认构造函数,以及默认构造函数从哪里来?这篇文章将从编译器的角度来分析这个问题。