Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
重要
如果将容器组部署到虚拟网络,则必须使用 NAT 网关进行出站连接。 这是虚拟网络中容器组中唯一支持的出站连接配置。 有关配置此功能的更多信息,请参阅为容器组中出站流量配置静态 IP 地址的 NAT 网关。
Azure 虚拟网络为 Azure 资源和本地资源提供安全的专用网络。 将容器组部署到 Azure 虚拟网络后,容器可与该虚拟网络中的其他资源安全通信。
本文提供有关虚拟网络方案、限制和资源的背景知识。 有关使用 Azure CLI 的部署示例,请参阅将容器实例部署到 Azure 虚拟网络。
重要
虚拟网络中的容器组部署通常适用于大多数同时可使用 Azure 容器实例的区域中的 Linux 容器。 有关详细信息,请参阅资源可用性和配额限制。
场景
部署到 Azure 虚拟网络的容器组可实现如下所述的方案:
- 在同一子网中的容器组之间直接通信。
- 将 基于任务的 工作负荷输出从容器实例发送到虚拟网络中的数据库。
- 从虚拟网络中的 服务终结点 检索容器实例的内容。
- 通过 VPN 网关 或 ExpressRoute 启用与本地资源的容器通信。
- 与 Azure 防火墙 集成,识别源自容器的出站流量。
- 通过内部 Azure DNS 解析名称,以便与虚拟网络中的 Azure 资源通信,例如虚拟机。
- 使用 NSG 规则控制对子网或其他网络资源的容器访问。
- 使用 Azure 容器实例(ACI)部署可缩放的容器化应用程序,并使用 Azure 标准负载均衡器跨多个容器组均匀分配传入流量。
不支持的网络场景
- 全球虚拟网络对等互连 - 不支持全球对等互连(跨 Azure 区域连接虚拟网络)
- 公共 IP 或 DNS 标签 - 部署到虚拟网络的容器组目前不支持使用公共 IP 地址或完全限定的域名直接向 Internet 公开容器
- 由世纪互联区域运营的 Azure 中具有虚拟网络的托管标识 - 由世纪互联区域运营的 Azure 不支持具有虚拟网络功能的托管标识
其他限制
- 若要将容器组部署到某个子网,该子网不能包含其他资源类型。 将容器组部署到现有子网之前,请从该子网中删除所有现有资源,或创建新的子网。
- 若要将容器组部署到子网,子网和容器组必须位于同一 Azure 订阅中。
- 由于涉及到其他网络资源,部署到虚拟网络通常比部署标准容器实例要慢。
- 目前不支持到端口 25 和 19390 的出站连接。 在虚拟网络中部署容器组时,需要在防火墙中打开端口 19390,以便从 Azure 门户连接到 ACI。
- 对于入站连接,防火墙还应允许虚拟网络中的所有 IP 地址。
- 如果要将容器组连接到 Azure 存储帐户,则必须向该资源添加服务终结点。
- 目前不支持 IPv6 地址。
- 根据订阅类型,可能会阻止某些端口。
- 容器实例不会从关联的虚拟网络读取或继承 DNS 设置。 必须为容器实例显式设置 DNS 设置。
将容器组部署到虚拟网络
将容器组部署到虚拟网络需要三个 Azure 虚拟网络资源:虚拟网络本身、虚拟网络中委托的子网,以及网络配置文件。
虚拟网络
虚拟网络定义要在其中创建一个或多个子网的地址空间。 然后,可将 Azure 资源(例如容器组)部署到虚拟网络中的子网。
子网(委派)
子网将虚拟网络分割成可供 Azure 资源使用的独立地址空间。 在一个虚拟网络中创建一个或多个子网。
用于容器组的子网只能包含容器组。 在将容器组部署到子网之前,必须在预配之前明确授权该子网。 委托后,该子网只可用于容器组。 如果尝试将除容器组以外的资源部署到委派的子网,该操作将会失败。
外部连接性
NAT 网关应配置公共 IP,以便容器组的出站流量通过该公共 IP。 这还允许客户使用服务标记 IP 和/或具有适当的 NSG 规则。
使用以下 快速入门:创建 NAT 网关 以创建 NAT 网关。
网络配置
重要
自2021-07-01起,网络配置文件已停用。 如果使用的是此版本或更新版本,请忽略与网络配置文件相关的任何步骤和操作。
网络配置文件是 Azure 资源的网络配置模板。 它指定资源的某些网络属性,例如,该资源应部署到哪个子网。 首次使用 az container create 命令将容器组部署到某个子网(并因此部署到虚拟网络)时,Azure 会自动创建一个网络配置文件。 以后在部署到该子网时,可以使用该网络配置文件。
若要使用资源管理器模板、YAML 文件或编程方法将容器组部署到子网,则需要提供网络配置文件的完整资源管理器资源 ID。 可以使用以前使用 az container create 创建的配置文件,也可以使用资源管理器模板创建配置文件(请参阅模板示例和参考)。 若要获取以前创建的配置文件的 ID,请使用 az network profile list 命令。
下图描绘了多个容器组部署到委派给 Azure 容器实例的子网。 将一个容器组部署到某个子网后,可以通过指定相同的网络配置文件,将更多的容器组部署到该子网。
使用 Azure 标准负载均衡器部署容器组
客户可以使用 Azure 容器实例部署可缩放的容器化应用程序,并使用 Azure 标准负载均衡器跨多个容器组均匀分配传入流量。
重要
若要利用负载均衡功能,需要使用 ARM、 Bicep、 Terraform、 CLI 或 PowerShell 来设置 subnet.id/name。
先决条件
客户应根据工作负荷的要求,创建具有相应前端 IP 配置、运行状况探测、负载均衡规则和后端池的公共或内部负载均衡器。
示例:使用 Azure CLI 将 ACI 实例添加到后端池
az network lb address-pool update -g MyResourceGroup --lb-name MyLb -n MyAddressPool --vnet MyVnetResource --backend-addresses "[{name:ACI-Instance1,ip-address:10.0.0.5,subnet:subnetName},{name:ACI-Instance2,ip-address:10.0.0.6,subnet:subnetName},{name:ACI-Instance3,ip-address:10.0.0.7,subnet:subnetName}]"
示例:使用 PowerShell 将 ACI 实例添加到后端池
$vnetName = "vnetname"
$subnetName = "ACI subnet name"
$resourceGroup = "rg name"
$loadBalancerName = "LB Name"
$virtualNetwork = Get-AzVirtualNetwork -Name $vnetName -ResourceGroupName $resourceGroup
$subnet = Get-AzVirtualNetworkSubnetConfig -Name $subnetName -VirtualNetwork $virtualNetwork
$loadBalancer = Get-AzLoadBalancer -ResourceGroupName $resourceGroup -Name $loadBalancerName
$ip1 = New-AzLoadBalancerBackendAddressConfig -IpAddress "10.0.0.5" -Name "ACI-Instance1" -SubnetId $subnet.Id
$ip2 = New-AzLoadBalancerBackendAddressConfig -IpAddress "10.0.0.6" -Name "ACI-Instance2" -SubnetId $subnet.Id
$ip3 = New-AzLoadBalancerBackendAddressConfig -IpAddress "10.0.0.7" -Name "ACI-Instance3" -SubnetId $subnet.Id
$backendPool = $loadBalancer.BackendAddressPools[0]
$backendPool.LoadBalancerBackendAddresses.Add($ip1)
$backendPool.LoadBalancerBackendAddresses.Add($ip2)
$backendPool.LoadBalancerBackendAddresses.Add($ip3)
Set-AzLoadBalancerBackendAddressPool -InputObject $backendPool
后续步骤
- 有关使用 Azure CLI 的部署示例,请参阅将容器实例部署到 Azure 虚拟网络。
- 若要使用资源管理器模板部署新的虚拟网络、子网、网络配置文件和容器组,请参阅使用虚拟网络创建 Azure 容器组。
- 使用 Azure 门户创建容器实例时,还可以在“网络”选项卡上为新的或现有的虚拟网络提供设置。