一文速览字节最新分布式操作系统KubeWharf

news2025/2/7 4:45:28

一文速览字节最新分布式操作系统KubeWharf

请添加图片描述

KubeWharf 是字节跳动基础架构团队在对 Kubernetes 进行了大规模应用和不断优化增强之后的技术结晶。

这是一套以 Kubernetes 为基础构建的分布式操作系统,由一组云原生组件构成,专注于提高系统的可扩展性、功能性、稳定性、可观测性、安全性等,以支持大规模多租集群、在离线混部、存储和机器学习云原生化等场景。

诞生背景

首先,让我们来深入分析 KubeWharf 的诞生背景:

以 Kubernetes 为代表的云原生技术底座支撑了字节跳动业务的快速发展。从微服务场景开始,Kubernetes 逐渐演化,统一支撑了字节内部的大数据、机器学习以及存储服务等多种形态基础设施。从 2018 年至今,字节跳动的 Kubernetes 节点的规模增长了 10 倍以上。面对这样的增速,提高 Kubernetes 分布式操作系统的性能、资源利用率、可扩展性、可用性等愈发重要,KubeWharf 就是在这样的背景下诞生。

2022 年 7 月 首批开源的项目分别为:

  • KubeBrain:高性能元信息存储系统
  • KubeZoo:轻量级的 Kubernetes 多租户项目
  • KubeGateway:专为 kube-apiserver 设计并定制的七层负载均衡代理

2023 年,第二批开源项目分别为:

  • Katalyst:在离线混部、资源管理与成本优化项目
  • KubeAdmiral:多云多集群调度管理项目
  • Kelemetry:面向 Kubernetes 控制面的全局追踪系统

截至今年 12 月,KubeWharf 共有 6 个围绕 Kubernetes 生态的云原生项目开放源码。同时,这 6 个项目相互之间不存在绑定依赖,都是独立项目。

以下给大家共享下KubeWharf的开源地址,感兴趣的同学可以去看看源码😎

KubeWharf 项目地址:https://github.com/kubewharf

在这里插入图片描述

笔者认为综合来看,KubeWharf 在多租户管理、离线混部、存储和机器学习云原生化等方面的优势,使其成为一个强大的工具,适用于各种复杂的应用场景。企业和云服务提供商可以通过充分利用 KubeWharf 的特性,更好地构建、管理和维护其云原生基础设施,从而提升整体业务的效率和可靠性。

接下来,我们将深入解读 KubeWharf 项目的核心组件,探讨其优势、不足,并展望未来的发展方向。

Kubernetes 简述

