中小型公司如何搭建运维平台,rancher、kubersphere、rainbond

很多开发人员应该是了解过运维发布相关的平台或实际操作过应用发布,但又通常不是十分熟悉。在一个初创公司,或者没有成熟的运维发布平台的公司,如果让你来搭建一套发布平台,你应该如何去抉择呢?

这里我简单介绍几种。

Tomcat + nginx

有不少公司在初期项目数量很少时有使用这种方式的,一两台云服务器,把项目打个jar上传上去,启动起来完事,主打一个简单便捷。其实这种方式在不少情况下还是不错的选择,并不是所有公司都适合docker、k8s那一套的,这样比较节省服务器资源,low是low了点,适应自己就行。

docker、docker compose

服务器上装个docker,然后把项目代码打成容器镜像,在服务器上运行镜像。

这种方式也有不少开发者在使用,代码打成镜像可以选用阿里云的容器镜像服务,有免费的也有收费的方式,指定代码地址编写Dockerfile即可打成镜像供服务器使用。

纯命令行形式的docker方式其实我不太赞成,毕竟没有可视化界面就很难把控服务的运行状态,以及启动、关闭等操作还得敲命令挺麻烦的,推荐使用portainer这种简易的容器管理界面平台进行管理。操作、查看日志都比较方便。portainer操作简单,功能也不多,基本就是docker的基本管理。

rancher1.6平台

rancher1.6是我长期使用的、也认为是非常适合于中小规模的公司作为企业发布平台,之前曾经写过多篇rancher的使用教程,虽然目前rancher官方已经停止维护1.6版本,而全面转向k8s的2.x版本,但是1.6依旧是可以使用的,目前直接docker pull rancher还是拉取的是1.6版本。

之前的rancher安装教程:安装配置Rancher管理docker-CSDN博客

rancher1.6采用自己的cattle编排方式,通过设置镜像地址的方式来启动各个容器,大家仍然可以采用阿里云容器镜像服务来进行镜像的制作,然后在rancher上添加服务、设置镜像地址即可。

rancher里面还有添加服务依赖的功能,可以将多个服务关联起来,从而进行容器间的服务调用而无需设置IP就能进行访问。同时里面还内置了负载均衡器,可以将服务暴露到外网,作为反向代理进行使用,类似于k8s的ingress的功能。

rancher用来管理规模不大,如50台以下的服务器集群,进行应用服务的容器化编排,其实是非常合适的。内置的编排方式cattle其实是很不错的,和k8s很类似,但整体的学习成本使用成本可比k8s简单太多了,没那么多概念需要理解,上手半小时就能直接进行运维了,而k8s光学习就得好几天。

对于规模不大的服务,可以选择rancher1.6作为发布运维平台。

k8s原生

这年头作为开发要是不会k8s感觉都不好意思跟人打招呼一样,无论多小的公司、三两个服务也得上k8s,对此我只想说,你开心就好。

技术很难,但在合适的场景下能做出正确的选择更重要,过度设计比不会设计更可怕。

目前k8s肯定是主流的运维发布首选,但在上k8s之前,建议还是先考虑考虑是不是有必要性,如果就没几个服务,也不要强行就上springcloud、dubbo之类的微服务框架,至少rancher1.6就可以搞定大部分的场景了。k8s和k3s差不多,有时上个k3s也可以。

这玩意自己搭建的话说实话有点麻烦的,尤其是原生搭建,不建议开发自行尝试,一来要好几台服务器,二来确实步骤多很麻烦,一上来就搭建k8s环境,网上搜很多教程,又搞不成功就容易把你劝退。

目前国内有几个比较成熟的一站式k8s环境搭建的方式,譬如kubersphere、rancher2、rainbond都提供了自己的快速搭建k8s集群的功能,大家访问他们的官网就能看到。如果是用的云服务,那么阿里云的ACK也是搭建好的k8s环境,这些都可以避免手工搭建k8s环境的困难。

如果你头铁,就是要自己在空的服务器上搭建,那么也可以尝试,仅学习即可,学几个命令,搞不定也没关系,反正日后大概率不会用原生的命令部署啥的。

kubersphere、rancher、rainbond

这三个都是开源免费平台,都是用来搭建、管理k8s集群的,但都侧重点不同。

如果你就是普通的开发,想快速的构建起k8s平台并发布运维项目,也不想去学习那么多的k8s的概念,什么deployment、service、ingress等等,也不愿意去学,那么rainbond非常适合你,Rainbond是什么? | Rainbond

它和rancher1.6类似,都是非常容易上手的平台,在自己本机就能搭建起k8s环境并进行发布、管理。也支持发布容器镜像、代码源构建、应用市场等多种来源的应用构建,也支持服务依赖(和rancher1.6的应用关联类似),整体还是比较容易上手的。其中服务间通信也提供了service mesh和k8s原生两种方式。整体我比较推荐rainbond,因为难度最低,对开发来说不需要懂k8s就可以快速上手。

而kubersphere和rancher2.x也都是比较流行的k8s管理平台,其中rancher还创造了k3s。这两个平台我都用过,但都有相当的难度。kubersphere基本上就是把k8s的各个概念组件给界面化了,你需要了解deployment、service等各个k8s的概念才能玩的转,而且查看日志很不方便,里面还需要手工编写一些k8s的yml文件才能发布启动,整体我感觉不适合新手开发。

rancher相对来说不需要手工写一些配置,但也是暴露了很多k8s的概念在里面,你还是需要懂service、ingress等,不然还是跑不起来。

kubersphere和rancher我理解就是将k8s的各个功能给界面化了,并且提供了快速部署起k8s集群的能力,都有相当的操作使用复杂度,对于开发人员来说,并不是很容易。

综上,对于一个尚未有完善运维发布平台的公司,而且后续也不打算招专门的运维人员的场景下,如果规模不大,机器也不多,我建议使用rancher1.6,如果稍复杂,并期望用k8s,我建议上rainbond。并且建议用阿里云的容器镜像服务来进行代码的打包镜像化,不太建议自建jenkins搞流水线那套,运维平台只负责发镜像搞服务关联即可。

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

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

相关文章

本地开启https,配置nodeJs服务

服务端和客户端各有一对公钥和私钥,使用公钥加密的数据只能用私钥解密,建立https传输之前,客户端和服务端互换公钥。客户端发送数据前使用服务端公钥加密,服务端接收到数据后使用私钥解密,反之亦如此。 1. 公钥私钥的…

【Linux】:信号在内核里的处理

