1. Azure容器平台全景

Azure 的容器服务并不是“一个产品打天下”,而是围绕不同抽象层级、不同运维责任边界和不同运行位置形成的一组平台能力。理解它们的关键,不是背产品名,而是先回答三个问题:谁负责编排与伸缩、容器运行在哪里、团队愿意承担多少 Kubernetes 复杂度。本节把 AKS、ACI、Azure Container Apps、Azure Arc 与 Azure Container Registry 放在同一张全景图中,给出各自的定位、典型场景与选型依据。

一、五个组件的定位

Azure Kubernetes Service(AKS)是托管 Kubernetes 控制平面的集群服务。它把 etcd、API Server、调度器等控制面交给 Azure 维护,但节点池、工作负载、Ingress、网络插件、存储类、RBAC、升级节奏仍由使用者负责。AKS 适合需要完整 Kubernetes API、自定义控制器、Operator、CRD、DaemonSet、复杂网络策略或已有 Helm/Kustomize 资产迁移的场景。它的核心价值是控制力与生态兼容性,代价是运维面较大。

Azure Container Instances(ACI)是最轻量的“单容器/容器组”运行方式,不暴露 Kubernetes API,也没有节点概念。它按容器组(Container Group)计费,秒级启动,适合一次性任务、CI 构建步骤、批处理、事件触发的短时作业,以及需要快速验证镜像的场合。ACI 的定位是无编排的容器执行单元,不适合长期运行、需要复杂服务发现或自动扩缩的微服务系统。

Azure Container Apps(ACA)建立在 Kubernetes 与 KEDA、Dapr、Envoy 等开源能力之上,但把集群、节点、Ingress 控制器等细节隐藏起来。它提供基于 HTTP 流量、队列长度、事件源的自动伸缩,支持修订版本(Revision)与流量拆分,适合微服务、API、事件驱动后台任务。ACA 的定位是以应用为中心的 Serverless 容器平台,在“少运维”和“可伸缩”之间取得平衡。

Azure Arc不是运行容器的平台,而是把 Azure 的管理面延伸到 Azure 之外。对容器场景而言,Arc-enabled Kubernetes 可以把本地数据中心、其他云或边缘的 Kubernetes 集群接入 Azure,统一使用 Azure Policy、GitOps(Flux)、Azure Monitor、Microsoft Defender for Containers 等能力。它的定位是跨环境统一治理与合规,解决“集群不在 Azure,但希望用 Azure 工具管”的问题。

Azure Container Registry(ACR)是私有镜像与制品仓库,支持 OCI 镜像、Helm Chart、SBOM 等制品,提供基于 Entra ID 的认证、基于角色的访问控制、异地复制、任务(ACR Tasks)构建、内容信任与漏洞扫描。它是上述所有运行平台的镜像供给源,通常作为交付链路的起点。

二、全景关系图

Azure 容器平台全景:从镜像到运行与治理 Azure Container Registry 私有镜像 / Helm / SBOM 异地复制 · 漏洞扫描 交付链路的起点 Azure Kubernetes Service 托管控制面 · 完整 K8s API 节点池 / CRD / Operator 控制力强,运维责任大 Azure Container Apps Serverless 容器 · KEDA 伸缩 Revision 流量拆分 · Dapr 少运维,面向应用 Azure Container Instances 容器组 · 秒级启动 无编排 · 短时任务 Azure Arc 跨环境统一治理 Policy · GitOps · Monitor 选型轴:控制力 ←→ 少运维 AKS 完整 K8s ACA 应用抽象 ACI 单容器组 Arc 跨环境治理

三、选型依据:从需求反推平台

选型时建议按以下顺序判断,而不是先看产品功能表。

第一步,判断是否需要完整 Kubernetes。如果团队已有 Helm Chart、Operator、CRD、Istio/Linkerd 服务网格、自定义调度器,或需要 DaemonSet 采集节点日志,那么 AKS 是自然选择。反之,如果只是“把容器跑起来并自动伸缩”,ACA 往往更省事。

第二步,判断工作负载的生命周期。长期在线、需要稳定入口与多副本的微服务,适合 AKS 或 ACA;一次性、分钟级、事件触发的任务,ACI 或 ACA 的 Job 更合适。ACI 的容器组在任务结束后即释放,不会长期占用节点。

第三步,判断运行位置与合规边界。如果集群必须留在本地数据中心或边缘,且仍希望使用 Azure Policy、GitOps、Defender 统一管理,则用 Azure Arc 接入,而不是强行迁移到 Azure。Arc 让“运行位置”和“管理面”解耦。

第四步,判断镜像与制品治理需求。无论选哪个运行平台,只要涉及私有镜像、多环境复制、构建流水线或漏洞扫描,就应使用 ACR。ACR 的异地复制可以减少跨区域拉取延迟,ACR Tasks 可以在云端完成镜像构建,避免在 CI 代理上维护 Docker 环境。

四、一个可参考的选型对照

判断维度 AKS ACA ACI Arc
抽象层级 集群 / 工作负载 应用 / 修订版本 容器组 集群治理面
是否暴露 K8s API 是 否 否 取决于被纳管集群
自动伸缩 HPA / KEDA / 集群自动伸缩 内置 KEDA 规则 无 不提供伸缩
典型场景 复杂微服务、迁移既有 K8s API、事件驱动、微服务 批处理、CI 步骤、验证 本地/多云统一合规
运维责任 较高 较低 最低 治理层,不替代运行平台

五、组合使用才是常态

真实项目中,这些组件通常组合出现。一个常见的交付链路是:代码提交后由 CI 构建镜像并推送到 ACR;生产微服务部署到 AKS,使用 HPA 与 Ingress 对外提供服务;事件驱动的短任务交给 ACA 或 ACI;本地数据中心的 Kubernetes 集群通过 Azure Arc 接入,统一应用 Policy 与 GitOps。这样既保留了关键系统的控制力,又在边缘场景降低了运维成本。

选型时不要只问“哪个更先进”,而要问“这个工作负载需要多少 Kubernetes 控制力、运行在哪里、由谁承担升级与合规责任”。把这三个答案写清楚,平台选择通常就唯一了。