首页 > 其他分享 >从物理机到K8S:应用系统部署方式的演进及其影响

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

时间:2023-12-20 11:03:25浏览次数:42  
标签:容器 演进 运维 部署 虚拟机 Docker 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部署区别,我们可以根据自身的需求选择最适合自己的部署方式,希望对你有所帮助。

标签:容器,演进,运维,部署,虚拟机,Docker,K8S,机到,物理
From: https://blog.51cto.com/u_16071940/8904108

相关文章

  • kubernetes(k8s)Gitlab CI Runner 的安装
    kubernetes(k8s)GitlabCIRunner的安装简介从Gitlab8.0开始,GitlabCI就已经集成在Gitlab中,只要在项目中添加一个.gitlab-ci.yml文件,然后添加一个Runner,即可进行持续集成。在介绍GitlabCI之前,先看看一些GitlabCI的一些相关概念。流程逻辑如下:Jobs->Stages->Pipel......
  • 如何使用 Helm 在 K8s 上集成 Prometheus 和 Grafana|Part 1
    本系列将分成三个部分,您将学习如何使用Helm在Kubernetes上集成Prometheus和Grafana,以及如何在Grafana上创建一个简单的控制面板。Prometheus和Grafana是Kubernetes最受欢迎的两种开源监控工具。学习如何使用Helm集成这两个工具,使您能够轻松监控Kubernetes集群并......
  • 深入 K8s 网络原理(一)- Flannel VXLAN 模式分析
    目录1.概述2.TL;DR3.Pod间通信问题的由来4.测试环境准备5.从veth设备聊起6.网桥cni06.1在Pod内看网卡信息6.2在host上看网卡信息7.VTEPflannel.18.最后看下Flannel的配置9.总结1.概述这周集中聊下K8s的集群网络原理,我初步考虑分成3个方向:Pod-to-Pod......
  • 独家好书丨《智算时代的容器技术演进与实践》免费下载
    2023云栖大会容器服务ACK分享实录合辑《智算时代的容器技术演进与实践》电子书正式上线!10+云栖精选议题带你深入了解容器技术与产品最新趋势、容器AI工程化探索与实战以及企业大规模应用实践案例。阿里云容器服务技术专家带您解读容器服务ACK如何加速现代化应用平台构建。......
  • 独家好书丨《智算时代的容器技术演进与实践》免费下载
    2023云栖大会容器服务ACK分享实录合辑《智算时代的容器技术演进与实践》电子书正式上线!10+云栖精选议题带你深入了解容器技术与产品最新趋势、容器AI工程化探索与实战以及企业大规模应用实践案例。阿里云容器服务技术专家带您解读容器服务ACK如何加速现代化应用平台构建......
  • k8s - error: 0/1 nodes are available: 1 node(s) had untolerated taint
     WarningFailedScheduling89sdefault-scheduler0/1nodesareavailable:1node(s)haduntoleratedtaint{node.cloudprovider.kubernetes.io││/uninitialized:true}.preemption:0/1nodesareavailable:1Preemptionisnothelpf......
  • day16监控体系部署管理-K8S集群层面监控-基于Prometheus的HPA自动伸缩 (7.1-7.2)
    一、打造基于Prometheus的全方位监控平台1.1前言官网:https://prometheus.io/docs/prometheus/latest/getting_started/灵活的时间序列数据库定制各式各样的监控规则Prometheus的开发人员和用户社区非常活跃独立的开源项目,不依赖于任何公司继Kubernetes之后第二个入驻的项......
  • 1 K8S for Prometheus Dashboard 20211010 EN
    *[PrometheusTimeSeriesCollectionandProcessingServer](http://localhost:9090/targets?search=#pool-prometheus)*[Dashboards|GrafanaLabs](https://grafana.com/grafana/dashboards/?search=prometheus)*[Alertmanager|GrafanaLabs](https://grafana.com/g......
  • 如何基于 k8s做私有化部署
    公众号「架构成长指南」,专注于生产实践、云原生、分布式系统、大数据技术分享。随着国内数字化转型的加速和国产化进程推动,软件系统的私有化部署已经成为非常热门的话题,因为私有化部署赋予了企业更大的灵活和控制权,使其可以根据自身需求和安全要求定制和管理软件系统。下面分享......
  • sealer 自定义 k8s 镜像并部署高可用集群
    sealer可以自定义k8s镜像,想把一些dashboard或者helm包管理器打入k8s镜像,可以直用sealer来自定义。sealer部署的k8s高可用集群自带负载均衡。sealer的集群高可用使用了轻量级的负载均衡lvscare。相比其它负载均衡,lvscare非常小仅有几百行代码,而且lvscare只做ipv......