虚拟网络方案和资源

Azure 虚拟网络为 Azure 资源和本地资源提供安全的专用网络。 将容器组部署到 Azure 虚拟网络后,容器可与该虚拟网络中的其他资源安全通信。

本文提供有关虚拟网络方案、限制和资源的背景知识。 有关使用 Azure CLI 的部署示例,请参阅将容器实例部署到 Azure 虚拟网络

重要

虚拟网络中的容器组部署通常适用于大多数同时可使用 Azure 容器实例的区域中的 Linux 容器。 有关详细信息,请参阅资源可用性和配额限制

方案

部署到 Azure 虚拟网络的容器组可实现如下所述的方案:

  • 在同一子网中的容器组之间直接通信
  • 将容器实例的基于任务的工作负荷输出发送到虚拟网络中的数据库
  • 从虚拟网络中的服务终结点检索容器实例的内容
  • 通过 VPN 网关ExpressRoute 实现容器与本地资源的通信
  • Azure 防火墙集成,以确定源自容器的出站流量
  • 通过内部 Azure DNS 解析名称,以便与虚拟网络中的 Azure 资源(例如虚拟机)通信
  • 使用 NSG 规则控制容器对子网或其他网络资源的访问

不支持的网络方案

  • Azure 负载均衡器 - 不支持在网络容器组中将 Azure 负载均衡器置于容器实例之前
  • 全球虚拟网络对等互连 - 不支持全球对等互连(跨 Azure 区域连接虚拟网络)
  • 公共 IP 或 DNS 标签 - 部署到虚拟网络的容器组目前不支持使用公共 IP 地址或完全限定的域名直接向 Internet 公开容器
  • 由世纪互联运营的 Azure 中带有虚拟网络的托管标识 - 世纪互联运营的 Azure 区域不支持带有虚拟网络的托管标识功能

其他限制

  • 若要将容器组部署到某个子网,该子网不能包含其他资源类型。 将容器组部署到现有子网之前,请从该子网中删除所有现有资源,或创建新的子网。
  • 若要将容器组部署到子网,子网和容器组必须位于同一 Azure 订阅中。
  • 不能在部署到虚拟网络的容器组中启用运行情况探测就绪情况探测
  • 由于涉及到其他网络资源,部署到虚拟网络通常比部署标准容器实例要慢。
  • 目前不支持到端口 25 和 19390 的出站连接。 在虚拟网络中部署容器组时,需要在防火墙中打开端口 19390,以便从 Azure 门户连接到 ACI。
  • 对于入站连接,防火墙还应允许虚拟网络中的所有 IP 地址。
  • 如果要将容器组连接到 Azure 存储帐户,则必须向该资源添加服务终结点
  • 目前不支持 IPv6 地址
  • 根据订阅类型,可能会阻止某些端口

所需的网络资源

将容器组部署到虚拟网络需要三个 Azure 虚拟网络资源:虚拟网络本身、虚拟网络中委托的子网,以及网络配置文件

虚拟网络

虚拟网络定义要在其中创建一个或多个子网的地址空间。 然后,可将 Azure 资源(例如容器组)部署到虚拟网络中的子网。

子网(委托)

子网将部署资源的虚拟网络分段成可由 Azure 资源使用的独立地址空间。 在一个虚拟网络中创建一个或多个子网。

用于容器组的子网只能包含容器组。 首次将容器组部署到某个子网时,Azure 会将该子网委托给 Azure 容器实例。 委托后,该子网只可用于容器组。 如果尝试将除容器组以外的资源部署到委派的子网,该操作将会失败。

网络配置文件

重要

2021-07-01 API 版本起,网络配置文件已停用。 如果使用的是此版本或更新版本,请忽略与网络配置文件相关的任何步骤和操作。

网络配置文件是 Azure 资源的网络配置模板。 它指定资源的某些网络属性,例如,该资源应部署到哪个子网。 首次使用 az container create 命令将容器组部署到某个子网(并因此部署到虚拟网络)时,Azure 会自动创建一个网络配置文件。 以后在部署到该子网时,可以使用该网络配置文件。

若要使用资源管理器模板、YAML 文件或编程方法将容器组部署到子网,则需要提供网络配置文件的完整资源管理器资源 ID。 可以使用以前使用 az container create 创建的配置文件,也可以使用资源管理器模板创建配置文件(请参阅模板示例参考)。 若要获取以前创建的配置文件的 ID,请使用 az network profile list 命令。

在下图中,有多个容器组已部署到委派给 Azure 容器实例的子网。 将一个容器组部署到某个子网后,可以通过指定相同的网络配置文件,将其他容器组部署到该子网。

虚拟网络中的容器组

后续步骤