从物理机到K8S:应用系统部署方式的演进及其影响

这篇具有很好参考价值的文章主要介绍了从物理机到K8S:应用系统部署方式的演进及其影响。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概述

随着科技的进步,软件系统的部署架构也在不断演进,从以前传统的物理机虚拟机DockerKubernetes,我们经历了一系列变化。

这些技术的引入给我们带来了更高的资源利用率、更快的部署速度和更强大的扩展性,下面让我们一起探索这些演进,了解如何从传统部署走向现代化架构,为软件系统的开发和部署带来更多的便利和灵活性。

物理机部署

物理机部署在计算机早期阶段比较盛行,因为那时候虚拟化和云计算等技术还没有普及,物理机是主要的部署选择。

优点

  • 性能和资源控制:物理机提供了直接访问硬件资源的能力,在某些对性能要求较高的应用场景中,可以实现更好的性能表现。
  • 硬件特定需求:某些应用程序可能对特定硬件设备或外部接口有依赖,例如需要直接访问物理网卡或存储设备

缺点

系统资源利用率较低

  • 不同应用程序依赖于同一类库的不同版本,必须使用不同的机器
  • 不同的应用程序不能共用同一端口,这使得在某些场景下,即使计算节点还有足够的计算资源,依然无法通过 部署多个实例来提供服务

系统资源无法进行有效隔离

  • 很可能出现一个应用程序耗光所有资源,导致其他应用程序无法正常运行的情况。
  • 无法做到应用程序快速弹性扩容

运维方式

物理机代表:IBM小型机、HP小型机,在此架构和部署的模式下,哪种应用部署在哪些节点上,往往是固定不变的,这使得自动化运维变得困难重重,通常的做法是人工维护应用与服务器之间的关系表

虚拟机部署


虚拟机是一种将物理计算机资源划分为多个独立的虚拟环境的技术,通过虚拟化软件,可以在一台物理服务器上运行多个虚拟机,云计算的兴起和发展,使得虚拟机得到了更广泛的应用,截止目前,大部分还是有在用虚拟机部署。

优点

  • 硬件资源隔离
  • 资源的充分利用

缺点

  • 运维管理成本较高,需要管理的主机数量是原来的数倍,管理复杂度的提升显而易见
  • 依赖库需要单独安装,版本很难保持一致
  • 不容易迁移

运维方式

小公司自建私有云,采用业界开源OpenStack的云平台进行管理,大的公有云公司采用自己的云平台进行管理,如:阿里云、腾讯云、华为云、青云、AWS

容器化部署

容器化部署主要是以Docker为代表,Docker的出现填补了传统虚拟化技术的一些不足之处,如启动时间长、资源占用高等问题。它通过利用Linux内核的容器特性,实现了更为轻量级的虚拟化解决方案,所以不少公司采用了这种方式部署。

优点

一致的运行环境

提供了除内核外完整的运行时环境,确保了应用运行环境一致性

快速移植

由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker 可以在很多平台上运行,无论是物理机、虚拟机、公有云、私有云,甚至是笔记本,其运行结果是一致的

更快速的启动时间

传统的虚拟机技术启动应用服务往往需要数分钟,而 Docker 容器应用,由于直接运行于宿主内核,无需启动完整的操作系统,因此可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间

更高效的利用系统资源

由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker 对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效

缺点

由于容器数量庞大,通过手动运维方式工作量比较大

与虚拟机比较

特性 容器 虚拟机
启动 秒级 分钟级
硬盘使用 MB GB
性能 接近原生 弱于
系统支持量 单机支持上千个容器 一般几十个
管理成熟度 已k8s为代表 以OpenStack、vmware为代表

K8S部署

尽管Docker提供了一种方便的容器化解决方案,但在进行大规模部署和管理时,会面临大量的版本更新升级部署,以及高可用的管理等问题。

Kubernetes提供了更强大和全面的容器管理和编排功能,他能够自动处理复杂的任务,如容器调度、扩缩容、服务发现和负载均衡等,简化了部署和管理过程,同时提供了更好的可扩展性和可靠性,所以是现在各大公司采用的主流部署方式。

优点

应用自动化部署

只需要执行一个命令,就可以把服务启动起来,而不用关心该部署到那个节点上。

弹性扩缩容

使用一个简单的命令、控制台 或基于 CPU 内存使用情况自动对应用程序进行扩容或者缩容

灰度发布

保证在应用版本升级时,对线上用户无感知

多环境部署支持

支持公有云,私有云,混合云,多重云部署

可维护好

提供了专门的运维系统界面,可以在线管理大规模应用,进行升级、回滚、监控等,比如 RancherKubeSphere

缺点

K8s 系统架构比较复杂,对于初学者门槛有点高

运维方式

