【云原生丶Kubernetes】从应用部署的发展看Kubernetes的前世今生

news2024/11/19 1:56:17

在了解Kubernetes之前,我们十分有必要先了解一下应用程序部署的发展历程,下面让我们一起来看看!

在这里插入图片描述

应用部署的发展历程

我们先来看看应用程序部署的3个阶段:从物理机部署到虚拟机部署,再到容器化部署,他们之间有何优劣势呢?

在这里插入图片描述
1、物理机部署 :多个应用进程部署在同一个物理机上,但是容易出现进程间抢占资源的问题。

2、虚拟机部署 :虚拟化技术出现,从物理机虚拟出多个虚拟机,每台虚拟机部署一个应用进程,不同的虚拟机上运行不同的进程,没有资源冲突,从而解决了进程间资源抢占的问题。但是在集群部署的情况下,文件的版本和配置文件容易碎片化,当线上出现问题时,排查问题很棘手。而且由虚拟机管理系统负责控制和管理所有的虚拟机,这也造成了额外的性能、存储、网络开销

3、容器部署 :容器技术的出现,解决了虚拟机部署的痛点。容器技术通过镜像文件,如果要修改软件版本,只需要修改镜像文件,部署时所有容器重新拉取新的镜像,所以解决了软件版本的问题。

可以看到,所有的技术并不是凭空出现的,他一定是为了解决某些问题,容器技术的出现无疑是应用部署的里程中最闪亮的星之一。


虚拟机和容器部署的特性对比

容器技术相较于虚拟机来说,在性能、内存、运行密度、迁移性等各个方面都具有较大的优势

在这里插入图片描述

Docker 是容器化部署的课代表!Docker 相比传统的虚拟机技术更轻量级,它可以将应用程序打包成容器镜像,每个容器都具有自己的应用程序和系统依赖,并共享宿主机的操作系统内核和系统资源。容器启动和停止比较快,占用的系统资源比虚拟机少, Docker 适用于快速部署和迁移应用程序的场景。


使用Docker部署的优势是什么?

  1. 更快速的交付和部署:使用Docker镜像可以快速构建应用程序的运行环境,快速的创建和删除容器,实现快速迭代。
  2. 更高效的资源利用Docker是内核级的虚拟化,不需要额外的虚拟机管理系统,相比传统虚拟机方式能够更高效的利用硬件资源。
  3. 更轻松的迁移和扩展:由于 Docker 确保了执行环境的一致性,使得应用的迁移更加容易。Docker可以在任意平台上运行,支持主流的操作系统版本,用户可以在不用的平台之间轻松的迁移应用
  4. 更简单的更新管理:使用DockerFile只需要简单的修改版本,就可以替代大量的更新工作。

📢 相比物理机和虚拟机,Docker容器技术的优势显而易见,但是Docker仍然有以下问题没有解决:比如无法实现自动化扩容和故障后的自愈,但是在企业级应用来说,通常有成千上万的容器,这使得管理起来极其的复杂,此时,就需要容器编排系统来解决这些问题。

在这里插入图片描述

为了解决自动扩缩容和故障后自愈等问题,容器编排技术应运而生


Kubernetes起源与发展


Kubernetes起源

所谓容器编排技术,就是为了更好的管理和部署容器化的应用程序!容器编排系统提供了如下的能力:

  1. 集群管理与基础设施抽象:将多个虚拟机或物理机构建成协同运行的集群,并将这些硬件基础设施抽象为一个统一的资源池
  2. 资源分配和优化:基于配置清单中指定的资源需求与现实可用的资源量,利用成熟的调度算法合理调度工作负载
  3. 应用部署:支持跨主机自动部署容器化应用,支持多版本并存、滚动更新和回滚
  4. 应用伸缩:支持应用实例规模的自动或手动伸缩
  5. 应用隔离:支持为租户、项目或应用进行访问隔离
  6. 服务可用性:利用状态能监测和应用重构等机制确保服务始终健康运行

目前比较流行的容器编排技术开源框架有如下几种,其中 Kubernetes 是最流行的:

  1. Kubernetes:是目前最流行的容器编排工具之一,由Google开发并维护。它提供了完整的容器编排解决方案,包括自动化部署、资源管理和调度、服务发现和负载均衡等功能。
  2. Docker Swarm:是Docker官方提供的容器编排工具,支持自动扩展和管理多个Docker主机上的容器。它提供了简单的命令行界面和RESTful API,方便用户进行操作和管理。
  3. Apache Mesos:是Apache软件基金会的一个项目,旨在提供一个可扩展的分布式系统内核,支持多种编程语言和应用程序。它提供了资源管理和调度功能,可以管理多个容器实例和集群中的任务。
  4. Nomad:是一个轻量级的容器编排工具,支持跨平台和多云环境。它提供了简单易用的API和CLI工具,方便用户进行操作和管理。

