你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure CLI 管理工作负载配置文件

了解如何使用 Azure CLI 管理容器应用环境中的工作负荷配置文件。

在配置文件中创建容器应用

默认情况下,容器应用环境是使用自动生成的托管虚拟网络创建的。 生成的虚拟网络无法访问,因为它们是在Microsoft租户中创建的。

或者,可以使用 自定义虚拟网络创建环境。 如果需要以下任何功能,请使用此选项:

  • 用户定义路由
  • 与应用程序网关集成
  • 网络安全组
  • 与虚拟网络中专用终结点后面的资源通信
  1. 创建容器应用环境。

    az containerapp env create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<NAME>" \
      --location "<LOCATION>"
    

    完成此命令最多需要 10 分钟。

  2. 检查环境的状态。 以下命令报告是否已成功创建环境。

    az containerapp env show \
      --name "<ENVIRONMENT_NAME>" \
      --resource-group "<RESOURCE_GROUP>"
    

    在你继续执行下一条命令之前,provisioningState 需要报告 Succeeded

  3. 创建新容器应用。

    az containerapp create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<CONTAINER_APP_NAME>" \
      --target-port 80 \
      --ingress external \
      --image mcr.microsoft.com/k8se/quickstart:latest \
      --environment "<ENVIRONMENT_NAME>" \
      --workload-profile-name "Consumption"
    

此命令将应用程序部署到内置的消耗工作负载配置文件。 如果要在专用配置文件中创建应用,首先需要将配置文件添加到环境

此命令使用特定的工作负载配置文件在环境中创建新应用程序。

使用自定义虚拟网络创建环境时,可以完全控制虚拟网络配置。 此控件提供实现以下功能的选项:

  • 用户定义路由
  • 与应用程序网关集成
  • 网络安全组
  • 与虚拟网络中专用终结点后面的资源通信

使用以下命令创建容器应用环境。

  1. 创建虚拟网络。

    az network vnet create \
      --address-prefixes 13.0.0.0/23 \
      --resource-group "<RESOURCE_GROUP>" \
      --location "<LOCATION>" \
      --name "<VNET_NAME>"
    
  2. 创建委托给 Microsoft.App/environments 的子网。

    az network vnet subnet create \
      --address-prefixes 13.0.0.0/23 \
      --delegations Microsoft.App/environments \
      --name "<SUBNET_NAME>" \
      --resource-group "<RESOURCE_GROUP>" \
      --vnet-name "<VNET_NAME>" \
      --query "id"
    

    复制 ID 值并将其粘贴到下一个命令中。

    需要进行 Microsoft.App/environments 委派,使容器应用运行时能够获得对虚拟网络所需的控制权限,以便在容器应用环境中运行工作负载配置文件。

    可以为子网指定小至 /27 CIDR(保留 32 个 IP-8)。 如果要指定 /27 CIDR,请考虑以下事项:

    • 为容器应用基础结构保留 11 个 IP 地址。 因此,/27 CIDR 最多具有 21 个可用的 IP 地址。

    • 仅消耗计划和专用计划的 IP 地址分配方式不同:

      仅消耗 专属
      每个副本都需要一个 IP。 用户应用的所有应用副本数不能超过 21 个。 零停机部署需要双倍的 IP,因为旧版本会一直运行,直到新版本成功部署。 每个实例(VM 节点)都需要一个 IP。 你可以在所有工作负载配置文件中拥有最多 21 个实例,并在这些工作负载配置文件上运行数百个或更多副本。
  3. 创建容器应用环境。

    注意

    可以配置容器应用是允许公共入口,还是仅允许在环境级别从虚拟网络内部传入。 若要将入口限制为仅虚拟网络,请设置 --internal-only 标志。

    az containerapp env create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<NAME>" \
      --location "<LOCATION>"
    

    完成此命令最多需要 10 分钟。

  4. 检查环境的状态。 以下命令报告是否已成功创建环境。

    az containerapp env show \
      --name "<ENVIRONMENT_NAME>" \
      --resource-group "<RESOURCE_GROUP>"
    

    在继续执行下一条命令之前,provisioningState 需要报告 Succeeded

  5. 创建新容器应用。

    az containerapp create \
      --resource-group "<RESOURCE_GROUP>" \
      --name "<CONTAINER_APP_NAME>" \
      --target-port 80 \
      --ingress external \
      --image mcr.microsoft.com/k8se/quickstart:latest \
      --environment "<ENVIRONMENT_NAME>" \
      --workload-profile-name "Consumption"
    

此命令将应用程序部署到内置的消耗工作负载配置文件。 如果要在专用配置文件中创建应用,首先需要将配置文件添加到环境

此命令使用特定的工作负载配置文件在环境中创建新应用程序。

添加配置文件

将新的工作负载配置文件添加到现有环境。 您需要指定工作配置文件类型,如本节所述。

az containerapp env workload-profile add \
  --resource-group <RESOURCE_GROUP> \
  --name <ENVIRONMENT_NAME> \
  --workload-profile-type <WORKLOAD_PROFILE_TYPE> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> \
  --min-nodes <MIN_NODES> \
  --max-nodes <MAX_NODES>

选择要添加的工作负荷配置文件时,请确认该配置文件在所在区域可用。 为 <WORKLOAD_PROFILE_NAME> 占位符选择的值是工作负载配置文件易记名称

使用易记名称可将同一类型的多个配置文件添加到环境中。 易记名称是在工作负载配置文件中部署和维护容器应用时使用的名称。

工作配置文件类型特定于区域,而不是单个全局硬编码列表。 预期发现路径为: az containerapp env workload-profile list-supported -l <REGION>。 该实现从 ARM 模板端点解析出该位置可用的工作负载配置文件类型的受支持值。

使用此命令查看区域的有效工作负荷配置文件类型:

az containerapp env workload-profile list-supported -l <REGION>

将返回值之一用于 --workload-profile-type。 例如,可以在该类型可用的区域中使用 D4

请记住以下行为:

  • 该命令会在发送前将 type 值转换为大写。
  • 如果省略 --workload-profile-name,该命令会将配置文件名称默认为类型值。
  • 添加或更新工作负荷配置文件仅适用于支持工作负荷配置文件的环境。

编辑配置文件

可以使用命令修改工作负荷配置文件 update 使用的最小和最大节点数。

az containerapp env workload-profile update \
  --resource-group <RESOURCE_GROUP> \
  --name <ENV_NAME> \
  --workload-profile-type <WORKLOAD_PROFILE_TYPE> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> \
  --min-nodes <MIN_NODES> \
  --max-nodes <MAX_NODES>

删除配置文件

可使用以下命令删除工作负载配置文件。

az containerapp env workload-profile delete \
  --resource-group "<RESOURCE_GROUP>" \
  --name <ENVIRONMENT_NAME> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> 

注意

无法删除消耗工作负荷配置文件。

检查配置文件

以下命令允许列出区域中的可用配置文件和特定环境中使用的配置文件。

列出可用的工作负载配置文件

使用 list-supported 命令列出区域支持的工作负载配置文件。

以下 Azure CLI 命令在表中显示结果。

az containerapp env workload-profile list-supported \
  --location <LOCATION>  \
  --query "[].{Name: name, Cores: properties.cores, MemoryGiB: properties.memoryGiB, Category: properties.category}" \
  -o table

响应类似于类似于以下示例的表:

Name                       Cores    MemoryGiB    Category
-------------------------  -------  -----------  --------------------
D4                         4        16           GeneralPurpose
D8                         8        32           GeneralPurpose
D16                        16       64           GeneralPurpose
D32                        32       128          GeneralPurpose
E4                         4        32           MemoryOptimized
E8                         8        64           MemoryOptimized
E16                        16       128          MemoryOptimized
E32                        32       256          MemoryOptimized
Consumption                4        8            Consumption
Consumption-GPU-NC24-A100  24       220          Consumption-GPU-A100
Consumption-GPU-NC8as-T4   8        56           Consumption-GPU-T4
Flex                       4        16           Consumption
NC24-A100                  24       220          GPU-NC-A100
NC48-A100                  48       440          GPU-NC-A100
NC96-A100                  96       880          GPU-NC-A100

使用az containerapp env workload-profile addaz containerapp env workload-profile update命令为--workload-profile-type选项添加或更新工作负载配置文件时,选择一个工作负载配置文件并使用名称字段。

显示工作负载配置文件

显示有关工作负载配置文件的详细信息。

az containerapp env workload-profile show \
  --resource-group <RESOURCE_GROUP> \
  --name <ENVIRONMENT_NAME> \
  --workload-profile-name <WORKLOAD_PROFILE_NAME> 

后续步骤