10 月 23 - 25 日,QCon 上海站即将召开,现在购票,享9折优惠 了解详情
写点什么

Gitpod Flex,替代 Kubernetes 的云开发环境

作者:Aditya Kulkarni

  • 2025-01-21
    北京
  • 本文字数:1597 字

    阅读完需:约 5 分钟

Gitpod Flex,替代 Kubernetes 的云开发环境

Gitpod 是一个云开发环境平台。在经过六年的使用和试验后,他们最近决定放弃 Kubernetes。这一决定源于他们管理 150 万用户的开发环境,同时每天处理大量环境的经验。


Gitpod 的首席技术官兼联合创始人 Christian Weichel 和高级工程师 Alejandro de Brito Fontes 在一篇博文中详细阐述了这一决定的历程。Gitpod 发现,虽然 Kubernetes 非常适合生产负载,但用于开发环境时会带来重大挑战。


开发环境的天然性质也是这些挑战的成因。与生产负载不同,开发环境具有高度的状态性和交互性,开发人员深度参与其源代码和更改过程。它们显示出了不可预测的资源使用模式,需要复杂的权限和功能,通常需要 root 访问权限和安装各种包的能力。这些因素使开发环境不同于典型的应用程序负载,并为 Gitpod 的基础设施决策提供了灵感。


最初,Kubernetes 因其可扩展性、容器编排和丰富的生态系统而成为 Gitpod 基础设施的理想选择。然而,在扩展时,他们遇到了许多挑战,特别是在安全和状态管理方面。先是资源管理出现了挑战,每个环境的 CPU 和内存分配尤其成问题。开发环境中 CPU 需求激增的情况使得管理人员很难预测何时用户何时需要使用 CPU 时间,这还引发了平台对 CPU 调度和优先级进行的许多实验。


存储性能优化是另一个关键领域。Gitpod 尝试了各种设置,包括 SSD RAID 0、块存储和持久卷声明(PVC)。每种方法在性能、可靠性和灵活性方面都有其权衡。备份和恢复本地磁盘被证明是一项昂贵的操作,需要仔细平衡 I/O、网络带宽和 CPU 使用率。


自动扩展和启动时间优化是 Gitpod 的重要目标。他们探索了各种扩大规模和向前发展的方法,包括“幽灵工作区”、ballast pod,最后则是集群自动缩放器插件。镜像拉取优化是另一个关键方面,Gitpod 尝试了多种策略来加速镜像拉取,包括守护进程预拉取、最大化层重用和预烘焙镜像。


Kubernetes 中的网络引入了其自身的一系列复杂性,特别是在开发环境访问控制和网络带宽共享方面。安全性和隔离带来了重大挑战,因为 Gitpod 需要提供安全的环境,同时为用户提供开发所需的灵活性。他们实现了一个定制的用户命名空间解决方案来解决这些挑战,其中涉及很多复杂组件,例如文件系统 UID 转换、安装屏蔽进程和自定义网络功能。


Hacker News 上有一场与 Gitpod 之旅相关的有趣 对话。HN 用户之一 datadeft 在回复中引用了原始 k8s 论文并说,


唯一的用例是一个低延迟和高延迟工作流的组合,资源分配就是基于此的。通常的想法是,你可以轻松地在节点之间移动低延迟工作,并且高延迟作业失败时不会产生严重后果。

基于这一信息,很难证明使用 k8s 是可以解决 gitpod 的问题的,甚至都不该考虑这个选项。


为了寻找更好的解决方案,Gitpod 尝试了微型虚拟机技术,如 Firecracker、Cloud Hypervisor 和 QEMU。虽然这些技术提供了一些不错的功能,例如增强的资源隔离和改进的安全边界,但它们也在开销、镜像转换和技术特有的约束方面带来了新的挑战。


最终,Gitpod 得出结论,使用 Kubernetes 实现他们的目标是可能的,但在安全性和运营开销方面需要权衡。这种结论促使他们开发了一种新的架构 Gitpod Flex,它继承了 Kubernetes 的重要优势,例如控制理论和声明性 API,同时简化了架构并改善了安全基础。


Gitpod Flex 引入了与开发环境相关的抽象层,并去除了许多不必要的基础架构。这种新架构允许用户顺利集成开发容器,并能够在台式机上运行开发环境。它可以在任意数量的区域中快速部署自托管,从而更好地控制合规性并在建模组织边界时提供灵活性。