⭐️ Kubernetes 一词源于希腊语,意为“舵手”或“飞行员”。因为 Ks 中间有8个单词(ubernete),又简称K8s。它最初是由Google基于GO语言开发的,旨在简化容器部署和管理。Kubernetes的设计灵感来自于Google内部使用的Borg系统,而Borg系统则是由Google工程师根据他们在大规模应用程序管理方面的经验开发的,用于调度数十亿的容器和工作负载。

此后,谷歌基于在公有云底层基础设施方面商业增长的考虑,开发了 Kubernetes 并进行了开源。

Kubernetes发展

Kubernetes 的发展历程可以分为以下几个阶段:

  • 2014年6月 谷歌云计算专家 Eric Brewer在旧金山的发布会上为这款开源工具揭牌。
  • 2015年7月 Kubernetes迭代到 v1.0并在OSCON大会上正式对外公布。
  • 2015年 CNCF基金会成立,Kubernetes 成为CNCF最为核心的项目之一。
  • 2018年 超过1700开发者成为 Kubernetes 项目社区的贡献者,全球有500多长沙龙
  • 2020年 Kubernetes 项目成为贡献者仅次于 Linux项目的第二大开源项目,各大厂商纷纷宣布支持 Kubernetes 作为容器编排的解决方案。
  • 2023年 贡献者 3458starts 99.6kforks 36.6k ,数百家厂商和技术社区共同共建了非常强大的云原生生态!

🎉 如果喜欢这篇文章,点赞👍 收藏关注 ✅ 哦,创作不易,感谢!😀

请添加图片描述

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

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

相关文章

Jenkins服务器连接JMeter分布式中的test-master

Jenkins想要连接test-master就要通过代理 将下载好的agent.jar传输到test-master机器上的/usr/local(实际上任何目录都可以)下 然后我们在/usr/local目录下输入: (这个是在Jenkins页面自己生成的命令) java -jar ag…

SQL频率低但笔试会遇到: 触发器、索引、外键约束

一. 前言 在SQL面笔试中,对于表的连接方式,过滤条件,窗口函数等肯定是考察的重中之重,但是有一些偶尔会出现,频率比较低但是至少几乎会遇见一两次的题目,就比如触发器,索引和外键约束&#xff0…

C++ 教程

C 教程 C 是一种高级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。C 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言。C 可运行于多种平台上,如 Windows、MAC 操作系统以及 UNIX 的各种版本。 本教程通过…

Stanford点云公开数据集:S3DIS

S3DIS (Stanford Large-Scale 3D Indoor Spaces Dataset) 是斯坦福大学提供的大场景室内3D点云数据集,包含6个教学和办公Area,总共有695,878,620个带有色彩信息以及语义标签的3D点。 该数据集目前已经被包含在一个更大的Full 2D-3D-S Dataset当中&#x…

深入探讨Seata RPC模块的设计与实现

在Seata中,TM,RM与TC都需要进行跨进程的网络调用,通常来说就会需要RPC来支持远程调用,而Seata内部就有自身基于Netty的RPC实现,这里我们就来看下Seata是如何进行RPC设计与实现的 RPC整体设计 抽象基类AbstractNettyRemoting 该类是…

Dinky:问题总结

一、启动时指定flink版本,因为dinky本身也集成了部分flink ./auto.sh start 1.12 二、数据源管理新增mysql时的url jdbc:mysql://ip:3306/dinky?useUnicodetrue&characterEncodingutf8&useSSLfalse&autoReconnecttrue&failOverReadOnlyfalse 不要…

2、JAVA 分支结构 switch结构 for循环

1 分支结构 1.1 概述 顺序结构的程序虽然能解决计算、输出等问题 但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构 1.2 形式 1.3.1 练习:商品打折案例 创建包: cn.tedu.basic 创建类: TestDiscount.java 需求: 接收用户输入的原价。满1000打9折…

网工内推 | 运营商招网工,3年以上网安经验,CISP/CCIE认证优先

01 微算互联 招聘岗位:网络工程师 职责描述: 1、负责生产系统的网络管理、网络监控告警、网络设备数据资料备份/恢复容灾管理; 2、海外、tob 、私有云网络搭建及运维7 X 24小时值班; 3、负责业务系统工程网络层面规划、建设、升级…

