最近一段时间,微软在容器技术领域动作频频。微软开放技术公司先是于 6 月 9 日在 DockerCon 上宣布支持在Microsoft Azure 虚拟机上部署Docker,又在7 月10 日宣布与Google 和Docker 开展合作,将 Kubernetes 和 libswarm 引入 Azure。8 月 28 日,它兑现承诺,宣布开发者已经可以在Azure 上使用Kubernetes 管理Docker 容器。
Kubernetes 是一个开源的、用 Go 语言开发的容器集群管理工具,其理念和架构体现了谷歌多年来设计和构建大规模集群管理系统的经验。它主要包含如下特性:
- 创建容器,然后发布到 Azure 存储
- 使用 Azure 存储或者 DockerHub 上的容器镜像部署 Azure 集群
- 配置 Azure 集群
- 在现有集群上更新 Kubernetes 应用程序
- 取消 Azure 集群部署
这些特性实现了复杂应用程序集群的部署和管理,但要做到这一点,还需要理解 Kubernetes 中引入的一些概念:
- 容器:一个可移植的轻量级运行时环境。
- Master:管理一个或多个 Minion,提供应用程序的整体视图。
- Minion:一台虚拟机,用于运行 Docker 容器及终端用户工作负载。一个 Minion 运行一个或多个 Pod。
- Pod:运行在单个 Minion 上的一个单独的应用程序或一个应用程序的一部分。
- 标签:Pod 用标签进行组织。每个 Pod 具备一个 key/value 键值映射的标签。
- 复制控制器:管理失败和扩展,确保数据中心在任何时间都可以提供一定数量的 Pod 部署。
在宣布 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 集群上运行它。
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论