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

教程:在已启用 Azure Arc 的 Kubernetes 上创建 Azure 容器应用(预览版)

在本教程中,你将在已启用 Azure Arc 的 Kubernetes 群集上创建一个容器应用(预览版),并了解如何执行以下操作:

  • 在 Azure Arc 上创建容器应用
  • 查看应用程序的诊断信息

先决条件

在继续创建容器应用之前,首先需要设置一个已启用 Azure Arc 的 Kubernetes 群集来运行 Azure 容器应用

添加 Azure CLI 扩展

Azure Cloud Shell 中启动 Bash 环境。

Launch Cloud Shell in a new window.

接下来,添加所需的 Azure CLI 扩展。

警告

以下命令安装一个不能与公有云服务配合使用的自定义容器应用扩展。 如果你切换回 Azure 公有云,则需要卸载该扩展。

az extension add --upgrade --yes --name customlocation
az extension remove --name containerapp
az extension add -s https://aka.ms/acaarccli/containerapp-latest-py2.py3-none-any.whl --yes

创建资源组

为本教程中创建的服务创建一个资源组。

myResourceGroup="my-container-apps-resource-group"
az group create --name $myResourceGroup --location eastus 

获取自定义位置信息

从群集管理员那里获取以下位置组、名称和 ID。 有关详细信息,请参阅创建自定义位置

customLocationGroup="<RESOURCE_GROUP_CONTAINING_CUSTOM_LOCATION>"
customLocationName="<NAME_OF_CUSTOM_LOCATION>"

获取自定义位置 ID。

customLocationId=$(az customlocation show \
    --resource-group $customLocationGroup \
    --name $customLocationName \
    --query id \
    --output tsv)

检索连接的环境 ID

获取自定义位置 ID 后,可以查询连接的环境。

连接的环境在很大程度上与标准容器应用环境相同,但网络限制由基础的已启用 Arc 的 Kubernetes 群集控制。

myContainerApp="my-container-app"
myConnectedEnvironment=$(az containerapp connected-env list --custom-location $customLocationId -o tsv --query '[].id')

创建应用

以下示例创建一个 Node.js 应用。

 az containerapp create \
    --resource-group $myResourceGroup \
    --name $myContainerApp \
    --environment $myConnectedEnvironment \
    --environment-type connected \
    --image mcr.microsoft.com/k8se/quickstart:latest \
    --target-port 80 \
    --ingress 'external'

az containerapp browse --resource-group $myResourceGroup --name $myContainerApp

使用 Log Analytics 获取诊断日志

注意

安装容器应用扩展时,需要通过一项 Log Analytics 配置来查看诊断信息。 如果安装的扩展没有 Log Analytics,请跳过此步骤。

导航到使用容器应用扩展配置的 Log Analytics 工作区,然后在左侧导航栏中选择“日志”。

运行以下示例查询以显示过去 72 小时的日志。

如果运行查询时出现错误,请在 10-15 分钟后重试。 Log Analytics 可能会延迟一段时间才开始从应用程序接收日志。

let StartTime = ago(72h);
let EndTime = now();
ContainerAppConsoleLogs_CL
| where TimeGenerated between (StartTime .. EndTime)
| where ContainerAppName_s =~ "my-container-app"

Kubernetes 群集中托管的所有应用的应用程序日志将记录到名为 ContainerAppConsoleLogs_CL 的自定义日志表中的 Log Analytics 工作区中。

  • Log_s 包含给定容器应用扩展的应用程序日志
  • AppName_s 包含容器应用的应用名称。 除了通过应用程序代码写入的日志之外,Log_s 列还包含有关容器启动和关闭的日志。

可以在 Kusto 入门中详细了解日志查询。

后续步骤