Java之Javac、JIT、AOT之间的关系

Javac:javac 是java语言编程编译器。全称java compiler。但这时候还是不能直接执行的,因为机器只能读懂汇编,也就是二进制,因此还需要进一步把.class文件编译成二进制文件。 Java的执行过程 详细流程 结论:javac编译后…

使用Python调用aapt命令查看APK文件信息

以下演示内容在window的操作系统 1、下载 aapt 下载完成后注意配置环境变量!!! 地址:https://www.mediafire.com/file/e8ww8wbgcowbti4/aapt 2、代码实现 import os import re import subprocess#获取当前操作系统 current_os o…

S型平滑函数功能块(CODESYS ST完整源代码)

S型平滑函数在多段曲线控温上的应用。完整算法介绍请参看下面文章博客: 带平滑功能的斜坡函数(多段曲线控温纯S型曲线SCL源代码+完整算法分析)_RXXW_Dor的博客-CSDN博客PLC运动控制基础系列之梯形速度曲线,可以参看下面这篇博客:PLC运动控制基础系列之梯形速度曲线_RXXW_…

RTL8720CF烧录工具

一、环境准备 1、 解压烧录工具包 AmebaZII_PGTool_v1.2.39.zip 2、 日志串口接串口调试助手 3、 模组A0脚接高电平 二、烧录 1、模组重新上电,串口有Download Image over …… 输出,表示模组已进入烧录模式,如图: 2、打开上…

springboot+vue校园一卡通管理系统_q7e7o

近些年来,随着科技的飞速发展,互联网的普及逐渐延伸到各行各业中,给人们生活带来了十分的便利,校园一卡通利用计算机网络实现信息化管理,使整个校园一卡通管理的发展和服务水平有显著提升。 本文拟采用java技术和Sprin…

【算法题】动态规划中级阶段之买卖股票的最佳时机、三角形最小路径和

动态规划中级阶段 前言一、三角形最小路径和1.1、思路1.2、代码实现 二、买卖股票的最佳时机 II2.1、思路2.2、代码实现 总结 前言 动态规划(Dynamic Programming,简称 DP)是一种解决多阶段决策过程最优化问题的方法。它是一种将复杂问题分解…

计算机网络————运输层

文章目录 概述UDPTCP首部格式 连接管理连接建立连接释放 概述 从IP层看,通信双方是两个主机。 但真正进行通信的实体是在主机中的进程,是这个主机中的一个进程和另一个主机中的一个进程在交换数据。 所以严格的讲,两个主机进行通信就是两个…

关于【系统学习】和【按需学习】我想说的

😜作 者:是江迪呀✒️本文关键词:心得、闲聊、学习、知识☀️每日 一言:不要停驻不前,做一点点都要比什么都不做强上百倍! 前言 说起来学习,那就离不开学习的方式。学生时期我们的…

SpringCloudAlibaba实战入门之RocketMQ消息发送(六)

本篇文章是承接上一篇文章《SpringCloudAlibaba实战入门之RocketMQ下载配置和启动(五)》,如果没有看过上一篇文章并按照指导配置和启动Rocket MQ的网友,请先阅读该篇文章以后再阅读本篇 一、创建spring-cloud-rocketmq项目 1、复制之前的项目模块新建一个项目模块,修改新…

5个有趣实用的小工具推荐,让你的生活更加丰富多彩

5个有趣实用的小工具推荐,让你的生活更加丰富多彩 在现代社交媒体和科技的发展中,我们可以利用各种小工具来增添生活的乐趣和便利。今天,我将向大家推荐一些有趣且实用的小工具,这些工具不仅能够让你的生活更加丰富多彩&#xff…

算法分析基础题目

第一章-算法概述 递归算法必须具备的两个条件是边界条件或停止条件和递推方程或递归方程冒泡排序时间复杂度是___,堆排序时间复杂度是___。 O ( n 2 ) O(n^2) O(n2), O ( n l o g n ) O(nlogn) O(nlogn)斐波那契数列的第1项为1,第2项为2,以…

Labview通过OPC与S1200通信

一、配置PC的IP地址 二、S7-1200的配置 通过博图,在PLC CPU的属 性-常规-保护里勾选“允许从 远程伙伴使用PUT/GET通信 访问 三、新建一个DB1数据块,在DB1里新建一个变量,例如 名称为“ASD”,类型为“Word” 四、右击“DB1”&…