做动画合成的视频网站,网站建设实训的心得的体会,网页美工课程,桂林象鼻山水月洞你是否被K8S的强大而吸引#xff0c;我相信一部分人是被那复杂的配置和各种专业知识而劝退#xff0c;应该还有一部分人是因为K8S太吃资源而放手#xff01; 这里介绍一款平替工具PasteSpider#xff0c;PasteSpider是一款使用c#编写的linux容器部署工具(使用PasteSpider和… 你是否被K8S的强大而吸引我相信一部分人是被那复杂的配置和各种专业知识而劝退应该还有一部分人是因为K8S太吃资源而放手 这里介绍一款平替工具PasteSpiderPasteSpider是一款使用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)进行讨论!