了解 Azure 容器实例
不管什么方案(包括简单应用程序、任务自动化、生成作业),只要能够在隔离容器中操作,就可以使用 Azure 容器实例 (ACI) 这种解决方案。 部分优势如下:
- 快速启动:ACI 可以在 Azure 中以秒为单位启动容器,而无需创建和管理虚拟机(VM)
- 容器访问:ACI 允许使用 IP 地址和完全限定的域名 (FQDN) 将容器组直接公开到 Internet
- 虚拟机监控程序级别安全性:在 VM 中尽可能隔离应用程序
- 客户数据:ACI 服务存储确保容器组按预期运行所需的最少客户数据
- 自定义大小:ACI 允许确切地指定 CPU 核心数和内存量,因此可提供最佳的利用方式
- 持久存储:将 Azure 文件共享直接装载到一个用于检索和持久保存状态的容器
- Linux 和 Windows:使用同一 API 计划 Windows 和 Linux 容器。
对于需要完整容器业务流程(包括跨多个容器的服务发现、自动缩放和协调的应用程序升级)的方案,我们建议使用 Azure Kubernetes 服务(AKS)。
容器组
Azure 容器实例中的顶层资源是容器组。 容器组是安排在同一主机上的容器集合。 容器组中的容器共享生命周期、资源、本地网络和存储卷。 它在概念上类似于 Kubernetes 中的 Pod。
以下关系图显示了一个包含多个容器的容器组示例:
此示例容器组:
- 安排在一个主机上。
- 已分配 DNS 名称标签。
- 公开一个公共 IP 地址(只有一个公开端口)。
- 由两个容器组成。 其中一个容器侦听端口 80,另一个容器侦听端口 5000。
- 包含两个 Azure 文件共享作为卷装载,每个容器本地装载一个共享。
注意
多容器组目前仅支持 Linux 容器。 对于 Windows 容器,Azure 容器实例仅支持部署单个实例。
部署
部署多容器组有两种常用方法:使用资源管理器模板或 YAML 文件。 部署容器实例时,如果需要部署更多 Azure 服务资源,建议使用资源管理器模板。 由于 YAML 格式更简洁,因此,当部署仅包括容器实例时,建议使用 YAML 文件。
资源分配
Azure 容器实例通过添加组中实例的资源请求,将 CPU、内存和(可选)GPU(预览版)等资源分配到容器组。 如果创建一个包含两个实例的容器组,每个实例请求一个 CPU,则容器组将分配两个 CPU。
网络
容器组共享 IP 地址和该 IP 地址上的端口命名空间。 若要启用外部客户端来访问组内的容器,必须从该容器公开 IP 地址上的端口。 由于组中的容器共享一个端口命名空间,因此不支持端口映射。 组内的容器可以在公开它们的端口上通过 localhost 相互访问,即使这些端口未在组的 IP 地址上向外部公开。
存储
可以指定要在容器组内装载的外部卷。 可以将这些卷映射到组中单个容器内的特定路径。 支持的卷包括:
- Azure 文件共享
- 机密
- 空目录
- 克隆的 git 存储库
常见方案
如果想要将单个功能任务划分为多个容器映像,多容器组会很有用。 映像可能由不同的团队提供,并且具有单独的资源要求。
使用情况示例包括:
- 为 Web 应用程序提供服务的容器和从源控件拉取最新内容的容器。
- 应用程序容器和日志记录容器。 日志记录容器收集主要应用程序输出的日志和指标并将其写入长期存储。
- 应用程序容器和监视容器。 监视容器定期向应用程序发送请求,确保该应用程序正常运行和响应,并在应用程序出现异常时发出警报。
- 前端容器和后端容器。 前端可为 Web 应用程序提供服务,后端运行某个服务来检索数据。