k8s,诞生历史

news2024/12/18 0:42:35

k8s的诞生历史

PaaS项目被大家接纳的一个主要原因,就是它提供了一种名叫“应用托管”的能力
Docker镜像解决的,恰恰就是打包这个根本性的问题
Docker项目给PaaS世界带来的“降维打击”,其实是提供了一种非常便利的打包机制。这种机制直接打包了应用运行所需要的整个操作系统,从而保证了本地环境和云端环境的高度一致,避免了用户通过“试错”来匹配两种不同运行环境之间差异的痛苦过程。

CaaS,即Container-as-a-Service
OCI( Open Container Initiative )。OCI的提出,意在将容器运行时和镜像的实现从Docker项目中完全剥离出来
这样做,一方面可以改善Docker公司在容器技术上一家独大的现状,另一方面也为其他玩家不依赖于Docker项目构建各自的平台层能力提供了可能。

CNCF(Cloud Native Computing Foundation)的基金会。这个基金会的目的其实很容易理解:它希望,以Kubernetes项目为基础,建立一个由开源基础设施领域厂商主导的、按照独立基金会方式运营的平台级社区,来对抗以Docker公司为核心的容器商业生态。

而为了打造出这样一条围绕Kubernetes项目的“护城河”,CNCF社区就需要至少确保两件事情:
1、Kubernetes项目必须能够在容器编排领域取得足够大的竞争优势;
2、CNCF社区必须以Kubernetes项目为核心,覆盖足够多的场景。
我们先来看看CNCF社区如何解决Kubernetes项目在编排领域的竞争力的问题。

在容器编排领域,Kubernetes项目需要面对来自Docker公司和Mesos社区两个方向的压力。不难看出,Swarm和Mesos实际上分别从两个不同的方向讲出了自己最擅长的故事:Swarm擅长的是跟Docker生态的无缝集成,而Mesos擅长的则是大规模集群的调度与管理。

Kubernetes项目的基础特性,并不是几个工程师突然“拍脑袋”想出来的东西,而是Google公司在容器化基础设施领域多年来实践经验的沉淀与升华。这,正是Kubernetes项目能够从一开始就避免同Swarm和Mesos社区同质化的重要手段。

mesos和k8s对比

Mesos 项目简介

Apache Mesos 是一个开源的分布式系统内核(Cluster Manager),用于高效管理集群资源,支持分布式应用程序和容器的运行。它于 2010 年首次由 UC Berkeley AMPLab 推出,后来捐献给了 Apache 基金会,并成为其顶级项目。

Mesos 的目标是为数据中心或计算集群提供一个抽象的资源管理和调度层,允许开发者和运维人员以更简单的方式运行各种应用程序框架(如 Apache Hadoop、Apache Spark、Kubernetes 等)以及容器化工作负载。


核心特性

  1. 资源抽象

    • Mesos 提供了对 CPU、内存、磁盘等资源的抽象化管理,支持资源的动态分配和共享。
    • 集群中的所有资源通过一个统一的接口进行管理,屏蔽了底层硬件的复杂性。
  2. 两级调度(Two-Level Scheduling)

    • Mesos 的调度分为两级:
      • 第一层:Mesos 主节点(Master)将资源分配给各个框架(Framework)。
      • 第二层:各框架根据自己的任务需求进一步调度和使用这些资源。
    • 这种方式支持不同框架的自定义调度逻辑。
  3. 多框架支持

    • Mesos 原生支持多种大数据框架,例如 Apache Hadoop、Apache Spark、Apache Kafka 等。
    • 还支持容器化的工作负载运行(如 Docker、Kubernetes)。
  4. 高可用性

    • 支持通过 ZooKeeper 进行主节点(Master)的高可用性配置,确保故障节点能够自动切换。
    • 从节点(Agent)也会定期向主节点汇报状态,防止资源丢失。
  5. 模块化设计

    • 通过插件机制支持资源调度器、资源分配策略的自定义,便于扩展。

主要组件

  1. Master(主节点)

    • 管理整个集群的资源。
    • 将资源分配给不同的框架。
  2. Agent(从节点/工作节点)

    • 提供计算资源(CPU、内存、磁盘等)。
    • 承载具体的任务(Task)运行。
  3. Framework(框架)

    • 用户程序需要实现的组件,用于接收资源并运行任务。
    • 包括两个子组件:
      • Scheduler:负责向 Master 请求资源并调度任务。
      • Executor:在 Agent 上启动和管理任务。
  4. ZooKeeper

    • 用于管理主节点(Master)的高可用性和选举。