信号的发送和保存 一.内核中的信号处理二.信号集操作函数1.一些信号函数2.sigprocmask3.sigpending4.写代码 三.信号在什么时候处理的四.再谈地址空间 一.内核中的信号处理 1.实际执行信号的处理动作称为信号递达(Delivery )2.信号从产生到递达之间的状态,称为信号未决(Pending…

『 Linux 』僵尸进程与孤儿进程

文章目录 🚀僵尸进程 - Z(zomble)🛰️ 僵尸状态与死亡状态的区别 🛰️🛰️ 僵尸状态的危害 🛰️ 🚀孤儿进程🛰️ 为什么托孤 🛰️ 🚀僵尸进程 - Z(zomble) 一个进程的创…

米贸搜| Youtube运营:免费涨粉的16个技巧

1、要求观众订阅你的频道 要求用户订阅你的频道无非是再简单不过的方法了,有时你需要做的只是一个及时的提醒而已。红色的订阅按钮通常很难被忽略,但是你可能还需要提醒用户点击订阅按钮旁边的“铃铛”图标,以打开消息提醒,以便在…

vue找依赖包的网址

https://www.npmjs.com/ 浅收藏一下

心大数据结构题型

选择题 2021 数据处理的单位:数据元素 矩阵压缩存储 2022 ①单链表头插法选择 ②矩阵压缩存储,行优先 ③删除链表节点的时间复杂度 ④稀疏矩阵存储 ⑤平衡二叉树时间复杂度 ⑥栈和队列的出队,问栈的大小至少多少 ⑦拓扑排序 ⑧参考书 360…

30.0/集合/ArrayList/LinkedList

目录 30.1什么是集合? 30.1.2为什么使用集合 30.1.3自己创建一个集合类 30.1.3 集合框架有哪些? 30.1.2使用ArrayList集合 30.2增加元素 30.3查询的方法 30.4删除 30.5 修改 30.6泛型 30.1什么是集合? 我们之前讲过数组,数组中它也可以存放多个元素。集合…

关于torch.backends.cudnn.benchmark = True

cuDNN 是英伟达专门为深度神经网络所开发出来的 GPU 加速库,针对卷积、池化等等常见操作做了非常多的底层优化,比一般的 GPU 程序要快很多。大多数主流深度学习框架都支持 cuDNN,PyTorch 自然也不例外。在使用 GPU 的时候,PyTorch…

Cenos7系统通过链接一键安装LAMP项目环境(linux,apache,mysql,php)

前言:嫌装环境麻烦,以下介绍自动安装环境的方法 一.环境配置 根据自己需要选择 操作系统:CenOS 7.x以上Web服务器:Apache 2.4数据库:MySQL 5.7开发框架:ThinkPHP 5.0(PHP5.0以上)…

CountDownLatch和CyclicBarrier源码详解

其他系列文章导航 Java基础合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、CountDownLatch和CyclicBarrier 二、CountDownLatch源码分析 三、CyclicBarrier源码分析 四、总结 前言 我现在有个场景:现在我有50个任务&…

【Web】NewStarCtf Week2 个人复现

目录 ①游戏高手 ②include 0。0 ③ez_sql ④Unserialize? ⑤Upload again! ⑥ R!!C!!E!! ①游戏高手 经典前端js小游戏 检索与分数相关的变量 控制台直接修改分数拿到flag ②include 0。0 禁了base64和rot13 尝试过包含/var/log/apache/access.log,ph…

Git 入门指南

什么是 Git? Git 的目前最流行的分布式版本控制软件,可以帮助我们高效敏捷的处理任何项目。 版本管理 要理解 Git 我们首先要理解版本管理。 版本管理就是开发过程中用于管理对文件、目录或者工程等内容的修改历史,可以让我们方便的查看历史…

java学习part20内部类

116-面向对象(高级)-类的成员之五:内部类_哔哩哔哩_bilibili 1.内部类

在Anaconda中用命令行安装环境以及安装包

一、下载Anaconda 下载地址 二、创建环境 1. 打开Anaconda命令行 2.创建环境 conda create -n 环境名称 python3.10(需要的python版本号) 3.激活环境 activate 环境名4.下载安装包 pip install 模块名 -i https://pypi.tuna.tsinghua.edu.cn/simple5.下载torch 官网&…

Python语言学习笔记之三(字符编码)

本课程对于有其它语言基础的开发人员可以参考和学习,同时也是记录下来,为个人学习使用,文档中有此不当之处,请谅解。 什么是字符编码 计算机从本质上来说只认识二进制中的0和1,字符编码(Character Encoding) 是一种将…

大数据-之LibrA数据库系统告警处理(ALM-37006 Coordinator进程异常)

告警解释 当出现如下情况时,产生该告警: CN所在机器发生硬件故障(断电、硬盘损坏等)。CN实例数据目录中的postgresql.conf配置文件不存在或者其中某个配置参数不正确。CN实例线程无法监听IP,或者无法绑定监听端口。C…

【Makefile】和【CMake】的区别

Makefile 和 CMake 的区别 Makefile 和 CMake 都是用于构建项目的工具,但它们有一些区别。 Makefile: 语法: Makefile 使用自己的语法规则,包括规则、目标、依赖等。这是一种特定于 make 工具的语法。 平台依赖: Makefile 是平…

【JavaScript框架】Vue与React中的组件框架概念

组件框架是用于构建应用程序的工具,以便将UI和逻辑划分为单独的可重用组件。目前的组件框架包括React、Vue、Angular、Ember、Svelte等。 Vue和React使用了常见的框架概念,如处理状态、道具、引用、生命周期挂钩、事件等。这两个框架在当今的web开发中被…

案例:某电子产品电商平台借助监控易保障网络正常运行

一、背景介绍 某电子产品电商平台是一家专注于电子产品销售的电商平台,拥有庞大的用户群体和丰富的产品线。随着业务规模的不断扩大,网络设备的数量和复杂性也不断增加,网络故障和性能问题时有发生,给平台的稳定运行带来了很大的挑…

项目中高并发如何处理

在项目中处理高并发主要需要考虑以下几个方面的策略: 优化数据库设计:使用合适的数据结构、索引和查询优化技术可以显著提高数据库的响应性能;分库分表使用缓存:缓存是一种非常有效的处理高并发的方法。通过将常用的数据或结果保…