总之,Gitpod 的历程强调了系统选择决策的重要性。选择系统时,必须考虑其改善开发体验、降低运营负担和提高利润的能力,而不是简单地在 Kubernetes 和替代方案之间进行选择。要了解有关 Gitpod Flex 架构的更多信息,感兴趣的读者可以观看这个深度分享。


原文链接:


Gitpod Flex, Cloud Development after Kubernetes(https://www.infoq.com/news/2024/12/gitpod-kubernetes-flex/)

2025-01-21 16:009226

评论

发布
暂无评论

Photoshop 2023 (版本 24.2)的新增功能和增强功能

互联网搬砖工作者

《深入理解高并发编程:JDK核心技术》-冰河新书上市

冰河

并发编程 多线程 高并发 协程 异步编程

这六种目前最常见分布式事务解决方案!请拿走不谢

三十而立

Java 程序员 分布式 IT

互联网工程师1000道Java面试题整理全集,助你一路绿灯

Java你猿哥

Java 面试 SSM框架 八股文 Java八股文

马士兵教育2023年全新Java架构师学习路线「首发版」

Java你猿哥

Java 学习 架构 面试 后端

云智一体,深入生命科学

Baidu AICLOUD

基因测序 AI制药 AI for Science

Notification(状态栏通知)详解

芯动大师

android Android Studio Notification

自己动手写虚拟机

ScratchLab

虚拟机 kvm

浅析三款大规模分布式文件系统架构设计

Java你猿哥

架构 分布式 架构设计 分布式架构 系统架构设计手册

如何重装mac系统,u盘安装苹果macos系统教程

互联网搬砖工作者

传统企业,如何构建性能测试技术体系

老张

技术 #性能测试

焱融科技荣登《2022中国企业数智化创新TOP50》榜单

焱融科技

文件存储 分布式文件存储 数智化 高性能存储 全闪存储

SpringBoot 实现 MySQL 百万级数据量导出并避免 OOM 的解决方案

Java你猿哥

Java MySQL spring Spring Boot ssm

强大的ai技术图像编辑器:Luminar Neo 激活版

真大的脸盆

图像编辑 编辑图像 图像处理工具

抽丝剥茧还原真相,记一次神奇的崩溃

阿里技术

debug

如何学习分布式系统,分布式是什么,这里有很好的解释,很全

三十而立

Java 分布式

硬核!阿里大佬都在内卷的SpringBoot从入门到实战笔记

Java你猿哥

Java Spring Boot ssm 实战 Spring全家桶

SpringBoot 集成 Druid 数据源

Java你猿哥

Java Spring Boot 后端 ssm Druid

Jetpack-Compose 学习笔记(二)—— Compose 布局你学会了么?

修之竹

android 前端 android jetpack

爆火!阿里新版23年面试突击进阶手册,Github标星51k!

Java你猿哥

Java 面试 ssm 面经 八股文

三天吃透Spring Cloud面试八股文

程序员大彬

Java 面试 SpringCloud

战损版JavaAgent方法耗时统计工具实现

Java你猿哥

Java Spring Boot Java Agent ssm

携手共进丨九科信息入选信通院“铸基计划”高质量数字化转型产品及服务全景图,并受邀出席高质量数字转型创新大会

九科Ninetech

华大北斗芯片亮相纽伦堡国际嵌入式展EW2023

江湖老铁

Java实战干货|Spring Boot整合MyBatis框架快速实现数据操作

三十而立

Java spring springboot

面试造飞机?GitHub顶级“java面试手册2023”(统计通过率95%)

三十而立

Java GitHub 面试 java面试

牧云助手:一款面向技术爱好者的远程主机管理工具

百川云开发者

运维 主机管理 终端远程协助

DevOps|研发效能不是老板工程,是开发者服务

laofo

DevOps cicd 研发效能 持续交付 平台工程

一个小网站的云原生实践

松然聊技术

架构 云原生

PyTorch 深度学习实战 | 基于YOLO V3的安全帽佩戴检测

TiAmo

数据采集 PyTorch

Gitpod Flex,替代 Kubernetes 的云开发环境_云原生_InfoQ精选文章