小心“移植税”:Kubernetes不能使应用程序具有可移植性

2020 年 10 月 02 日

小心“移植税”:Kubernetes不能使应用程序具有可移植性

本文经作者授权,由 InfoQ 翻译并发布。

Gartner 分析师 Marco Meinardi、Richard Watson 和 Alan Waite 表示,不能主要为了应用程序的可移植性而采用 Kubernetes,因为虽然 K8s 从理论上提高了可移植性,但在实践中它使应用依赖于特定平台,同时有可能让应用无法使用云平台的最佳特性。

他们最近在“专业技术建议”文件中提出了这一理论,并且在 2020 年 9 月 4 日的一篇博文中总结了这个理论。

我们阅读了完整的文件,其中心思想是:想要采用 Kubernetes 的话,你还得选择合适的 Kubernetes 管理工具供应商才行。

“使用 Kubernetes 时,你只是将一种依赖形式换成了另外一种。”他们写道,“通过使用 Kubernetes 来减少对特定供应商的依赖是很吸引人的,但 K8s 的抽象层使其演变为另一种形式的依赖。你现在依赖于抽象层,而不是底层基础环境。”

这很重要,因为“尽管抽象层对于可移植性可能很有用,但底层云服务商常常掩盖或扭曲这些抽象层,使其并不具有完全相同的功能。总的来说,公有云服务所提供的抽象层会带来成本和服务不一致的问题,所以当你的组织将产品迅速上市和迅速产生收益作为首要目标时,采用云服务商提供的这些抽象层并不是什么好选项。”

他们还担心为了实现可移植性,用户可能无法使用云平台的最佳特性。

“使 Kubernetes 应用具备可移植性需要避免一切对基础设施提供商的依赖,例如云服务商提供的原生服务。而我们开始使用该云平台的原因通常就是因为这些服务所提供的功能。”他们写道。

然后,他们三人指出不同云服务商运行 Kubernetes 的基础设施特性不同,这也使移植变得不太容易。

“计算实例用到的云服务提供者的特定功能越多,实现可移植性的可能性就越低。”分析师们写道,“例如,在 AWS Fargate 上使用 EKS 未经 CNCF 认证,甚至可以说它不是标准的 Kubernetes。由容器实例(ACI)实现的 Azure 虚拟节点也是如此。”

该文件也指出,采用 Kubernetes 几乎肯定意味着要采用第三方的存储和网络组件,这也意味着移植应用程序必须同时复制这些额外的组件,因此这也使应用程序更加依赖于特定平台。

使用云服务商在基础设施堆栈中预置的软件可以减少一些麻烦,例如可以选择 Google Anthos,Azure Stack 或 AWS Outposts。

但总体而言,该文件表明你别无选择,只能“依赖于特定平台,尽可能减轻这种依赖并接受它。”

而且,应该是在三位分析师评估的应用移植概率“极低”的情况下做这个选择。

“由于可移植性的挑战,大多数应用程序不会在云服务提供商之间迁移,但是大多数应用程序也不需要这种可移植性。“数据引力”使应用程序往往更靠近数据的存储位置。迁移数据通常是困难且昂贵的。出于类似的原因,为了利用最便宜的基础设施而频繁移动应用程序的情况尚未出现。”

因此,该建议表明为移植性而建立应用可能会引入“移植税”

“如果你采用 Kubernetes 仅仅是为了实现应用的可移植性,那么你会在尝试解决一个问题的同时,引入了三个本来没有的新问题。”

但是如果你不管上述问题,仍然选择使用 Kubernetes 并且重视可移植性,他们三人推荐使用另外一层基础设施。

“进一步抽象是避免依赖于特定 Kubernetes 消费模型和供应商的合理方法。这种方法建议使用 Kubernetes 管理器的管理器,例如 D2iQ Kommander,Giant Swarm,Google Anthos,Platform9,Rancher,VMware Tanzu Mission control 或者类似的管理器。”

但是,一旦你使用了这样的平台,就会出现另一个你无法避免的问题。

分析师写道:“这类联合产品的目的是联合多个 Kubernetes 集群供应和管理,跨越多种基础架构和 Kubernetes 消费模型。但是,这就会冒着对该联合产品产生新的依赖性的风险,而这种新的依赖比对主要云服务商或软件供应商的依赖还要糟糕。”

原文链接:
https://www.theregister.com/2020/09/08/kubernetes_app_portability_problems

2020 年 10 月 02 日 12:00 2701
用户头像
蔡芳芳 InfoQ高级编辑

发布了 455 篇内容, 共 210.5 次阅读, 收获喜欢 1152 次。

关注

评论 2 条评论

发布
用户头像
若非别无选择,谁没事移植系统啊
2020 年 10 月 02 日 20:09
回复
用户头像
感謝你的這篇文章 !
2020 年 10 月 02 日 19:05
回复
没有更多评论了
发现更多内容

Java并发编程系列——分布式锁

孙苏勇

Java zookeeper 并发编程 多线程 分布式锁

冥想与呼吸法之于情绪控制

树上

情绪 冥想 呼吸法 呼吸 自我

排序系列快排/内省

脚动两轮男之漂流小王子

第一次手动编译openjdk11

py ploughman

jdk

为什么厉害的人精力都那么好?

非著名程序员

程序员 程序人生 提升认知 精力管理

程序员陪娃漫画系列——当她想吃的时候

孙苏勇

程序员 生活 程序员人生 陪伴 漫画

第三方支付概述

cf

支付 网联 备付金

排序系列之选择/冒泡

脚动两轮男之漂流小王子

排序系列插入/希尔

脚动两轮男之漂流小王子

排序系列归并/timsort

脚动两轮男之漂流小王子

排序系列鸡尾酒/地精

脚动两轮男之漂流小王子

Centos7 编译安装Nginx

Kevin Liao

nginx 编译 安装

花更多的时间在自己的优势上

Neco.W

创业 自我管理 重新理解创业

排序系列bogo排序

脚动两轮男之漂流小王子

Java并发编程基础--线程

Java收录阁

Java 线程

基准测试神器JMH —— 详解36个官方例子

小楼

Java 性能 JMH

程序员为什么要提高赚钱能力?程序员如何提高赚钱能力?

陆陆通通

赚钱

Impala UDTF 功能实现

小鹏

大数据 hadoop cloudera 数据仓库

Redis学习笔记(安装)

编程随想曲

redis

创投机会诞生在这四个核心变量中 | 2019年在某大学课堂做的一次讲演的实录

邓瑞恒Ryan

创业 管理 投资 行业分析

Centos 7 使用Firewalld

Kevin Liao

Centos 7 防火墙 Firewalld防火墙 Firewalld

做一个好产品的初衷:用户值得

池建强

创业 产品 写作

排序系列堆/二分插入

脚动两轮男之漂流小王子

排序系列计数/基数

脚动两轮男之漂流小王子

MySQL自增ID以及其他唯一ID方式分析

Bruce Duan

MySQL自增ID 唯一ID

人人都要有经营意识

Neco.W

创业 重新理解创业 公司管理

游戏夜读 | 工具游戏的辉煌

game1night

leetcode141. 环形链表

Damien

算法 链表 LeetCode

leetcode8. 字符串转换整数 (atoi)

Damien

算法 数学

NIO看破也说破(一)—— Linux/IO基础

小眼睛聊技术

Linux 架构 后端 Netty nio

Centos 7 安装RabbitMQ(RPM)

Kevin Liao

RabbitMQ RPM安装

小心“移植税”:Kubernetes不能使应用程序具有可移植性-InfoQ