使用 Azure 容器应用创建作业

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

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

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

先决条件

设置

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

    az login
    
  2. 确保通过升级命令运行最新版本的 CLI。

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

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

    az provider register --namespace Microsoft.App
    az provider register --namespace Microsoft.OperationalInsights
    
  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 --replica-retry-limit 1 --replica-completion-count 1 --parallelism 1 `
        --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 --replica-retry-limit 1 --replica-completion-count 1 --parallelism 1 `
    --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 的信息。

后续步骤