采用k8s进行容器管理,在发布服务时,构建基础容器镜像,到镜像仓库,在对应环境访问镜像仓库,拉取对应容器镜像进行部署

以上我们介绍了物理机、虚拟机、容器化和K8s部署区别,我们可以根据自身的需求选择最适合自己的部署方式,希望对你有所帮助。

扫描下面的二维码关注我们的微信公众帐号,在微信公众帐号中回复◉加群◉即可加入到我们的技术讨论群里面共同学习。文章来源地址https://www.toymoban.com/news/detail-747547.html

到了这里,关于从物理机到K8S:应用系统部署方式的演进及其影响的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Jenkins使用k8s部署应用

    1、jenkins在k8s内部署(请参考其他人的文章) 2、jenkins安装kubenents相关插件 3、配置k8s云         非常重要,目的是实现jenkins可以远程调用k8s进行部署,并可实现安装jenkins-slave进行构建。使得不再依赖jenkins单机能力进行构建,比较适合一定规模的公司。  插件安装后,打开

    2024年02月15日
    浏览(60)
  • 在 K8S 中部署一个应用 下

    接着上一篇继续部署应用到 K8S中 之前简单部署的简单集群,三个工作节点是运行在 docker 和 kubelet 的,还有一个是控制节点 之前有 提到 ReplicationController , pod 和 服务 是如何组合在一起的呢? 可以通过这张如图来解释一下 我们之前创建 pod 的时候不是直接创建的,是通过

    2024年02月10日
    浏览(38)
  • 在 K8S 中部署一个应用 上

    本身在 K8S 中部署一个应用是需要写 yaml 文件的 ,我们这次简单部署,通过拉取网络上的镜像来部署应用,会用图解的方式来分享一下,过程中都发生了什么 我们可以通过 kubectl run 的方式来简单部署一个应用,现在我们先不关心里面的 yaml 结构和具体的配置,先运行起来,

    2024年02月09日
    浏览(81)
  • K8S应用笔记 —— 部署Dolphinscheduler及简单应用(一)

    Apache DolphinScheduler 是一个分布式易扩展的可视化 DAG 工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。 Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种 OPS 编排中

    2024年02月07日
    浏览(40)
  • 【云原生、k8s】管理Kubernetes应用搭建与部署

    官方提供Kubernetes部署3种方式 (一)minikube Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。 官方文档:https://kubernetes.io/docs/setup/minikube/ (二)二进制包 从官方下载发行版的二进制包,手动部署每个组件,

    2024年01月21日
    浏览(71)
  • 用Kubernetes(k8s)的ingress部署https应用

    我之前有一片文章写的是用ingress暴露应用,这篇文章接着上一片文章继续讲使用ingress暴露https的应用。请先参考上一片文章将ingress先在Kubernetes集群当中安装上: ingress暴露应用文章地址:https://blog.csdn.net/m0_51510236/article/details/132536519 因为是暴露https,所以需要域名证书。分以

    2024年02月10日
    浏览(43)
  • 应用打包部署k8s (包括dockerfile打包及仓库上传)

    小唐的项目主要是(mysql+jar+vue),然后所有项目都是打包好了的,然后现在我们用docker run 来测试一下 1.存储文件夹 并将我们的sql文件转移至init 在编写mysql文件之前,我们可以先使用docker镜像的方式去看看我们的sql文件是否可以正确导入至我们的容器 2.准备好对于位置 3.运

    2024年02月11日
    浏览(64)
  • 云原生Kubernetes:简化K8S应用部署工具Helm

    目录 一、理论 1.HELM ​编辑 2.部署HELM2 3.部署HELM3(2to3方式) 4.部署HELM3(单独安装) 二、实验 1.部署 HELM2 2.部署HELM3(2to3方式) 3.部署HELM3(单独安装) 三、问题 1.api版本过期 2.helm初始化报错 3.pod状态为ImagePullBackOff 4.helm 命令显示 no repositories to show 的错误 5.Helm安装报错

    2024年02月07日
    浏览(60)
  • K8s(kubernetes)集群搭建及dashboard安装、基础应用部署

    本质是一组服务器集群,在集群每个节点上运行特定的程序,来对节点中的容器进行管理。实现资源管理的自动化。 自我修复 弹性伸缩 服务发现 负载均衡 版本回退 存储编排 控制节点(master)-控制平面 APIserver :资源操作的唯一入口 scheduler :集群资源调度,将Pod调度到node节

    2024年02月08日
    浏览(46)
  • Python应用程序部署至K8s——循序渐进版

    (1)Pod处于一直Pending状态 解决方法参考:0/1 nodes are available: 1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn‘t-CSDN博客 (2)Pod处于CrashLoopBackOff状态 原因:python不能够常驻,只能运行一次,且是后台运行情况,则会出错。 解决方法:将程序设置成能够常驻的,并且

    2024年03月22日
    浏览(85)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包