Azure 容器实例:Microsoft 容器创新的有力证明

 李加庆 译 分布式实验室 

Azure 容器实例: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(https://github.com/brendandburns)纳入麾下,他是前 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 并不局限于一组预定义的语言和运行时。


Azure 容器实例:Microsoft 容器创新的有力证明



携带自有容器的理念近来深入人心。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 中作为计算层提供服务。


原文链接:https://thenewstack.io/azure-container-instances-proof-microsoft-innovating-containers/


上一篇:【Azure 环境】在Azure虚拟机(经典) 的资源中,使用SDK导出VM列表的办法


下一篇:Azure Digital Twins(2)- 在本地使用ADT Explorer 管理数字孪生