为什么我说小公司也一定要用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,一经查实,立即删除!

相关文章

第十三讲_css 伸缩盒模型flex

css 伸缩盒模型flex 1. 伸缩盒模型介绍2. 伸缩盒模型的主轴方向3. 伸缩盒模型的主轴换行4. 主轴上的对齐方式5. 侧轴上对齐方式5.1 一行的侧轴上对齐方式5.2 多行的侧轴上对齐方式 6. 伸缩项目的伸缩性6.1 伸缩项目在主轴上的基准长度6.2 伸缩项目的放大6.3 伸缩项目的缩小 7. …

网络工程师:计算机基础知识面试题(二)

53.在可变分区管理中,需要哪些硬件机制? 在可变分区管理(Variable Partitioning)中,需要以下硬件机制: 1. 内存管理单元(Memory Management Unit,MMU): MMU…

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

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

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

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

中级职称通过率是否高?

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

Vue 3 中的响应式原理

Vue 3是Vue.js的最新版本,它引入了新的Composition API,并带来了一些重要的改进和优化。其中,响应式原理是Vue框架的核心机制之一,它使得当数据发生变化时,视图能够自动更新。在Vue 3中,响应式原理的实现细…

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…

前端笔试题(一)

1.vue如何实现数据的双向绑定 利用v-model来实现双向数据绑定 通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调来渲染视图 2.使用vue渲染大量数据时,如何进行优化…

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…

Linux常用功能

Linux是一个功能强大的操作系统,具有许多常用功能。以下是一些Linux的常用功能: 命令行界面:Linux的命令行界面是用户与操作系统交互的主要方式。用户可以通过输入命令来执行各种操作,例如文件管理、系统管理、软件安装等。包管理…

代码随想录算法训练营第五天|哈希表理论基础,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接口对接的须知事项。 一、了…

【Linux】如何检查Linux用户是否具有sudo权限

问题背景或前提知识 在Linux系统中,sudo(superuser do)是一个重要的命令,它允许普通用户以系统管理员的身份执行命令。了解用户是否拥有sudo权限对于系统管理和安全性来说是非常重要的。 技术名词解释 sudo:一种程序…

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

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

ZZULIOJ 1106: 回文数(函数专题)

题目描述 一个正整数&#xff0c;如果从左向 右读&#xff08;称之为正序数&#xff09;和从右向左读&#xff08;称之为倒序数&#xff09;是一样的&#xff0c;这样的数就叫回文数。输入两个整数m和n&#xff08;m<n)&#xff0c;输出区间[m&#xff0c;n]之间的回文数。…