已经有一段时间了,我想花点时间坐下来写写关于Kubernetes 的文章。时机已到。
简而言之,Kubernetes是一个用于自动化和管理容器化应用程序的开源系统。Kubernetes 就是关于容器的。
❗如果你对什么是容器不太了解,请先参考我的Docker 101 系列,然后再回来看这一篇。因此,您将为理解 Kubernetes 做好更充分的准备。
免责声明说,让我们看看这个“K8s 东西”试图解决的问题。
📦 容器管理
假设我们有一个复杂的系统,由以下部分组成:
用 Ruby 编写的后台
运行 PostgreSQL 的各种数据库
一个Java写的报表系统
用 Erlang 编写的聊天应用程序
用 NodeJS 编写的前台
好吧,这个架构相当异构,但它服务于本文的目的。此外,我们在容器中运行所有内容:
![](https://i-blog.csdnimg.cn/blog_migrate/0c4794fe45c52f202a8bcbd1a10b66e9.png)
假设我们必须确保“Frontoffice”应用程序的最大可用性和可伸缩性,因为最终用户使用的是该应用程序。这里,系统至少需要运行 2 个 Frontoffice 容器:
![](https://i-blog.csdnimg.cn/blog_migrate/6a8da91aa7e6dcedbda6b777684e5eb2.png)
此外,还有一个功能需求是聊天应用不能长时间宕机,万一宕机,我们要确保它重新启动,具有自愈能力:
![](https://i-blog.csdnimg.cn/blog_migrate/e624a74a1d250d496c5e874f4840cc4e.png)
现在想想我们有几十个甚至数百个容器的架构: