什么是 Microsoft Azure 中的容器组?

17 Mar 2025 | 4 分钟阅读

在 Microsoft Azure 中,一组在同一台主机上运行的容器被称为容器组。容器组的生命周期、资源、本地网络和存储卷由组中的容器共享。从概念上讲,它类似于 Kubernetes pod。

下图显示了包含多个容器的容器组的示例。

What is a container group In Microsoft Azure

上面的容器组示例具有 -

  • 它仅在单个主机系统上运行。
  • 附加了 DNS 名称标签。
  • 只有一个公共 IP 地址和一个易受攻击的端口被暴露。
  • 它由两个容器组成。

注意 Azure 容器实例仅支持部署 Windows 容器的单个容器实例。虽然我们致力于为 Windows 容器提供所有功能,但服务概述解释了现有的平台差异。目前,根据微软的消息,多容器组仅支持 Linux 容器,我们可能很快会收到相关更新。

资源管理器部署

资源管理器模板或 YAML 文件是部署多容器组的两种常用方法。例如,如果我们部署 Azure 文件实例,如果我们需要在部署容器实例时部署额外的 Azure 服务资源,则通常建议使用资源管理器模板。

当我们的部署仅包含容器实例时,由于其更简洁的特性,YAML 文件更可取。

我们可以使用 Azure CLI 命令 az container export 将容器组的配置导出到 YAML 文件,以保留配置。

资源分配

通过添加组中实例的资源需求,Azure 容器实例为多容器组提供 CPU、RAM 和可能 GPU(预览版)等资源。例如,如果我们构建一个包含两个容器实例的容器组,每个实例请求一个 CPU,则该容器组将获得两个 CPU。

注意 我们的容器将能够访问该组的大部分资源,但并非全部资源。因此,在为组中的容器请求资源时,请记住一个适度的资源缓冲区。

最小和最大分配

  • 为每个容器组分配至少一个 CPU 和一个 GB 的内存。在一个组中,可以为各个容器实例提供少于一个 CPU 和一个 GB 的内存。
  • 为了检查容器组中最大资源的部署区域,必须检查 Azure 容器实例的资源可用性。

容器组中的存储

我们可以在容器组中挂载外部甚至内部卷。支持的卷如下 -

  • 空目录
  • 容器组中克隆的 git 存储库
  • 密钥
  • 文件共享

在组中的各个容器中,我们可以将这些卷映射到指定的路径。

常见场景

当我们必须将单个功能任务分解为有限数量的容器图片时,多容器组会派上用场。然后,这些照片可以由多个团队交付,每个团队都有自己的资源集。

用法示例可能包括

  • 监视容器定期向应用程序发送请求,以确认它正在运行并正确响应,如果不是,它会生成警报。
  • 有两个容器,其中一个用于前端,另一个用于后端。前端可能提供 Web 应用程序,而后端可能托管数据检索服务。

Azure 虚拟网络允许我们以安全和私密的方式连接我们的 Azure 和本地资源。

注意 如果我们的容器组分配了 IP 地址,则该 IP 地址可能会在容器组重新启动时发生更改。

虚拟网络

一个或多个子网创建的地方是虚拟网络中的地址空间。然后将 Azure 资源(例如容器组)部署到虚拟网络的子网中。

子网(已委派)

子网将虚拟网络划分为不同的地址空间,放置在其中的 Azure 资源可以访问这些地址空间。在虚拟网络中,我们可以构建一个或多个子网。

我们使用可以用于容器组的唯一容器组,它可能位于子网上。当我们将容器组首次部署到子网时,Azure 会将子网委派给 Azure 容器实例。子网一旦被委派就只能用于容器组。如果我们尝试将容器组部署到已委派的子网,则该过程将自动失败。

容器组的网络配置文件

Microsoft 的 Azure 资源的网络配置模板是网络配置文件。此网络配置文件提供了资源的网络属性,例如应将其部署到的子网。如果我们将要将容器组部署到子网,然后部署到虚拟网络,则 Azure 会在使用 az container create 命令时为我们生成一个网络配置文件。

然后,我们可以在将来使用该网络配置文件部署到子网。

我们可以利用使用 az container build 生成的现有配置文件,或者从 Resource Manager 模板(请参阅模板示例和参考)从头开始。使用 az network profile list 命令获取先前生成的配置文件的 ID。

在我们将一个容器组部署到子网后,我们可以使用相同的网络配置文件将其他容器组部署到该子网。