本文讲的是Azure 容器实例:Microsoft 容器创新的有力证明【编者的话】本文主要介绍了 Microsoft 在容器技术浪潮中所作出的创新与努力以及所取得的成果。
与其他企业级基础设施供应商相比,面对容器技术带来的挑战,Microsoft 处于一个比较微妙的位置。Microsoft 已经在受到容器应用增长冲击的系统中取得了很多既得利益,其中包括操作系统(Windows Server),虚拟机管理程序(Hyper-V),私有云产品(Azure Stack)和 公有云(Azure)。
对于平台型公司,容器技术既是挑战又是机遇。每一个提供基础设施服务的玩家对容器化浪潮的反应不尽相同,虽然 VMware 在竞争中起步较早,但 Google、Microsoft 和 Red Hat 在拥抱新一轮的计算浪潮时反应迅速。Google 专注于容器管理,开源了 Kubernetes 容器编排引擎,并在其公有云中提供了 Kubernetes 的托管版本。Red Hat 意识到,作为传统的 PaaS,OpenShift 并未表现出强劲的势头。所以 Red Hat 做出了巨大改变,包括品牌和底层的技术栈,从而转向 Kubernetes。
微软迅速与 Docker 公司达成协议,使其成为Windows 容器的默认接口,并努力确保容器是整个堆栈不可或缺的部分,反映出其新的文化特点。 Windows 容器、Hyper-V 容器、Windows Server 2016 中集成 Docker 引擎,Azure 容器服务、Visual Studio Tools for Docker、容器优化的 Windows Nano 服务器、Azure 中的嵌套虚拟化等功能都表明了 Microsoft 正在全力以赴将容器化作为一等公民。
到目前为止,微软的一项战略举措是将 Brendan Burns 纳入麾下,他是前 Google 员工,隶属于 Kubernetes 创始团队。这次招聘引起了不小的轰动,包括 Azure 的主要竞争对手 -- 构建 Google 云平台的团队。但是,由于 Brendan 与 Kubernetes 的合作,这个开源项目在社区中获得了巨大的普及,所以并未引起太多不满。包括谷歌员工在内的 Kubernetes 社区希望看到微软正式拥抱 Kubernetes。微软并没有让我们失望,在 Brendan 过渡到 Azure Compute 团队的几个月内,Redmond 在 Azure 上开放了Kubernetes。这几乎打破了 AWS 的垄断,AWS 构建了专有的容器管理平台,基于 EC2 的 亚马逊 EC2 容器服务。
Brendan 的主要可交付成果包括 Windows 与 Kubernetes 的集成,对微软用户来说这是一件极其重大的事。通过 Kubernetes 的管理,用户将能够无缝地混合和匹配 Linux 和 Windows 工作负载。这种异构环境将运行包含 Linux 和 Windows 节点的 Kubernetes 集群。但 Windows 的基础网络堆栈对此次集成增加了不小的难度,解决这个挑战的过程应该非常有趣。Brendan 除了将 Kubernetes 带到了 Azure,他也在忙于解决微软的整体容器化战略。
最新发布的 Azure 容器实例(ACI)是微软的一个重要举措,ACI 中有很多 Brendan 的印记。ACI 允许开发人员启动 “无服务容器”,而无需关心充当宿主机的虚拟机和操作系统。只需两步,开发人员就可以在 Azure 中启动一个容器。尽管有容器优化的操作系统,如 CoreOS,Atomic Hosts 和 Windows Nano Server,但在运行容器前,它们被当做虚拟机使用。
使用 ACI,开发人员在运行应用程序时无需担心 VM 或 宿主机操作系统。这是微软将 ACI 定位为“无服务容器”的主要原因。在 ACI 中无法通过 SSH 或 RDP 连接到主机。工作流程很简单 - 从 registry 中拉取一个容器,按需运行即可。
ACI 的定价模式与无服务理念相一致。每个配置的容器实例每月收取 $ 0.0025
。内存持续时间是通过容器的起止时间计算而来,RAM 的收费是 $0.0000125/G
。从容器创建时起,每个 CPU 需要支付 $0.0000125
的费用。每个 ACI 实例最多可以有最大 3.5GB 的 RAM 和 4个 CPU。例如,如果每天启动一个具有 1GB RAM 和 1个CPU 的 ACI 实例5分钟,则帐单将转换为0.30美元,这是非常实惠的。
在许多方面,ACI 是微软对 AWS Lambda 的回击。虽然 Azure Function 是与 Lambda 类似的替代方案,但 Microsoft 将其作为对竞争对手的无服务产品的快速响应。Azure Function 是对 Azure WebJobs 的改进,Azure WebJobs 是为类似但不同的用例创建的服务。ACI 是一种优雅的无服务计算,因为它允许开发人员以 Docker 镜像的形式携带代码加配置。与 Lambda 不同,ACI 并不局限于一组预定义的语言和运行时。
携带自有容器
携带自有容器的理念近来深入人心。Google 通过 App Engine 灵活的环境将托管虚拟机添加到其 PaaS。Amazon 支持 AWS Beanstalk 中的单容器和多容器部署。但是 Azure 容器实例为原生容器应用带来了真正的无服务功能。开发人员可以在 Docker 容器镜像中封装从代码到配置的所有内容,并对其进行定期执行。其中包括运行配置管理脚本,备份任务,自动化构建,队列处理以及更多任务。
ACI 并不是成熟容器编排平台诸如 Docker Swarm,Mesosphere DC / OS,HashiCorp Nomad 和 Kubernetes 的替代品。如果要运行复杂的微服务应用程序,需要高级功能如持久性、服务发现、canary、自动扩容、自我修复、监控和日志记录等功能,Azure 容器服务是最好的选择。将 ACI 视为增强的、支持容器的无服务平台。与其压缩代码和上传代码片段到 AWS Lambda 或 Azure Function,你可以利用 Docker 的调试工具,上线之前在本地测试代码。
ACI 表明微软非常重视容器技术,而且它的创新速度比竞争对手要快。这项技术将成为 Azure Compute 平台的关键支柱之一。我非常确定 ACI 将在微软的 Edge 计算平台 -- Azure IoT Edge 中占有一席之地。它也将最终在 Azure Stack 中作为计算层提供服务。
原文链接:Azure Container Instances: Proof Microsoft Is Innovating with Containers(翻译:李加庆)
原文发布时间为:2017-09-13
本文作者:李加庆)
原文标题:Azure 容器实例:Microsoft 容器创新的有力证明