2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

怎样为 k8s 找到最合适的 PaaS 解决方案?

  • 2020-05-01
  • 本文字数:3018 字

    阅读完需:约 10 分钟

怎样为k8s找到最合适的PaaS解决方案?

本文最初发布于 Bram Dingelstad 的个人博客,经原作者授权由 InfoQ 中文站翻译并分享。


我们可能遇到过这样的情况。团队中有人发现一个 bug,这个 bug 很特殊,与你经常遇到的软件 bug 不同。这不是一个普通的 bug,而是非常个人化的 bug:hype-driven developer。


它发端于小的事情,然后试图将团队推向一个新技术方向或项目中的一个小模块。在了解它之前,你已埋头于某个奇怪项目的高级文档中。这些文档仅用 3 个简单的步骤就解决了你的业务案例。然而,当你试图找到一种方法去做那些琐碎的事情时,却似乎需要更多的步骤。


我们都有这样的时刻:在过去一年,一个名为 Kubernetes 的项目成为许多人的关注焦点之一。有些公司发现其有着巨大作用,还有些公司还没有发现其价值,并在这个过程中将自己搞得“遍体鳞伤”。


而我正处于中间位置。我正在做类似事情,并且做好了踩坑准备。在此之前,先让我们看看如何在 k8s 上部署一个简单的、类似于 PaaS 的平台。

找到一个完美的类 PaaS 平台

那么,我们从哪里开始?肯定有一种简单方法能找到这样的东西,也许,我们从简单的 DuckDuckGo 搜索开始。



DuckDuckGo 搜索没啥用


显然,k8s 不是 PaaS。我想基于 k8s 构建一个 PaaS,当然不是把它当作一个 PaaS 来使用。


然后,我们在 HackerNews 上搜索一下。第一个查询找到一篇失效文章。此外,我在 GitHub 上偶然发现一个很棒的列表。在进行更广泛的搜索后,我针对自己的应用场景列出一个可能的候选项目列表。



还有很多其他选择,我尝试过其中一些,还有一些是针对大企业的。

我的应用场景

Quest Vault,我们在 DigitalOcean droplet 上安装一个简单的 Wordpress 来运行我们的电商网站。尽管能通过运行一些简单的 bash 脚本实现部署,并在本地运行测试/过渡服务器的副本,但是,我想构建一个基于行业技术的平台,而不是一些 bash 脚本。编写这些 bash 脚本很有趣,并且拥有自己的部署技术栈也很简单,但是,我希望 Quest Vault 能拥有一个“豪华些”的东西,一个标准的、让我们不必为使用的工具操心的东西。

一些必要条件

现在,我想在办公室运行k3s的 garbage server 上测试这些项目。K3s 有一个到 DigitalOcean droplet 的反向代理,而不是在互联网上访问。这意味着项目应该支持内部部署


我还希望能完全抽象出 k8s。这意味着我不想处理太多的 yaml 或者一直部署 helm charts,我想多考虑下应用程序,并且通过 CLI 就可以做到。


简而言之:我想要的是,只要按一个按钮,它就工作


我们的应用程序有很多活动组件,有些只是简单脚本,有些则是为游戏客户端提供通信的大型应用程序。不管是什么,我们的平台需要支持大量不同的应用程序类型。这通常意味着支持通过 Dockerfile 进行部署


我们计划运行的大多数应用程序都与状态密切相关。以 Wordpress 为例,我们需要一个存储图片的地方。我们还有很多需要存储的应用内照片拍摄。我们需要一种方法使我们的应用程序具有某种形式的持久化


我喜欢的项目很多,但是一个好项目和一个伟大项目的区别在于社区和行业的采用。拥有自己的 bash 脚本和在 GitHub 上有 3 个活动用户的项目几乎没有区别。如果你搞砸了,或者无论出于什么原因需要一些建议,你都希望能从一个活跃的社区获得帮助

项目清单速览

Knative

我的 Knative 经验有一个不错的开头!当读过关于它的文章后,我很高兴地得知:我能运行一个平台,谷歌在其平台内部就把它用于他们自己的类似 PaaS 的部署。考虑到谷歌创造了 k8s,这一定非常合适!它的安装过程比预期困难得多。


似乎没有什么简单方法来安装这个平台,而且,无法轻松地使用一个平台会是将来的一个风险。

OpenFaaS Cloud

安装非常简单!我很快就让这个平台运行了起来。它满足我的大多数需求,不过,它似乎更像是实现 OpenFaas 的一种有趣方式,而不是完全成熟的 PaaS 可选方案。我不知道如何将我们的用例放到这个特别的平台上。如果你正在搭配使用耦合度比较低的项目或比较小的功能,这是一个很好的选择!

Convox

Convox 看起来很棒!几名前 Heroku 工程师,在 k8s 上构建的一个平台。似乎完美!我想尝试一下,马上就开始在 DigitalOcean k8s 集群上部署它。开发体验非常棒!


然而,他们似乎并不支持平台的内部部署版本。此外,除一些早期采用者外,这个项目似乎没有一个非常大的社区。相比而言,这个项目不是很出名,最终我放弃它,去寻找另一种选择。

Garden

这是一个非常酷的项目。我喜欢它,一家小型的独立公司开发的一个创新型解决方案。安装起来很简单,而且他们的方法对 k8s 做了很好的抽象,但是他们也允许你通过经典的 k8s 方式来保持某种形式的控制,比如 yaml 文件。我真的很愿意用它,效果很好!


然而,我确实注意到,它的一些 CLI 还不是很完善,但是,我认为这只是些小瑕疵,并不能代表最终产品。

Rio

这个项目符合所有条件。一个真正容易使用的 CLI?是的。不再以任何方式与 k8s 交互?是的。使用 Dockerfile 进行部署?是的!它们还提供了大量其他平台没有实现或实现得很差的特性。来自 Rancher 的 Rio 似乎从他们活跃的社区得到了大量支持。

在 garbage server 上进行安装设置

我快速地为 k3s 实例设置好反向代理,并开始设置 Rio。


参照他们 GitHub 页面上的快速入门指南,这个过程变得超级简单:


# Setting up the reverse proxy to k3sssh -nNTL 6443:localhost:6443 droplet &
# Installing Riocurl -sfL https://get.rio.io | sh -
# Running the example projectrio run https://github.com/rancher/rio-demo
复制代码


这样就行。我超级激动,希望马上看一下,现有的基础设施能否同样轻松地迁移。


Rio 的默认安装允许你使用他们的 rDNS 服务on-rio.io,这个服务很酷,但不需要把我的 garbage server 放在反向代理后面。我还没有使用 Linkerd 的经验,所以现在只是禁用它。使用命令rio install --disable-feature rdns,letsencrypt,linkerd重新安装后,我获得了想要的结果。


接下来,通过 kubectl 安装自定义的ClusterDomain,这让我能使用on-rio.io之外的另一个域。最后,我安装了dnsmasq,并创建了一个名为app.rio的假域名,我的应用程序会在这个域名上解析。这将让我能轻松地在 garbage server 上测试到应用程序的连接。


apiVersion: admin.rio.cattle.io/v1kind: ClusterDomainmetadata:  name: app.riospec:  httpPort: 80
复制代码


我还得想办法从 DigitalOcean droplet 连接到这个集群。我从 garbage server 上的80端口反向代理到8080端口上的 droplet。Rio 使用 80 端口安装了 Gloo 的gateway-proxy


最后一步,我设置了 nginx 配置,使其指向 Gloo 网关:


server {    listen 80;    server_name your.domain.name;    location / {        proxy_http_version 1.1;        proxy_set_header Host $host;        proxy_pass http://localhost:8080;    }}
复制代码


这有两件重要的地方需要注意,分别是proxy_http_version 1.1proxy_set_header Host


proxy_http_version非常重要,因为基于 Envoy 的 Gloo 不支持 http_version 1.0 上的网关,而只支持 1.1 上的网关。否则,它会返回一个426 Upgrade Required错误。


Host头对于实现PublicDomain非常重要。需要注意的是,要添加一个PublicDomain,它必须与server_name或被代理的Host 头匹配,否则 Gloo 无法识别我要访问的是哪个服务。


rio domain register your.domain.name rio-demo
复制代码


这就是我寻找最合适的 Kubernetes PaaS 解决方案的冒险。


英文原文:


Finding the right PaaS for k8s


2020-05-01 07:0019224
用户头像

发布了 902 篇内容, 共 635.8 次阅读, 收获喜欢 1623 次。

关注

评论 1 条评论

发布
用户头像
感觉翻译得不怎么好,我还是去读原文吧,感谢分享
2020-05-05 22:55
回复
没有更多了
发现更多内容

云图说丨Astro Canvas一站式数据可视化开发,分钟级构建业务大屏

华为云开发者联盟

云计算 后端 华为云 华为云开发者联盟 企业号 3 月 PK 榜

Region is unavailable的排查总结

TiDB 社区干货传送门

管理与运维 故障排查/诊断 扩/缩容

物理机安装 TiKV 时 RAID 卡在线配置方式

TiDB 社区干货传送门

实践案例 集群管理 安装 & 部署

课程作业及比赛任务,已支持 Notebook 内直接提交|ModelWhale 版本更新

ModelWhale

人工智能 机器学习 数据分析 canvas 模型管理

详解命令模式本质及其在高复杂调用中的实践案例

阿里技术

设计模式 命令模式

MQTT 5.0连接属性

EMQ映云科技

物联网 IoT mqtt 企业号 3 月 PK 榜 连接属性

数据标注工具,多维度体验优化|ModelWhale 版本更新

ModelWhale

人工智能 标注 标注工具 团队协同 模型管理

DTO、VO、BO、PO、DO的用法区别,居然这么多人搞不清楚.....

程序知音

vivo全球商城:库存系统架构设计与实践

vivo互联网技术

系统架构 电商 库存

基于 Flink 流计算实现的股票交易实时资产应用

Apache Flink

大数据 flink 实时计算

从代理机制到Spring AOP,这篇给你安排得明明白白的

Java spring aop 代理机制

研讨会回顾 | Perforce发布数字资产管理工具Helix DAM,帮助您按时按预算交付虚拟产品

龙智—DevSecOps解决方案

版本控制 数字资产 游戏开发 数字资产管理 芯片研发

CI/CD | 不可忽略的Jenkins基础架构修复问题

龙智—DevSecOps解决方案

ci cicd jenkins CI/CD CloudBees

从“13天”到“0天”延时,揭秘火山引擎DataLeap SLA保障最佳实践

字节跳动数据平台

大数据 数据治理 数据研发 企业号 3 月 PK 榜

基于Mindspore2.0的GPT2预训练模型迁移教程

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 3 月 PK 榜

思码逸任晶磊:ChatGPT 时代的软件研发数据与效能提升

思码逸研发效能

机器学习 研发效能 ChatGPT

TiDB 的事务和一致性校验工具 BANK

TiDB 社区干货传送门

实践案例 故障排查/诊断 数据库架构选型

Stable Diffusion原理详解

jarodyv

人工智能 机器学习 计算机视觉 Stable Diffusion 生成式AI

GitHub上线重量级分布式事务笔记,再也不怕面试官问分布式了

小小怪下士

Java 程序员 分布式 分布式事务 后端

Atlassian Server用户新选择 | 云版和本地部署的数据中心版,总有一个适合您

龙智—DevSecOps解决方案

迁移 Server Atlassian

AI+人类,实现高效网络安全

HummerCloud

人工智能 网络安全

DBT 收购 Transform,指标平台已成现代数据栈关键拼图

Kyligence

数据分析 指标管理

关于加解密、加签验签的那些事 | 得物技术

得物技术

java

代码质量与安全 | SAST与DAST有什么区别?

龙智—DevSecOps解决方案

klocwork SAST DAST 静态应用程序安全测试 动态应用程序安全测试

你没有必要完全辞去工作

宇宙之一粟

创业 个人成长 思维方式 工作 打工人

首届玄铁 RISC-V 生态大会上海举办 龙蜥操作系统持续深度参与标准共建

OpenAnolis小助手

芯片 risc-v 龙蜥操作系统 平头哥 生态大会

Oracle ASM磁盘组配置、日常运维、故障处理等操作资料汇总

墨天轮

数据库 oracle asm 磁盘管理

柏拉图会反对ChatGPT吗?~深度好文| 社区征文

李韧

人工智能 ChatGPT

联合解决方案 | 亚信科技AntDB数据库携手浪潮K1 Power赋能关键行业数字化转型,助力新基建

亚信AntDB数据库

数据库 AntDB 国产数据库 AntDB数据库 企业号 3 月 PK 榜

怎样为k8s找到最合适的PaaS解决方案?_文化 & 方法_Bram Dingelstad_InfoQ精选文章