Kubernetes 很复杂,那是因为复杂才能解决你的问题

云计算
Kubernetes 的最大缺点是它预先加载了很多复杂性,但是复杂性是合理的,这就导致又很多东西需要预先学习。

Kubernetes 是否过于复杂?

我经常被问及Kubernetes 是否复杂。在这篇文章中,我将逐一讨论这些论点并给出答案。当您需要和不需要 Kubernetes 时,我也会向您解释。

与虚拟机相比,使用容器的优势

在了解 Kubernetes 本身的复杂性之前,我们需要了解一下 Docker 容器,因为它也增加了复杂性。这种复杂性值得吗?

几乎每个人都会同意,即使您决定不使用 Kubernetes,您仍然应该使用 Docker。在没有 Kubernetes 的情况下,将 Docker 容器部署到 AWS 或其他云提供商也不难。您只需要在虚拟机上设置一个运行 Docker 守护进程。

Docker 容器的主要优点是它们是独立的包。它们将应用程序的环境与其运行的机器分离。您不再需要关心主机上存在什么库或 Python 版本,因为 Dockerfile 使您的依赖关系明确。如果它可以在您自己的机器上运行,那么它也可以在任何相同CPU架构上的机器运行。Docker 不完全是基础设施即代码,但 Dockerfiles 确实允许您将应用程序运行时定义为 git 存储库中的一个简单文件。

Docker 容器的另一个好处是它们是分布式应用程序包,专为不可变基础架构的世界而设计。换句话说,它们被设计成无状态的。容器本质上是短暂的。如果他们死了并重新启动也没关系。

什么时候不需要使用 kubernetes

当满足以下四个条件时,您不需要 Kubernetes:

  • 将极少数容器部署到极少数机器(主机),换句话说你的用户数量有限。
  • 容器和机器的数量是静态的,不会经常出现扩容或者缩容。
  • 您的容器和机器不会经常出现故障。
  • 您不需要持久存储、负载均衡、配置管理、服务发现、自动修复、自动缩放等其他功能。或者您确实需要这些功能,但您的要求非常有限并且不介意供应商锁定。

换句话说,如果您有简单的要求,那么有一个更简单的 Kubernetes 替代方案。您可以将容器直接部署到运行在几个虚拟机上的 Docker 守护进程。

复杂的需求就需要复杂的解决方案

当您拥有的业务正在快速成长,用户量激增,那么您可能确实需要 Kubernetes:

  • 您的应用需要处理可变的用户负载量
  • 您需要使用计算之外的其他云服务 - 例如,持久存储、负载均衡器、配置管理等。
  • 节点过多,经常出错,您的应用需要自动恢复能力
  • 您希望以一致的方式管理多个应用程序和系统
  • 您有上百个团队在相同的环境中工作或使用彼此的微服务
  • 其它复杂场景

对于上述要求,您需要引入容器基础设施,这意味着为大规模、动态地部署 Docker 容器并将它们相互连接以及与其他云服务(如存储)进行优化的基础设施。

该基础设施最流行的形式是 Kubernetes。如果这些是您的要求,为什么不运行 Kubernetes?当然它很复杂,但是满足这些要求的每个解决方案都将具有相似的复杂性。

至少对于 Kubernetes,复杂性是开源的,并且以声明式 Kubernetes API 的形式标准化。这优于其他公共云或内部解决方案。

没有 Kubernetes 和 Docker 的企业基础架构

这是仇恨者的典型主张:

Kubernetes 和 Docker 是不必要的,因为自动缩放很容易,systemd 可以自我修复,云提供商有用于持久卷的 API,备份应该用主机上的 cronjobs 完成,秘密用 MyFavoriteSecretVault 完成,Consul 做配置管理,服务发现是 DNS ,健康检查不是必需的,Reddit 上的一个家伙在他的上一家公司写了一个 3000 行的 Perl 脚本用于滚动更新,因此显然 Kubernetes 是不必要的。

对于这些人,我只能说祝你好运。此外,您重新发明了 Kubernetes。

让初学者更容易使用 Kubernetes

Kubernetes 的最大缺点是它预先加载了很多复杂性,但是复杂性是合理的,这就导致又很多东西需要预先学习。

责任编辑:赵宁宁 来源: 云原生技术爱好者社区
相关推荐

2021-04-27 22:38:41

代码开发前端

2022-07-29 08:40:20

设计模式责任链场景

2018-07-31 14:03:09

JVM内存数据

2021-06-09 10:59:13

数字化转型CIO数字化

2009-03-18 10:01:15

OracleIASNoClassDefF

2012-04-06 09:45:41

开发

2021-03-03 14:21:22

物联网税收运营商

2010-03-16 17:00:02

Java多线程支持

2015-04-14 10:39:09

iWatch苹果

2019-12-26 14:50:36

ORDER BY数据库排序函数

2013-12-11 09:29:02

2010-01-20 10:14:53

C++程序

2023-08-02 11:30:13

自动化人工智能

2019-05-13 15:47:29

Kubernetes云计算云复杂性

2020-07-29 10:02:47

Java内存故障内存

2020-07-27 08:08:47

Java内存JVM

2021-01-11 08:34:16

缓存穿透QPS

2018-01-18 15:15:49

程序员辞职委屈

2019-08-21 13:24:25

KubernetesHadoop容器

2018-01-11 16:47:01

双十一快递大数据
点赞
收藏

51CTO技术栈公众号