为什么我说小公司也一定要用K8S

Kubernetes是谷歌以Borg为前身,基于谷歌15年生产环境经验开源的一个项目。Kubernetes致力于提供跨主机集群的自动部署、扩展、高可用以及运行应用程序容器的平台,其遵循主从式架构设计,其组件可以分为工作节点(Node)组件和控制平面组件。Kubernetes Master是集群的主要控制单元,用于管理其工作负载并指导整个系统的通信。Kubernetes控制平面由各自的进程组成,每个组件都可以在单个主节点上运行,也可以在支持高可用集群的多个节点上运行。

为什么要用Kubernetes

很多人会有疑问,有Docker了为什么还用Kubernetes?在业务开始进行容器化时,前期需要容器化的项目可能并不多,涉及的容器也并不多,此时基于Docker容器直接部署至宿主机也能实现自己的需求。但是随着项目越来越多,管理的容器也越来越多,此时使用“裸容器”部署的方式管理起来就显得很吃力,并且随着业务量的增加,会明显体会到“裸容器”的不足,比如:

  • 宿主机宕机造成该宿主机上的容器不可用,且无法自动恢复。
  • 容器明明在运行,接口就是不通(健康检查做得不到位)。
  • 应用程序部署、回滚、扩缩容困难。
  • 成百上千的容器和涉及的端口难以维护。

上面的问题只是做一个简单的罗列,真正使用时还有很多其他的问题。可能你也体验过过像docker-compose、docker-swarm等编排工具,但这些工具的功能和Kubernetes的功能还是相差甚远,所以注定Kubernetes编排工具将成为主流的容器编排工具。

对于开发人员

由于公司业务多,开发环境、测试环境、预生产环境和生产环境都是隔离的,而且除了生产环境,为了节省成本,其他环境可能没有进行日志收集。在没有用Kubernetes的时候,查看线下测试的日志,需要开发或者测试人员找到对应的机器,再找到对应的容器,才能查看日志。在使用Kubernetes之后,开发和测试人员直接在Kubernetes的Dashboard上找到对应的Namespace,即可定位到业务的容器,然后可以直接通过控制台查看到对应的日志,大大降低了操作时间。

把应用部署到Kubernetes之后,代码的发布、回滚以及蓝绿发布、金丝雀发布等都变得简单可控,不仅加快了业务代码的迭代速度,而且全程无须人工干预。生产环境可以使用Jenkins、GitRunner等工具进行发版或回滚等。从开发环境到测试环境,最后到生产环境,完全遵守一次构建,多集群、多环境部署,通过不同的启动参数、不同的环境变量、不同的配置文件区分不同的环境。

在使用服务网格后,开发人员在开发应用的过程中,无须再去关心代码的网络部分,这些功能都被服务网格实现,让开发人员可以只关心代码逻辑部分,即可轻松实现网络部分的功能,比如断流、分流、路由、负载均衡、限速和触发故障等功能。

在测试过程中,可能同时存在多套环境,当然也会创建其他环境或临时环境,之前测试环境的创建需要找运维人员或者自行手工搭建。在迁移至Kubernetes集群后,开发人员如果需要新的环境,无须再找运维,只需要在Jenkins上点点鼠标即可在Kubernetes集群上创建一套新的测试环境。

对于运维人员

对于运维人员,可能经常因为一些重复、烦琐的工作感觉厌倦,比如一个项目需要一套新的测试环境,另一个项目需要迁移测试环境至其他平台。传统架构可能需要装系统、装依赖环境、部署域名、开通权限等,这一整套下来,不仅耗时,而且可能会因为有某些遗漏而造成诸多问题。而如今,可以直接使用Kubernetes包管理工具,一键式部署一套新的测试环境,甚至全程无须自己干预,开发人员通过Jenkins或者自动化运维平台即可一键式创建,大大降低了运维成本。

在传统架构体系下,公司业务故障可能是因为基础环境不一致、依赖不一致、端口冲突等问题,而现在使用Docker镜像部署,Kubernetes进行编排,所有的依赖、基础都是一样的,并且环境的自动化扩容、健康检查、容灾、恢复都是全自动的,大大减少了因为这类基础问题引发的故障。另外,也有可能公司业务由于服务器宕机、网络等问题造成服务不可用,此类情况均需要运维人员及时去修复,而在Kubernetes中,可能在收到严重告警信息时,Kubernetes已经恢复完成了。

在没有使用Kubernetes时,业务应用的扩容和缩容都需要人工去处理,从采购服务器、上架到部署依赖环境,不仅需要大量的人力物力,而且非常容易在中间过程出现问题,又要花费大量的时间去查找问题。成功上架后,还需要在前端负载均衡添加该服务器。而如今,可以利用Kubernetes的弹性计算一键式扩容和缩容,不仅大大提高了运维效率,而且还节省了不少的服务器资源,提高了资源利用率。

