使用 Azure 容器应用作业可以运行容器化任务,这些任务会在有限的时间内执行并退出。 可以手动触发作业、计划作业的执行,或根据事件触发作业的执行。
作业最适合用于数据处理、资源清理机器学习等任务或任何需要按需处理的方案。
在本快速入门中,你将创建手动作业或计划作业。 若要了解如何创建事件驱动的作业,请参阅使用 Azure 容器应用部署事件驱动的作业。
先决条件
设置
若要从 CLI 登录到 Azure,请运行以下命令,然后按照提示完成身份验证过程。
az login
确保通过升级命令运行最新版本的 CLI。
az upgrade
安装最新版 Azure 容器应用 CLI 扩展。
az extension add --name containerapp --upgrade
如果尚未在 Azure 订阅中注册
Microsoft.App
和Microsoft.OperationalInsights
命名空间,现在请注册。az provider register --namespace Microsoft.App az provider register --namespace Microsoft.OperationalInsights
完成 Azure CLI 安装后,接下来可以定义要在本文中使用的环境变量。
$RESOURCE_GROUP="jobs-quickstart" $LOCATION="chinanorth3" $ENVIRONMENT="env-jobs-quickstart" $JOB_NAME="my-job"
创建容器应用环境
Azure 容器应用环境充当容器应用和作业周围的安全边界,因此容器应用和作业可以共享同一网络并相互通信。
使用以下命令创建资源组。
az group create --name $RESOURCE_GROUP --location $LOCATION
使用以下命令创建容器应用环境。
az containerapp env create --name $ENVIRONMENT --resource-group $RESOURCE_GROUP --location $LOCATION
创建和运行手动作业
若要使用手动作业,首先请创建触发器类型为 Manual
的作业,然后启动执行。 可以启动同一个作业的多个执行,多个作业执行可以并发运行。
使用以下命令在容器应用环境中创建作业。
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"
手动作业不会自动执行。 必须启动作业的执行。
使用以下命令启动作业执行。
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 中。
将容器应用环境的 Log Analytics 工作区 ID 保存到某个变量中。
$LOG_ANALYTICS_WORKSPACE_ID = az containerapp env show --name $ENVIRONMENT --resource-group $RESOURCE_GROUP --query "properties.appLogsConfiguration.logAnalyticsConfiguration.customerId" --output tsv
将最近的作业执行名称保存到某个变量中。
$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 的信息。