工作原理

  1. 启动

    • Master 节点启动后,注册到 ZooKeeper,成为 Leader。
    • Agent 节点启动后,与 Master 建立连接,并报告可用资源。
    • 各 Framework 的 Scheduler 注册到 Master,表示其准备接受资源分配。
  2. 资源分配

    • Master 根据资源调度策略,将 Agent 上的资源分配给 Framework。
    • Framework 的 Scheduler 接受资源,并决定如何运行任务。
  3. 任务执行

    • Scheduler 通过 Executor 向 Agent 分发任务。
    • Agent 启动任务,并报告任务的运行状态。
  4. 状态更新

    • Executor 持续将任务状态发送回 Framework 和 Master。
    • Master 维护集群全局状态。

常见使用场景

  1. 大数据处理

    • 运行分布式框架(如 Hadoop、Spark)进行批量数据处理和实时数据流分析。
  2. 容器编排

    • 通过 Marathon 或其他容器编排工具运行和管理容器化应用。
  3. 混合工作负载

    • 支持在同一集群中同时运行多种框架和工作负载(如批处理任务和服务型应用)。
  4. 弹性资源管理

    • 动态调整资源分配,优化集群的利用率。

与 Kubernetes 的对比

尽管 Mesos 曾在容器编排和集群管理领域广受欢迎,但随着 Kubernetes 的崛起,Mesos 的影响力逐渐下降。以下是两者的主要区别:

特性MesosKubernetes
架构模式两级调度(Master + Framework 调度)单一调度(由 Kubernetes 负责调度)
资源管理通用资源抽象,适合多框架混合运行专注于容器化工作负载
复杂性配置复杂,开发者需要实现 Framework用户友好,开箱即用
生态支持支持 Hadoop、Spark 等大数据框架以容器编排为核心,支持 Helm 等生态
流行度降低,已被其他工具取代主流容器编排平台

现状与发展

Mesos 在其早期(2010 年代初期)是分布式资源管理领域的佼佼者。然而,随着 Kubernetes 的快速发展和广泛采用,Mesos 的受欢迎程度逐渐下降,目前主要被一些特定的企业或组织(如 Twitter、Uber)在定制化场景中继续使用。

对于新项目,如果主要目标是容器编排,通常会优先选择 Kubernetes。Mesos 更多地用于遗留系统或需要运行多种分布式框架的环境。


总结

Apache Mesos 是一个强大的分布式资源管理平台,擅长管理大规模混合工作负载。它的两级调度架构和高度灵活性曾经是其核心优势,但在现代容器化时代,Kubernetes 提供了更好的用户体验和生态支持。如果你在处理多种框架的工作负载时,Mesos 仍然是一个值得考虑的选择。

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

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

相关文章

【数据结构——查找】顺序查找(头歌实践教学平台习题)【合集】

目录😋 任务描述 相关知识 测试说明 我的通关代码: 测试结果: 任务描述 本关任务:实现顺序查找的算法。 相关知识 为了完成本关任务,你需要掌握:1.根据输入数据建立顺序表,2.顺序表的输出,…

Android 车载虚拟化底层技术-Kernel 5.15 -Android13(multi-cards)技术实现

系列文章请扫点击如下链接! Android Display Graphics系列文章-汇总 本文主要包括部分: 一、Android13的Kernel 5.15版本 1.1 Kernel 5.15 情况说明 1.2 前置条件 二、QCM61*5 plane配置 2.1 multi-card配置 2.2 移植msm-lease 2.3 配置信息确认…

【FFmpeg】FFmpeg 内存结构 ⑥ ( 搭建开发环境 | AVPacket 创建与释放代码分析 | AVPacket 内存使用注意事项 )

文章目录 一、搭建开发环境1、开发环境搭建参考2、项目搭建 二、AVPacket 创建与释放代码分析1、AVPacket 创建与释放代码2、Qt 单步调试方法3、单步调试 - 分析 AVPacket 创建与销毁代码 三、AVPacket 内存使用注意事项1、谨慎使用 av_init_packet 函数2、av_init_packet 函数…

C# DLT645 97/07数据采集工具

