使用 Azure 容器应用创建作业

使用 Azure 容器应用作业可以运行容器化任务,这些任务会在有限的时间内执行并退出。 可以手动触发作业、计划作业的执行,或根据事件触发作业的执行。

作业最适合用于数据处理、资源清理机器学习等任务或任何需要按需处理的方案。

在本快速入门中,你将创建手动作业或计划作业。 若要了解如何创建事件驱动的作业,请参阅使用 Azure 容器应用部署事件驱动的作业

先决条件

设置

  1. 若要从 CLI 登录到 Azure,请运行以下命令,然后按照提示完成身份验证过程。

    az cloud set -n AzureChinaCloud
    az login
    # az cloud set -n AzureCloud   //means return to Public Azure.
    
  2. 确保通过升级命令运行最新版本的 CLI。

    az upgrade
    
  3. 安装最新版 Azure 容器应用 CLI 扩展。

    az extension add --name containerapp --upgrade
    
  4. 如果尚未在 Azure 订阅中注册 Microsoft.AppMicrosoft.OperationalInsightsMicrosoft.Storage 命名空间,请进行注册。

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    az provider register --namespace Microsoft.Storage
    
  5. 完成 Azure CLI 安装后,接下来可以定义要在本文中使用的环境变量。

    $RESOURCE_GROUP="jobs-quickstart"
    $LOCATION="chinanorth3"
    $ENVIRONMENT="env-jobs-quickstart"
    $JOB_NAME="my-job"
    

创建容器应用环境

Azure 容器应用环境充当容器应用和作业周围的安全边界,因此容器应用和作业可以共享同一网络并相互通信。

  1. 使用以下命令创建资源组。

    az group create --name $RESOURCE_GROUP  --location $LOCATION
    
  2. 使用以下命令创建容器应用环境。

    az containerapp env create --name $ENVIRONMENT --resource-group $RESOURCE_GROUP --location $LOCATION
    

创建和运行手动作业

若要使用手动作业,首先请创建触发器类型为 Manual 的作业,然后启动执行。 可以启动同一个作业的多个执行,多个作业执行可以并发运行。

  1. 使用以下命令在容器应用环境中创建作业。

    az containerapp job create `
        --name $JOB_NAME --resource-group $RESOURCE_GROUP  --environment $ENVIRONMENT `
        --trigger-type "Manual" `
        --replica-timeout 1800   `
        --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" `
        --cpu "0.25" --memory "0.5Gi"
    

    手动作业不会自动执行。 必须启动作业的执行。

  2. 使用以下命令启动作业执行。

    az containerapp job start --name $JOB_NAME --resource-group $RESOURCE_GROUP
    

    该命令返回作业执行的详细信息,包括其名称。

创建和运行计划作业

若要使用计划作业,请创建触发器类型为 Schedule 的作业,以及用于定义计划的 cron 表达式。

使用以下命令在容器应用环境中创建一个每分钟启动一次的作业。

az containerapp job create `
--name $JOB_NAME --resource-group $RESOURCE_GROUP  --environment $ENVIRONMENT `
    --trigger-type "Schedule" `
    --replica-timeout 1800  `
    --image "mcr.microsoft.com/k8se/quickstart-jobs:latest" `
    --cpu "0.25" --memory "0.5Gi" `
    --cron-expression "*/1 * * * *"

作业执行根据计划自动启动。

容器应用作业使用 cron 表达式来定义计划。 它支持标准 cron 表达式格式,其中包含分钟、小时、日、月和星期这五个字段。

列出最近的作业执行历史记录

容器应用作业保留最近执行的历史记录。 可以列出作业的执行。

az containerapp job execution list `
    --name $JOB_NAME `
    --resource-group $RESOURCE_GROUP `
    --output table `
    --query '[].{Status: properties.status, Name: name, StartTime: properties.startTime}'

计划作业的执行在运行时会显示在列表中。

Status     Name            StartTime
--------- --------------  -------------------------
Succeeded  my-job-jvsgub6  2023-05-08T21:21:45+00:00

查询作业执行日志

作业执行将日志输出到你为容器应用环境配置的日志记录提供程序。 默认情况下,日志存储在 Azure Log Analytics 中。

  1. 将容器应用环境的 Log Analytics 工作区 ID 保存到某个变量中。

    $LOG_ANALYTICS_WORKSPACE_ID = az containerapp env show --name $ENVIRONMENT --resource-group $RESOURCE_GROUP --query "properties.appLogsConfiguration.logAnalyticsConfiguration.customerId" --output tsv
    
  2. 将最近的作业执行名称保存到某个变量中。

    $JOB_EXECUTION_NAME=az containerapp job execution list --name $JOB_NAME --resource-group $RESOURCE_GROUP --query "[0].name" --output tsv
    

清理资源

如果你不打算继续使用此应用程序,请运行以下命令以删除资源组以及本快速入门中创建的所有资源。

注意

以下命令删除指定的资源组及其包含的所有资源。 如果指定的资源组中存在本快速入门范围外的资源,这些资源也会被删除。

az group delete --name "$RESOURCE_GROUP"

提示

遇到问题? 在 Azure 容器应用存储库中提交问题,告知我们有关 GitHub 的信息。

后续步骤