发布于 2026-01-06 1 阅读
0

你的系统真的需要 Docker 或 Kubernetes 吗?AWS 安全直播!

你的系统真的需要 Docker 或 Kubernetes 吗?

AWS 安全直播!

抽象的

从几年前开始,Docker 就为我们提供了一个非常强大的生态系统,它使你的代码几乎可以在任何地方运行,并将基本组件压缩到一个最小化的单元中,就像一个物理“容器”一样。

至于 Kubernetes,它提供了一个非常全面的平台,不仅用于与基于 Docker 创建的容器化系统集成的操作系统环境,还用于日志记录、监控等等。

此外,DevOps 和 SRE 的概念对于理解如何在现代互联网世界中运行系统以持续反映业务需求和更新至关重要。

但这里有个问题。你的系统环境中真的需要 Docker 及其生态系统,或者 Kubernetes 吗?

是的,我问的是你,不是其他人。当你决定在系统中使用哪种技术时,你必须明白它为什么重要以及如何重要。

以下是我对容器使用的一些想法,关于哪些该用,哪些不该用。如果您有其他意见,欢迎在评论区留言 :)

1. Docker 本身并不“适用于生产环境”。

首先,Docker 在很多方面都是一个很棒的平台。但它也带来了很多痛点,尤其是在网络、监控和日志记录方面。
这主要是因为 Docker 最初是为了处理应用程序执行环境而创建的,正如上文所述,而 dotCloud 则像 Heroku 一样是一个 PaaS 平台。

将单个容器作为一项服务进行管理非常容易,但你实际上并不会将其用作一个完整的平台。你需要一个(或多个)Web 服务器、一个数据库服务器、一个应用服务器,可能还需要 Memcached/RabbitMQ 等服务。

将这些功能与 Docker 本身结合起来并不难,但是你无法实现集群、自愈、复制等功能,因为这些功能并非 Docker 原生提供,而大多数情况下系统平台都需要这些功能。

2. Kubernetes 对于一个普通的 Web 应用程序来说功能过于强大了

我在上一节提到过,Docker 对于生产平台来说功能不足。Kubernetes 和 Docker Swarm 可以解决很多这类问题。
它们都具备集群、扩展和网络功能。Kubernetes 的功能更多,看起来也更强大。没错,它的确如此。但实际上,对于单个 Web 应用来说,它的功能过于繁杂。你使用的 Kubernetes 功能越多,系统就越复杂。我见过很多人抱怨:“我原本只是想巧妙地编排容器系统,结果现在每天都要维护 Kubernetes 集群、主节点和 etcd。” 它的架构设计很适合复杂的系统,并且能够保证系统的可用性。但你真的需要这么复杂的系统吗?我的答案是:不需要。(当然,这真的要视情况而定!)

Kubernetes 上有很多产品,例如 Rancher 和 OpenShift,但对我来说,它们都无法降低 Kubernetes 各项“功能”的运维成本。(无意冒犯,它们也都是非常优秀的工具!)

3. Docker Swarm 很好,但是……

好吧,告诉我我错了。说实话,我没怎么用过Swarm。

总之,Kubernetes 目前来说过于庞大,Docker Swarm 更轻量级,看起来更适合处理小型应用程序。而且它的性能实际上也比 Kubernetes 快得多!

让我停下来思考的原因是,我一开始想用容器编排工具来处理一些简单的操作。虽然很多云服务商都支持 Kubernetes,但 Docker Swarm 却不支持。理论上他们曾经尝试过,但现在放弃了。
这很不方便,因为我个人并不想使用 EC2 或任何物理机来管理集群之类的东西。如果我能在 AWS 上轻松搭建 Swarm 集群……那简直太棒了!


哦,还有一点,我是日本人,很多人都希望企业解决方案支持日语,但据我所知,Swarm 目前还没有这项功能。

概括

总结起来很无聊。要清楚你正在使用什么。新东西固然很酷,但它们并不完美,你总是需要尝试比较哪些适合你,哪些不适合你 :)

文章来源:https://dev.to/inductor/do-you-really-need-docker-or-kubernetes-in-your-system-11nk