Kubernetes,简称 k8s(k-8 个字符-s(明白了😎),是一个开源的 Linux 容器自动化运维平台,它消除了容器化应用程序在部署、伸缩时涉及到的许多手动操作。换句话说,你可以将多台主机组合成集群来运行 Linux 容器,而 Kubernetes 可以帮助你简单高效地管理那些集群。构成这些集群的主机还可以跨越公有云、私有云以及混合云。

在生产环境中使用 Kubernetes 的主要优势在于它提供了在物理机或虚拟机集群上调度和运行容器的平台。更宽泛地说,它能帮你在生产环境中实现可以依赖的基于容器的基础设施。而且,由于 Kubernetes 本质上就是运维任务的自动化平台,你可以执行一些其它应用程序平台或管理系统支持的操作,只不过操作对象变成了容器。

kubernetes组件包括

  • Master(主节点): 控制 Kubernetes 节点的机器,也是创建作业任务的地方。
  • Node(节点): 这些机器在 Kubernetes 主节点的控制下执行被分配的任务。
  • Pod: 由一个或多个容器构成的集合,作为一个整体被部署到一个单一节点。同一个 pod 中的容器共享 IP 地址、进程间通讯(IPC)、主机名以及其它资源。Pod 将底层容器的网络和存储抽象出来,使得集群内的容器迁移更为便捷。
  • Replication controller(复制控制器): 控制一个 pod 在集群上运行的实例数量。
  • Service(服务): 将服务内容与具体的 pod 分离。Kubernetes 服务代理负责自动将服务请求分发到正确的 pod 处,不管 pod 移动到集群中的什么位置,甚至可以被替换掉。
  • Kubelet: 这个守护进程运行在各个工作节点上,负责获取容器列表,保证被声明的容器已经启动并且正常运行。
  • kubectl: 这是 Kubernetes 的命令行配置工具。

请添加图片描述

KubeBrain

KubeBrain 是字节跳动针对 Kubernetes 元信息存储的使用需求,基于分布式 KV 存储引擎设计并实现的、可以取代 etcd 的元信息存储系统,目前支撑着线上超过 20,000 节点的超大规模 Kubernetes 集群的稳定运行。

分布式应用编排调度系统 Kubernetes 已经成为云原生应用基座的事实标准,但是其官方的稳定运行规模仅仅局限在 5,000 节点。这对于大部分的应用场景已经足够,但是对于百万规模机器节点的超大规模应用场景, Kubernetes 难以提供稳定的支撑。

尤其随着“数字化””云原生化”的发展,全球整体 IT 基础设施规模仍在加速增长,对于分布式应用编排调度系统,有两种方式来适应这种趋势:

  • 水平扩展:即构建管理多个集群的能力,在集群故障隔离、混合云等方面更具优势,主要通过集群联邦(Cluster Federation)来实现;
  • 垂直扩展:即提高单个集群的规模,在降低集群运维管理成本、减少资源碎片、提高整体资源利用率方面更具优势。

K8s 采用的是一种中心化的架构,所有组件都与 APIServer 交互,而 APIServer 则需要将集群元数据持久化到元信息存储系统中。

当前,etcd 是 APIServer 唯一支持的元信息存储系统,随着单个集群规模的逐渐增大,存储系统的读写吞吐以及总数据量都会不断攀升,etcd 不可避免地会成为整个分布式系统的瓶颈。

过去面对生产环境中 etcd 的性能问题,只能通过按 Resource 拆分存储、etcd 参数调优等手段来进行一定的缓解。但是面对 K8s 更大范围的应用之后带来的挑战,我们迫切的需要一个更高性能的元数据存储系统作为 etcd 的替代方案,从而能对上层业务有更有力的支撑。

借鉴 k3s 的开源项目 kine 的思想,KubeWharf 实现了基于分布式 KV 存储引擎的高性能 K8s 元数据存储项目—— KubeBrain

请添加图片描述

KubeBrain 系统实现了 APIServer 所使用的元信息存储 API ,整体采用主从架构,主节点负责处理写操作和事件分发,从节点负责处理读操作,主节点和从节点之间共享一个分布式强一致 KV 存储,在此基础上进行数据读写。下面介绍 KubeBrain 的核心模块。

KubeZoo

KubeZoo 是由字节跳动自研的 Kubernetes 轻量级多租户项目,它基于协议转换的核心理念,在一个物理的 Kubernetes Master 上虚拟多个租户,具备轻量级、兼容原生 API 、无侵入等特点,是一种打造 Serverless Kubernetes 底座的优良方案。

从 2014 年开源至今,Kubernetes 已经成为容器编排领域的事实标准,为开发者进行应用编排、提高资源利用率提供了极大便利。但面对集群管理,如何提升多租户集群管理能力仍是困扰开发者和企业的一个关键问题。

增强 K8s 集群控制面的多租户能力已经成了一个现实问题:

  • 从运维视角来看,即使 Kubernetes 具备自动化的集群生命周期管理,但是各项控制面组件的维护、升级,和周边庞杂设施的交互,对开发人员来说仍是棘手的问题;
  • 随着机器学习任务、大数据平台接入云原生基础设施,基于 Kubernetes 打造的系统底座需要提供更快速、更低成本、更高效的管理 Kubernetes 集群的能力。

为了解决这些问题,基础架构团队推出了轻量级多租户解决方案 KubeZoo:

请添加图片描述

KubeZoo 是一个轻量级的 Kubenertes 多租户项目,基于协议转换的核心理念在一个物理的 K8s 控制面上虚拟出多个控制面,它具有以下特点:

  • **资源消耗低:**和租户独占集群或者 Master 控制面对比,KubeZoo 只需要一个“网关”,无需为每一个租户起一个独立的控制面集群,资源消耗很少。且租户数量越多,资源消耗方面的收益更加显著。
  • **控制面隔离性高:**每个租户可以拥有独立且完整的 Kubernetes 集群视图,租户既可以使用 namespace scope 的资源,又可以使用 cluster scope 的资源,使用体验好。
  • **运维成本低:**KubeZoo 有效的减少了集群/ Master 管控面的数量,大大减少了运维、升级维护成本。
  • **高效率:**秒级创建租户,每个租户的集群创建相当于创建一个 Tenant 对象,省略了耗时的硬件资源分配和控制面初始化过程。

KubeGateway

KubeGateway 是字节跳动针对 kube-apiserver 流量特征专门定制的七层网关,它彻底解决了 kube-apiserver 负载不均衡的问题,同时在社区范围内首次实现了对 kube-apiserver 请求的完整治理,包括请求路由、分流、限流、降级等,显著提高了 Kubernetes 集群的可用性。

目前外部负载均衡器(LB)的选型一般为 LVS、云厂商的 SLB 或 nginx、HAProxy 的四层负载均衡方案,存在如下问题:

  • 请求负载不均衡:由于 kube-apiserver 和 client 是使用 HTTP2 协议连接,HTTP2 的多个请求都会复用底层的同一个 TCP 连接并且长时间不断开。在 kube-apiserver 滚动升级或者某个实例重启时,很容易引起迟些启动的 kube-apiserver 在长时间内只有很少的请求数。极端情况下,负载较高的实例会出现 OOM,甚至引起雪崩。

  • 缺乏请求治理的灵活性:4 层负载均衡在传输层工作,它只负责消息的传递,但是无法处理应用层的 HTTP 协议的信息,因此相较于 7 层负载缺乏对请求治理的“灵活性”和 “智能性”。比如无法根据请求的内容(比如 verb、url 等字段)制定灵活的负载均衡和路由策略,也无法在网关层对请求级别进行限流降级等处理。

随着云原生技术的发展,目前字节跳动 95% 以上的业务跑在 Kubernetes 上,对集群高可用提出了更高的要求。而在生产环境中,也曾遇到过多次由于 kube-apiserver 负载不均衡或者缺乏请求治理能力带来的事故,因此面对以上问题,字节跳动针对 kube-apiserver 的流量特征自研了七层网关 KubeGateway。

它代理 kube-apiserver 的请求的流程如下图所示,主要分为五个步骤:请求解析、路由匹配、用户认证、流量治理和反向代理。

请添加图片描述

KubeGateway 作为七层网关接入和转发 kube-apiserver 的请求,它具有以下特点:

  • 对于客户端完全透明,客户端无需任何改造即可以接入 KubeGateway;
  • 支持同时代理多个 K8s 集群的请求,不同 K8s 集群通过不同的域名或者虚拟地址(vip)进行区分;
  • 负载均衡从 TCP 连接级别变为 HTTP 请求级别,进而实现快速、有效的进行负载均衡,彻底解决 kube-apiserver 负载不均衡的问题;
  • 高扩展性的负载均衡策略,目前支持 Round Robin、Random 策略,负载均衡策略插件化,易于扩展;
  • 支持灵活的路由策略,KubeGateway 根据请求信息,包括但不限于 resource/ verb/ user/ namespace/ apigroup 等进行路由。为 kube-apiserver 分组提供基础能力,以低运维成本实现 kube-apiserver 组之间的隔离性,提高集群稳定性;
  • 配置管理云原生化,以 K8s 的标准 API 形式管理网关配置,支持配置热更新;
  • 支持限流、降级、动态服务发现、优雅退出、upstream 异常检测等网关的通用能力。

总结及展望

本文对Kubenetes 的基本概念和KubeWharf 的三个项目做了介绍,KubeWharf不仅仅是某一项或某几项技术,更是一种理念和引导,促进企业在上云的过程中使用相关技术来更好的发挥云计算的优势。

对于 KubeWharf 项目而言,未来的发展方向可能包括:

  • 更强大的多租户支持: 针对大规模多租户集群的场景,进一步加强多租户支持,提供更细粒度的权限控制和更智能的资源分配。
  • 更广泛的云原生整合: 随着云原生技术的发展,KubeWharf 可能会更深入地整合更多云原生工具和服务,以提供更全面的解决方案。
  • 社区的扩大和贡献者的增加: 通过吸引更多的开发者和用户,形成更为活跃的社区,有助于项目的稳健发展和持续创新

粒度的权限控制和更智能的资源分配。

  • 更广泛的云原生整合: 随着云原生技术的发展,KubeWharf 可能会更深入地整合更多云原生工具和服务,以提供更全面的解决方案。
  • 社区的扩大和贡献者的增加: 通过吸引更多的开发者和用户,形成更为活跃的社区,有助于项目的稳健发展和持续创新

在KubeWharf发展的过程中,使得云原生向着更加标准化的方向发展。正是社区和开源的力量把全球开发者凝聚在一起共同推进云原生技术的进步,使其欣欣向荣的向前发展。

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

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

相关文章

绝地反击,不做背锅侠!

那么作为运维人员,如何摆脱以上背黑锅的尴尬局面呢?堡垒机当然是破解此局面的绝杀大招。 1.统一登录入口 提供统一入口,集中管理和分配账户密码、所有运维人员只能登录堡垒机才能访问服务器,梳理“人与服务器”之间的关系&#…

案例169:基于微信小程序的小区疫情防控系统

文末获取源码 开发语言:Java 框架:SSM JDK版本:JDK1.8 数据库:mysql 5.7 开发软件:eclipse/myeclipse/idea Maven包:Maven3.5.4 小程序框架:uniapp 小程序开发软件:HBuilder X 小程序…

各种不同的安科瑞电力物联网仪表实现互联互通

安科瑞 崔丽洁 电力物联网是物联网在智能电网中的应用,是有效整合通信基础设施资源和电力基础设施资源,提高电力系统信息化水平,改善电力系统现有基础设施利用效率的重要举措。 电力物联网仪表为终端感知设备,该系列产品将我们多年…

2015年第四届数学建模国际赛小美赛B题南极洲的平均温度解题全过程文档及程序

2015年第四届数学建模国际赛小美赛 B题 南极洲的平均温度 原题再现: 地表平均温度是反映气候变化和全球变暖的重要指标。然而,在以前的估计中,在如何界定土地平均数方面存在一些方法上的差异。为简单起见,我们只考虑南极洲。请建…

掌握ElasticSearch(一):Elasticsearch安装与配置、Kibana安装

文章目录 〇、简介1.Elasticsearch简介2.典型业务场景3.数据采集工具4.名词解释 一、安装1.使用docker(1)创建虚拟网络(2)Elasticsearch安装步骤 2.使用压缩包 二、配置1.目录介绍2.配置文件介绍3.elasticsearch.yml节点配置4.jvm.options堆配置 二、可视化工具Kibana1.介绍2.安…

C++图论之强连通图

1. 连通性 什么是连通性? 连通,字面而言,类似于自来水管道中的水流,如果水能从某一个地点畅通流到另一个地点,说明两点之间是连通的。也说明水管具有连通性,图中即如此。 无向图和有向图的连通概念稍有差…

RFID技术在汽车制造:提高生产效率、优化物流管理和增强安全性

RFID技术在汽车制造:提高生产效率、优化物流管理和增强安全性 随着科技的进步,物联网技术已经深入到各个领域,尤其在制造业中,RFID技术以其独特的优势,如高精度追踪、实时数据收集和自动化操作,正在改变传统的生产方式…

数字人直播一比一克隆:实现虚拟与现实的完美融合

数字人直播一比一克隆技术作为当今科技领域的一项重要突破,将虚拟与现实完美融合,引发了广泛的关注和讨论。这项技术不仅能够创造一个以数字人为基础的虚拟世界,同时也能够将真实人物复制到数字化的平台上进行直播,让观众在屏幕前…

轻量级开源服务器Tomcat本地部署并将网页发布到公网远程访问

目录 1.前言 2.本地Tomcat网页搭建 2.1 Tomcat安装 2.2 配置环境变量 2.3 环境配置 2.4 Tomcat运行测试 2.5 Cpolar安装和注册 3.本地网页发布 3.1.Cpolar云端设置 3.2 Cpolar本地设置 4.公网访问测试 5.结语 前些天发现了一个巨牛的人工智能学习网站,通…

UILabel布局解决文本右边对不齐的问题

来看示例: 文本右边会出现明显的间距,文字无法对齐。 解决方法: 给段落设置样式,为字符串对象设置NSTextAlignmentJustified值 NSTextAlignmentJustified:保持文字左右对齐,最后一行保持做对齐 NSString *str “xxxxxxxxxxxx…

树莓派,mediapipe,Picamera2利用舵机云台追踪人手(PID控制)

一、项目目标 追踪人手大拇指指尖: 当人手移动时,摄像头通过控制两个伺服电机(分别是偏航和俯仰)把大拇指指尖放到视界的中心位置,本文采用了PID控制伺服电机 Mediapipe Hand简介 MediaPipe 手部标志任务可检测图像…

状态管理概述

ArkTS UI的状态管理到这里就叙述完了,现在做一个概述,也可以认为是一个总结。 在声明式UI编程框架中,UI是程序状态的运行结果,用户构建了一个UI模型,其中应用的运行时的状态是参数。当参数改变时,UI作为返回…

向华为学习:IPD运作-PDP产品开发流程-开发阶段的关键活动

前面几天,华研荟为您分享了IPD体系中产品开发流程(严格来说是PDP流程,也是狭义的IPD流程)前两个阶段:概念阶段和计划阶段的主要内容和关键活动。 今天我们继续来介绍PDP流程的第三个阶段:开发阶段的主要内容…

鸿蒙原生应用/元服务开发-Stage模型能力接口(十)上

ohos.app.form.FormExtensionAbility (FormExtensionAbility) FormExtensionAbility为卡片扩展模块,提供卡片创建、销毁、刷新等生命周期回调。 本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。本模块接…

ArkUI动画概述

目录 1、按照页面分类 2、按照功能分类 3、显示动画 4、属性动画 动画的原理是在一个时间段内,多次改变UI外观,由于人眼会产生视觉暂留,所以最终看到的就是一个“连续”的动画。UI的一次改变称为一个动画帧,对应一次屏幕刷新&a…

C#实现串口通讯

1、官网下载Launch Virtual Serial Port Driver Virtual Serial Port Driver - create and emulate virtual COM port,开个虚拟串口: Pair模式(一对,成双成对的意思,就是COM1向COM2传或者COM2向COM1,好比两台机器的CO…

Unity | 渡鸦避难所-4 | 镜头跟随角色移动

1 Cinemachine 简介 在第一人称视角的游戏中,摄像机需要时刻跟随角色移动。除了手动计算摄像机的位置、旋转外,也可以使用 Unity 提供的 Cinemachine 插件来轻松实现摄像机的控制 Cinemachine 是一套用于操作 Unity 相机的模块,解决了跟踪目…

【AI】阿里云免费GPU服务资源领取方法

首先,直接点击链接:阿里云免费试用 也可以复制链接到浏览器进行跳转:https://free.aliyun.com?userCodernbj0c1o 页面如下所示:这里的免费试用期限是3个月,给的资源点够我们试用V100 16G显存服务器300个小时&#xff…

【Java】智慧工地云平台管理系统源码

智慧工地平台-系统架构 •统一数据标准、规范数据接口 •决策支持:数据挖掘、全文搜索引擎、OLAP分析、统计报表 •智慧工地平台:项目人员管理、视频监控管理、安全隐患管理、现场物料管理、危大工程监测、绿色文明施工。 •物联网采集:人脸识…

Linux入门——环境 基本指令 基本工具 权限的初步认识

目录 1.Linux的历史 2.利用云服务器设置Linux 3.使用Xshell连接阿里云服务器 4.Linux常见的指令 5.什么是操作系统? 6.命令解释器 7. linux的权限的初步认识 8.相关习题的练习 1.Linux的历史 1991 年 10 月 5 日,赫尔辛基大学的一名研究生 Linus B…