电表模拟器 97协议测试 07协议测试 private void btnSend_Click(object sender, EventArgs e) {string addr txtAddr.Text.Trim();string data txtDataFlg.Text.Trim();byte control 0x01;switch (cmbControl.SelectedIndex){case 0: control (byte)0x01; break;// 97协议c…

颜色代码表: 一站式配色方案设计工具集网站

大家好,我是一名设计师,同时也是一名开发者。平时的工作中,相信很多设计师和我一样经常遇到一个问题:设计配色方案时,工具太分散了。寻找颜色搭配灵感需要去一个网站,颜色代码转换要开另一个,检…

Android显示系统(13)- 向SurfaceFlinger提交Buffer

Android显示系统(01)- 架构分析 Android显示系统(02)- OpenGL ES - 概述 Android显示系统(03)- OpenGL ES - GLSurfaceView的使用 Android显示系统(04)- OpenGL ES - Shader绘制三角…

WebSocket 与 Server-Sent Events (SSE) 的对比与应用

目录 ✨WebSocket:全双工通信的利器📌什么是 WebSocket?📌WebSocket 的特点📌WebSocket 的优点📌WebSocket 的缺点📌WebSocket 的适用场景 ✨Server-Sent Events (SSE):单向推送的轻…

Mysql 深度分页查询优化

Mysql 分页优化 1. 问题根源 问题: mysql在数据量大的时候,深度分页数据偏移量会增大,导致查询效率越来越低。 问题根源: 当使用 LIMIT 和 OFFSET 进行分页时,MySQL 必须扫描 OFFSET LIMIT 行,然后丢弃前…

SpringBoot - 动态端口切换黑魔法

文章目录 关键技术点核心原理Code 关键技术点 利用 Spring Boot 内嵌 Servlet 容器 和 动态端口切换 的方式实现平滑更新的方案,关键技术点如下: Servlet 容器重新绑定端口:Spring Boot 使用 ServletWebServerFactory 动态设置新端口。零停…

linux(CentOS8)安装PostgreSQL16详解

文章目录 1 下载安装包2 安装3 修改远程连接4 开放端口 1 下载安装包 官网下载地址:https://www.postgresql.org/download/ 选择对应版本 2 安装 #yum源 yum -y install wget https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redha…

spring学习(spring-bean实例化(无参构造与有参构造方法实现)详解)

目录 一、spring容器之bean的实例化。 (1)"bean"基本概念。 (2)spring-bean实例化的几种方式。 二、spring容器使用"构造方法"的方式实例化bean。 (1)无参构造方法实例化bean。 &#…

ElasticSearch学习5

基本Rest命令说明: method url地址 描述 PUT(创建,修改) localhost:9200/索引名称/类型名称/文档id 创建文档(指定文档id) POST(创建) localhost:9200/索引名称/类型名称 创建文档&…

分享本周所学——三维重建算法3D Gaussian Splatting(3DGS)

大家好,欢迎来到《分享本周所学》第十二期。本人是一名人工智能初学者,刚刚读完大二。前几天自学了一下3D Gaussian Splatting(3DGS),觉得非常有意思。写这篇文章主要是因为网上大部分关于3DGS的文章都比较晦涩&#x…

【中工开发者】鸿蒙商城app

这学期我学习了鸿蒙,想用鸿蒙做一个鸿蒙商城app,来展示一下。 项目环境搭建: 1.开发环境:DevEco Studio2.开发语言:ArkTS3.运行环境:Harmony NEXT base1 软件要求: DevEco Studio 5.0.0 Rel…

【Qt】按钮类控件:QPushButton、QRadioButton、QCheckBox、ToolButton

目录 QPushButton 例子: QRadioButton 例子: 按钮的常见信号函数 单选按钮分组 例子: QCheckButton 例子: QToolButton QWidget的常见属性及其功能对于它的派生类控件都是有效的(也就是Qt中的各种控件),包括…

UI框架DevExpress XAF v24.2新功能预览 - .NET Core / .NET增强

DevExpress XAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。DevExpress XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。 在上文中…

ArrayList源码分析、扩容机制面试题,数组和List的相互转换,ArrayList与LinkedList的区别

目录 1.java集合框架体系 2. 前置知识-数组 2.1 数组 2.1.1 定义: 2.1.2 数组如何获取其他元素的地址值?(寻址公式) 2.1.3 为什么数组索引从0开始呢?从1开始不行吗? 3. ArrayList 3.1 ArrayList和和…

阿里云服务器手动部署LNMP环境【官方文档注意事项】

这是官方文档 注意&#xff1a; 要添加安全组&#xff0c;端口为80。否则最后用浏览器访问公网IP没有结果。 Mysql密码策略要求密码至少包含一个大写字母、一个小写字母、一个数字和一个特殊字符&#xff0c;并且密码总长度至少为 8 个字符。sudo mysqladmin -uroot -p<ol…

Invalid default value for ‘gender‘,mysql在idea中字符集设置,default

默认值default创建错误的&#xff0c;设置数据库字符集 我的错误&#xff1a;Invalid default value for ‘gender’ -- 修改数据库字符集 alter database db01 charset utf8;

240004基于Jamva+ssm+maven+mysql的房屋租赁系统的设计与实现

基于ssmmavenmysql的房屋租赁系统的设计与实现 1.项目描述2.运行环境3.项目截图4.源码获取 1.项目描述 该项目在原有的基础上进行了优化&#xff0c;包括新增了注册功能&#xff0c;房屋模糊查询功能&#xff0c;管理员和用户信息管理等功能&#xff0c;以及对网站界面进行了优…