最近一段时间,微软在容器技术领域动作频频。微软开放技术公司先是于 6 月 9 日在 DockerCon 上宣布支持在 Microsoft Azure 虚拟机上部署 Docker,又在 7 月 10 日宣布与 Google 和 Docker 开展合作,将 Kubernetes 和 libswarm 引入 Azure。8 月 28 日,它兑现承诺,宣布开发者已经可以在 Azure 上使用 Kubernetes 管理 Docker 容器。
Kubernetes 是一个开源的、用 Go 语言开发的容器集群管理工具,其理念和架构体现了谷歌多年来设计和构建大规模集群管理系统的经验。它主要包含如下特性:
这些特性实现了复杂应用程序集群的部署和管理,但要做到这一点,还需要理解 Kubernetes 中引入的一些概念:
在宣布 Azure 支持 Kubernetes 的当天,微软开放科技还在 GitHub 上发布了 Kubernetes Visualizer 的源代码。这是一个用 Node.js 编写的 Web 应用程序,用于监控 Kubernetes 在 Azure 上管理 Docker 时的行为,将上述概念直观地展示出来,如下图所示:
在 Kubernetes Visualizer 中,用户输入名称和副本数量后,点击“创建”按钮就可以更新 JSON“Pod 模板”。该模板定义了与容器相关联的 Pod,每个容器中应该运行的镜像,以及为外界提供服务所需要的端口映射。由于 Visualizer 的目的是帮助理解 Kubernetes,所以用户可以点击“Pod 源代码”和“RC 源代码”对自动生成的 Pod 模板进行编辑。另外,Visualizer 会根据 Pod 标签中的名称为其设定颜色,每个名称不同的 Pod 都会有一个不同的颜色。
在摆弄 Kubernetes 和 Docker 的过程中,Azure 团队发现,Docker 会缓存 Pod 创建过程,从而加速容器重复创建。此外,他们还对集群进行了压力测试,发现 Kubernetes 一次可以很好地处理副本数量为 30 到 50 的创建请求,而且副本数量可以增加到 200。
要了解更多信息,可以观看该工具的演示视频,或者从 GitHub 上下载源代码并在自己的 Azure 集群上运行它。