在反向代理配置方面,可能对Nginx的配置规则并不熟悉,一些高级的功能也很难实现,但是在Kubernetes上,利用Kubernetes的Ingress即可简单地实现那些复杂的逻辑,并且不会再遇到Nginx少加一个斜杠和多加一个斜杠的问题。

在负载均衡方面,之前负载均衡可能是Nginx、LVS、HAProxy、F5等,云上可能是云服务商提供的负载均衡机制。每次添加删除节点时,都需要手动去配置前端负载均衡,手动去匹配后端节点。在使用Kubernetes进行编排服务时,使用Kubernetes内部的Service即可实现自动管理节点,并且支持自动扩容、缩容。

在高可用方面,Kubernetes天生的高可用功能让运维人员彻底释放了双手,无须再去创建各类高可用工具,以及检测脚本。Kubernetes支持进程、接口级别的健康检查,如发现接口超时或者返回值不正确,会自动处理该问题。

在中间件搭建方面,根据定义好的资源文件,可以实现秒级搭建各类中间件高可用集群,并且支持一键式扩容、缩容,如Redis、RabbitMQ、Zookeeper等,并且大大减少了出错的概率。

在应用端口方面,传统架构中,一台服务器可能跑了很多进程,每个进程都有一个端口,需要人为地去配置端口,并且还需要考虑端口冲突的问题,如果有防火墙的话,还需要配置防火墙。在Kubernetes中,端口统一管理、统一配置,每个应用的端口都可以设置成一样的,之后通过Service进行负载均衡,大大降低了端口管理的复杂度和端口冲突。

无论是对于开发人员、测试人员还是运维人员,Kubernetes的诞生不仅减少了工作的复杂度,还减少了各种运维成本。上述带来的便利性只是比较小的一部分,更多优点只有用了才能真正体会到。

同时,为了让大家更好的学习云原生K8S知识,会送给大家一份我整理了一个月多的K8S实战操作资料。关注公众号「程序员溪昂」,回复云原生资料即可。

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

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

相关文章

2024年3d云渲染怎么选?怎么挑好的云渲染农场

3D渲染属于最消耗电脑计算算力过程,并且渲染时间相对于效果图渲染比较久,不少的CG创作者都是通过网络上的“云渲染”平台来完成,提升效率的同时,还可降低渲染的成本。那么好的3D云渲染平台怎么选择呢?在选择时关注哪几个要点呢?…

多角度展文明风采!成都市第二届公益短视频大赛落幕

近日,“金芙蓉文明让生活更美好”成都市第二届公益短视频大赛揭晓获奖名单,170余部作品脱颖而出。此次大赛共收到700余部参赛作品,以不同手法、从不同角度描绘文明成都。 用短视频弘扬社会主义核心价值观 以真实故事为原型引发更多人共鸣 …

中级职称通过率是否高?

中级职称的通过率因地区和行业而异 首先,中级职称的通过率因不同的地区和行业而异。在一些行业和地区,中级职称的通过率可能较高,例如一些技术领域的职称,而在其他行业和地区,通过率可能较低。一般来说,技术…

Java异常处理--异常处理的方式1:try-catch-finally

文章目录 一、异常处理概述二、方式1:捕获异常(try-catch-finally)(1)抓抛模型(2)try-catch-finally基本格式1、基本语法2、整体执行过程3、try和catch3.1 try3.2 catch (Exceptiontype e) &…

Linux系统——管道命令tr、cut、sort、uniq命令

一、tr 1.替换 表示将1替换为a 2.删除 tr -d 3.压缩 tr -t 二、cut -d 指定分隔符 -f 指定需要的列 1.提取所需要的列 2.延伸——磁盘剩余空间不足发起警告 可以制定一个计划任务 每30分钟提醒自己磁盘剩余空间情况 三、sort -t 指定分隔符 -k 指定列排序 四、uniq…

Java重写ArrayList方法

前言:ArrayList中有很多方法,我们只有深知这些方法是怎么实现的才能更好的使用,不用死记硬背 我们来一一实现(重写) 前提准备:我们需要先创建一个类,类中写ArrayList的内部结构组成 public cl…

82. 删除排序链表中的重复元素 II

给定一个已排序的链表的头 head , 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回 已排序的链表 。 示例 1: 输入:head [1,2,3,3,4,4,5] 输出:[1,2,5]示例 2: 输入:head [1,1,1,2…

代码随想录算法训练营第五天|哈希表理论基础,242.有效的字母异位词,349. 两个数组的交集,202. 快乐数,1. 两数之和

系列文章目录 代码随想录算法训练营第一天|数组理论基础,704. 二分查找,27. 移除元素 代码随想录算法训练营第二天|977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II 代码随想录算法训练营第三天|链表理论基础&#xff…

【Elsevier】中科院分区升至1区TOP,录用率50%, 代表作神刊!

发表说 截图来源:LetPub 01 期刊概况 Computers & Industrial Engineering 【出版社】Elsevier 【ISSN】0360-8352 【检索情况】SCI&EI双检 【WOS收录年份】1976年 【出刊频率】月刊,最新一期Volume 188 ,In progress (February…

arcgis javascript api4.x以basetilelayer方式加载arcgis发布的栅格切片服务

需求: 以arcgis js api的basetilelayer加载arcgis发布的栅格切片服务 效果图: 其中和tileinfo和lods,这样获取: https://map.geoq.cn/arcgis/rest/services/ChinaOnlineCommunity/MapServer/?fpjson urltemplate: …

TortoiseGit 2.15.0.0 安装与配置(图文详细教程)

TortoiseGit的安装与配置 TortoiseGit是Tortoise为Git提供的版本可视化工具,简化了记忆Git命令行的过程,将命令行可视化。 确保自己电脑中已经下载好了git 官网下载TortoiseGit Download – TortoiseGit – Windows Shell Interface to Git 选择64-bi…

电商平台api接口对接须知

随着互联网的发展和普及,电商平台已成为人们日常生活中不可或缺的一部分。而为了保证电商平台的正常运行,平台与开发者之间需要进行数据交互,这便涉及到了电商平台API接口对接的问题。本文将详细介绍电商平台API接口对接的须知事项。 一、了…

springboot摄影跟拍预定管理系统源码和论文

首先,论文一开始便是清楚的论述了系统的研究内容。其次,剖析系统需求分析,弄明白“做什么”,分析包括业务分析和业务流程的分析以及用例分析,更进一步明确系统的需求。然后在明白了系统的需求基础上需要进一步地设计系统,主要包罗软件架构模式、整体功能模块、数据库设计。本项…

Javascript 地狱级的if else / switch case该如何优化?

目录 问题 一、7大策略优化 1.单个if语句优化 2.if/else语句优化 3.多条件判断 4.多个 if else 嵌套优化策略 问题场景 如何优化 1.使用卫语句 2. try catch优化 3. 可选链 optional chaining 5.Map优化 场景实战 6.策略模式优化 7.复杂二维数组策略模式 …

简单易用的快速原型软件终于被我找到了!

在产品开发过程中,原型设计是一个非常重要的环节,它不仅有助于团队之间的合作和沟通,而且是产品是否符合用户体验的关键。在本文中,我们将推荐一些有用的原型设计工具 即时设计 即时设计是一种在线原型设计工具。你可以用它在线…

RPA与通知机器人的完美结合

写在前面 在现代快节奏的工作环境中,我们经常会面临多个任务同时进行的情况,你还在为时间不够用、忙碌而惆怅吗?你还在为时刻盯着电脑流程而烦恼吗?你还在为及时收不到自己的自动化任务进度而焦躁吗?别担心&#xff0…

目标检测数据集 - 行人检测数据集下载「包含VOC、COCO、YOLO三种格式」

数据集介绍:行人检测数据集,真实场景高质量图片数据,涉及场景丰富,比如校园行人、街景行人、道路行人、遮挡行人、严重遮挡行人数据;适用实际项目应用:公共场所监控场景下行人检测项目,以及作为…

中国关心下一代工作委员会健康体育发展中心美育舞蹈考官一王雪

王雪—— 《中国关心下一代工作委员会》健康体育发展中心、美育舞蹈考官、评委 北京舞蹈学院舞蹈编导 朝阳区小红门地区文化艺术-领头人 中国舞舞蹈家协会会员 2019年7月7日中国观网第六届京津冀淑女 2021年辅导学生登上央视春晚 《听我说》 2023年4月22日带学生参加万人…

Vue 3,element table表格动态添加

el-table实现表格动态新增/插入/删除表格行&#xff0c;可编辑单元格 效果图 代码实现 <template><el-table :data"formDate.scoreList4" style"width:100%;height: 96%;" stripe show-summary:summary-method"calculateSummary":he…

【2023年收入最高的10种编程语言】

在过去的一年时间里&#xff08;2022 年 10 月 1 日到 2023 年 10 月 1 日&#xff09; &#xff0c;DevJobsScanner 分析了来自世界各地的超过 1000 万份开发工作机会&#xff0c;以了解市场以及最热门、薪酬最高的编程语言。值得注意的是&#xff0c;本项研究只关注了来自美国…