你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
可以在已启用 Azure Arc 的 AKS 或 Azure Local 群集上的 AKS 上运行容器应用。
在已启用 Azure Arc 的 Kubernetes 群集中运行容器应用可以让:
- 开发人员利用容器应用的功能
- IT 管理员通过在内部基础结构上托管容器应用来维持企业合规性。
通过设置已启用 Azure Arc 的 Kubernetes 群集来运行 Azure 容器应用,了解如何为容器应用设置 Kubernetes 群集
在配置群集时,你将执行以下操作:
连接的群集,该群集是 Kubernetes 基础结构的 Azure 投影。 有关详细信息,请参阅什么是已启用 Azure Arc 的 Kubernetes?。
群集扩展,该扩展是连接的群集资源的子资源。 容器应用扩展将所需的资源安装到连接的群集中。 有关群集扩展的详细信息,请参阅已启用 Azure Arc 的 Kubernetes 上的群集扩展。
自定义位置,它将一组扩展捆绑在一起,并将器映射到已创建资源的命名空间。 有关详细信息,请参阅已启用 Azure Arc 的 Kubernetes 上的自定义位置。
与容器应用连接的环境,该环境使配置跨应用通用但与群集操作无关。 从概念上讲,该环境部署到自定义位置资源中,应用开发人员会在其中创建应用。
局限性
以下限制适用于已启用 Azure Arc 的 Kubernetes 上的 Azure 容器应用。
| 限制 | 详细信息 |
|---|---|
| 支持的 Azure 区域 | 澳大利亚东部、美国中部、东亚、美国东部、美国中北部、东南亚、瑞典中部、英国南部、西欧、美国西部 |
| 群集网络要求 | 必须支持 LoadBalancer 服务类型 |
| 节点 OS 要求 | 仅限 Linux。 |
| 功能:托管标识 | 不可用 |
| 功能:使用托管标识从 ACR 拉取映像 | 不可用(取决于托管标识) |
| 功能:Azure 文件存储 | 在使用 Azure 文件 SMB 存储之前,应安装 SMB 驱动程序(>= v1.18.0) |
| 日志 | Log Analytics 必须配置群集扩展;不是按应用程序 |
支持以下功能:
- 标签
- 指标
- 简单身份验证
- 日志流
- 复原能力
- 自定义域
- 容器应用作业
- 修订管理
- 应用容器控制台
重要说明
如果部署到 Azure Local 上的 AKS,请确保在尝试安装扩展之前已将 HAProxy 设置为负载均衡器。 此外,请确保已启用自定义 CoreDNS。
有关启用 AKS 自定义 CoreDNS 的信息,请参阅 az containerapp arc CLI 文档。
容器应用扩展创建的资源
在已启用 Azure Arc 的 Kubernetes 群集上安装容器应用扩展时,会在指定的发布命名空间中创建多个资源。 这些资源使群集能够成为 Microsoft.App 资源提供程序的扩展,以支持应用的管理和操作。
(可选)可以选择为扩展安装 KEDA 以用于事件驱动的缩放。 但是,群集上只允许一个 KEDA 安装。 如果存在现有的安装,请在安装群集扩展时禁用 KEDA 安装。
下表描述了为你创建的每个修订版的作用:
| Pod | 说明 | 实例数 | CPU | 内存 | 类型 |
|---|---|---|---|---|---|
<extensionName>-k8se-activator |
用作缩放管道的一部分 | 2 | 100 毫CPU | 500 MB | ReplicaSet |
<extensionName>-k8se-billing |
计费记录生成 | 3 | 100 millicpu | 100 MB | ReplicaSet |
<extensionName>-k8se-containerapp-controller |
在群集上创建资源并维护组件状态的核心运算符 Pod。 | 2 | 100 millicpu | 1GB | ReplicaSet |
<extensionName>-k8se-envoy |
用于所有数据平面 http 请求的前端代理层。 它将入站流量路由到正确的应用。 | 3 | 1 核 | 1,536 MB | ReplicaSet |
<extensionName>-k8se-envoy-controller |
用于生成 Envoy 配置的运算符 | 2 | 200 毫CPU | 500 MB | ReplicaSet |
<extensionName>-k8se-event-processor |
备用路由目标,用于帮助在系统获得第一个可用实例时缩放至零的应用。 | 2 | 100 毫CPU | 500 MB | ReplicaSet |
<extensionName>-k8se-http-scaler |
监视入站请求量以便向 KEDA 提供缩放信息。 | 1 | 100 毫CPU | 500 MB | ReplicaSet |
<extensionName>-k8se-keda-cosmosdb-scaler |
KEDA Cosmos DB 缩放器 | 1 | 10 m | 128 MB | ReplicaSet |
<extensionName>-k8se-keda-metrics-apiserver |
KEDA 指标服务器 | 1 | 1 核 | 1,000 MB | ReplicaSet |
<extensionName>-k8se-keda-operator |
将输入和输出的工作负载从 0/1 缩放到 N 个实例 | 1 | 100 millicpu | 500 MB | ReplicaSet |
<extensionName>-k8se-log-processor |
从应用和其他组件收集日志并将其发送到 Log Analytics。 | 2 | 200 millicpu | 500 MB | DaemonSet |
<extensionName>-k8se-mdm |
指标和日志代理 | 2 | 500 millicpu | 500 MB | ReplicaSet |
| dapr-metrics | Dapr 指标 Pod | 1 | 100 millicpu | 500 MB | ReplicaSet |
| dapr-operator | 管理 Dapr 的组件更新和服务终结点 | 1 | 100 millicpu | 500 MB | ReplicaSet |
| dapr-placement-server | 仅用于执行组件 - 创建用于将执行组件实例映射到 Pod 的映射表 | 1 | 100 毫CPU | 500 MB | StatefulSet |
| dapr-sentry | 管理服务之间的 mTLS 并充当 CA | 2 | 800 millicpu | 200 MB | ReplicaSet |
Azure Arc 上的 Azure 容器应用的常见问题解答
支持哪些容器应用功能?
检查门户以获取最新列表。 门户中不受支持的功能灰显。
是否支持托管标识?
不支持托管标识。 应用在 Azure Arc 中运行时,无法为其分配托管标识。如果应用需要一个标识以便能使用另一个 Azure 资源,请考虑改用应用程序服务主体。
是否存在任何缩放限制?
使用已启用 Azure Arc 的 Kubernetes 上的 Azure 容器应用部署的所有应用程序都能够在基础 Kubernetes 群集的限制范围内缩放。 如果群集用尽了可用计算资源(主要是 CPU 和内存),则应用程序将缩放到 Kubernetes 可使用可用资源进行计划的应用程序实例数。
收集哪些日志?
系统组件和应用程序的日志均写入标准输出。
可以使用标准 Kubernetes 工具收集这两类日志以进行分析。 还可以使用 Log Analytics 工作区配置应用程序环境群集扩展,它会将所有日志发送到该工作区。
默认情况下,来自系统组件的日志将发送到 Azure 团队。 不会发送应用程序日志。 可以通过将 logProcessor.enabled=false 设置为扩展配置设置以防止传输这些日志。 此配置设置会禁止将应用程序转发到 Log Analytics 工作区。 禁用日志处理器可能会影响任何支持案例所需的时间,并且系统会要求你通过一些其他方式从标准输出中收集日志。
如果看到提供程序注册错误,该怎么办?
创建与 Azure 容器应用连接的环境资源时,某些订阅可能会遇到“找不到已注册的资源提供程序”错误。 错误详细信息可能包括一组被视为有效的位置和 API 版本。 如果返回了此错误消息,则必须将订阅重新注册到 Microsoft.App 提供程序。 重新注册提供程序不会影响现有的应用程序或 API。 若要重新注册,请使用 Azure CLI 运行 az provider register --namespace Microsoft.App --wait。 然后重新尝试连接的环境命令。
如何安装 SMB 驱动程序?
可以使用以下 Helm 命令安装 SMB 驱动程序。 有关其他安装方法,请参阅 在 Kubernetes 群集上安装驱动程序。
helm repo add csi-driver-smb https://raw.githubusercontent.com/kubernetes-csi/csi-driver-smb/master/charts
helm install csi-driver-smb csi-driver-smb/csi-driver-smb --namespace kube-system --version v1.18.0
是否可以在 Windows 节点上安装扩展?
否,不能在 Windows 节点上安装扩展。 仅支持在 Linux 节点上安装扩展。
是否可以在基于 Arm64 的群集上部署容器应用扩展?
否。 不支持基于 Arm64 的群集。