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

一文速览字节最新分布式操作系统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.mzph.cn/news/218147.shtml

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

相关文章

怪兽吃糖果

欢迎来到程序小院 怪兽吃糖果 玩法:左右飞出的糖果,点击鼠标糖果即为怪兽吃掉,不同的糖果不同的分数奖励, 吃不掉的糖果会扣除一次生命,共三次生命值,点击炸弹游戏结束,快去吃糖果吧^^开始游戏…

基于ssm大学生创新创业平台项目管理子系统设计与实现论文

摘 要 互联网发展至今,无论是其理论还是技术都已经成熟,而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播,搭配信息管理工具可以很好地为人们提供服务。针对大学生创新创业项目信息管理混乱,出错率高,信…

Redis持久化AOF详解

基础面试题 什么是AOF AOF(Append-Only File)用于将Redis服务器收到的写操作追加到日志文件,通过该机制可以保证服务器重启后依然可以依靠日志文件恢复数据。 它的工作过程大抵分为以下几步: 收到客户端的写入命令(例如SET、DE…

安全算法(一):安全技术、加密的基础知识、哈希函数的简单介绍

安全算法(一):安全技术、加密的基础知识、哈希函数的简单介绍 通过互联网交换数据时,数据要经过各种各样的网络和设备才能传到对方那里。数据在传输过程中有可能会经过某些恶意用户的设备,从而导致内容被盗取。 因此…

外汇天眼:新手做外汇交易需要注意什么?

外汇投资是一个充满机会和挑战的市场,对于新手来说,了解一些必要的知识和技巧是非常重要的。 以下是一些新手投资外汇必须注意以下几点: 1.了解外汇市场的基本知识 在进入外汇市场之前,了解一些基本知识是必要的。 这包括外汇市…

亚马逊鲲鹏系统:防关联技术守护您的账户安全

亚马逊买家账号注册是一项相当简便的操作,但当涉及到批量注册时,我们就需要更加注意防关联的问题。对于那些对此领域不够熟悉的朋友们,可以使用亚马逊鲲鹏系统,这款系统能够为我们提供一站式的解决方案。该系统不仅支持买家账号的…

从零开始学习 Python 网络爬虫:使用 Beautiful Soup 解析网页

在这篇文章中,我们将介绍如何使用 Python 编写一个简单的网络爬虫,以获取并解析网页内容。我们将使用 Beautiful Soup 库,它是一个非常强大的库,用于解析和操作 HTML 和 XML 文档。让我们开始吧! 一. 安装 Beautiful …

mysql,树形结构表中,查询所有末节点数据(叶子结点)

需求:在一个可以存放多级目录的表中,查询出某个课程目录下所有末节点(因为只有末节点可以挂载资源) 例如下图: 其中 1.11.2.12.1 都是末节点,因为他们已经没有下一级了 catalog表中重要字段有:c…

【论文解读】System 2 Attention提高大语言模型客观性和事实性

一、简要介绍 本文简要介绍了论文“System 2 Attention (is something you might need too) ”的相关工作。基于transformer的大语言模型(LLM)中的软注意很容易将上下文中的不相关信息合并到其潜在的表征中,这将对下一token的生成产生不利影响…

【docker四】使用Docker-compose一键部署Wordpress平台

目录 一、YAML 文件格式及编写注意事项(重要) 1、yaml文件使用时注意事项: 2、yaml文件的基本数据结构: 2.1、声明变量(标量。是单个的不可再分的值,类型:字符串,整数&#xff0c…

SpringIOC之DependsOn

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

scikit_feature_selection实战

在进行李宏毅HW01作业时,需进行特征选择。 选用scikit-learn 中的feature_selection. 参考: selectkbest feature selection 实战注意点: chi 2 适用于非零的参数, 如果报错,换用 f_classif model SelectKBest(…

Unity 修改游戏对象的旋转角度Rotation的方法

在Unity中要修改游戏对象中的旋转角度,即下图中的Rotation: 有三个方法: 1、 使用欧拉角(Euler Angles):欧拉角是一组表示旋转的三个角度值(绕X轴的旋转、绕Y轴的旋转和绕Z轴的旋转)。 transf…

2019年第八届数学建模国际赛小美赛A题放射性产生的热量解题全过程文档及程序

2019年第八届数学建模国际赛小美赛 A题 放射性产生的热量 原题再现: 假设我们把一块半衰期很长的放射性物质做成一个特定的形状。在这种材料中,原子核在衰变时会以随机的方向释放质子。我们假设携带质子的能量是一个常数。质子在穿过致密物质时&#x…

重生奇迹MU翅膀合成方法

重生奇迹MU翅膀,攻击力和吸收伤害都相当强大,但是合成难度极高,下面给大家详解怎么合成! 方法/步骤 1、先到商店买加4追4物品,级别越高越好,可以买多个,数量越多,合成几率越高&…

【PWN】学习笔记(一)【二进制基础】

目录 课程教学一次简单的Hack程序的编译与链接Linux下的可执行文件格式ELF进程虚拟地址空间程序的编译与链接程序的装载与进程的执行x86&amd64汇编简述 课程教学 课程链接:https://www.bilibili.com/video/BV1854y1y7Ro/?vd_source7b06bd7a9dd90c45c5c9c44d12…

基于ssm的疫情物质管理系统论文

摘 要 进入信息时代以来,很多数据都需要配套软件协助处理,这样可以解决传统方式带来的管理困扰。比如耗时长,成本高,维护数据困难,数据易丢失等缺点。本次使用数据库工具MySQL和编程技术SSM开发的疫情物资管理系统&am…

全能数据分析软件Tableau Desktop 2019 mac功能亮点

Tableau Desktop 2019 mac是一款专业的全能数据分析工具,可以让用户将海量数据导入并记性汇总,并且支持多种数据类型,比如像是编程常用的键值对、哈希MAP、JSON类型数据等,因此用户可以将很多常用数据库文件直接导入Tableau Deskt…

光栅化渲染:优化技巧

我们在前面的章节中介绍的所有技术都是光栅化算法的基础。 不过,我们只是以非常基本的方式实现了这些技术。 GPU 渲染管道和其他基于光栅化的生产渲染器使用相同的概念,但它们使用这些算法的高度优化版本。 展示用于加速算法的所有不同技巧远远超出了介绍…

富时中国a50指数期货:探寻涨跌脉络

富时中国A50指数期货是衡量中国大陆50家最具代表性上市公司的指数。作为衍生品交易市场的重要一环,A50指数期货是投资者关注的焦点之一。其涨跌走势直接反映了中国大陆股市的整体表现和投资者情绪。 A50指数期货简介 富时中国A50指数期货由新加坡交易所&#xff0…