Azure Arc 上的 Azure 容器應用程式 可讓您在 Azure 資料中心以外、受支援的 Kubernetes 基礎結構上執行容器應用程式工作負載,包括 AKS on Azure Local。 你以 Azure 資源管理應用程式,而應用程式容器和容器應用程式資料平面則在 Kubernetes 叢集上運行。
在 Azure Arc 上執行容器應用程式可以幫助你:
- 將應用程式運行在使用者、裝置或本地資料來源附近,以降低延遲。
- 將申請處理置於能支持貴組織資料駐留、主權或合規要求的地點。
- 讓應用團隊擁有容器應用模型,同時基礎建設團隊仍掌控 Kubernetes 叢集、網路、儲存、容量及生命週期。
- 透過 Azure Resource Manager、Azure CLI 和 Azure portal 管理支援地點的應用程式。
- 使用支援的容器應用程式功能,如修訂、入口、自動擴展、DAPR、工作、指標、日誌串流、自訂網域及應用程式主控台存取。
Azure Arc 上的容器應用程式並非託管的運算服務。 您的組織負責提供、保護、擴展、修補並操作底層的 Kubernetes 叢集及其運算、網路和儲存資源。
要準備叢集並部署你的第一個應用程式,請完成「設定一個 Azure Arc 啟用的 Kubernetes 叢集以執行 Azure 容器應用程式」,然後完成「在 Azure Arc 建立容器應用程式」。
在配置叢集時,你會建立或使用以下資源:
連線叢集:您的 Kubernetes 叢集在 Azure Resource Manager 中的資源表示。 Azure Arc 代理程式在叢集中執行,會維持與 Azure 的連線。 如需詳細資訊,請參閱已啟用 Azure Arc 的 Kubernetes 是什麼?。
容器應用程式叢集擴充功能: 安裝於叢集中的軟體,提供容器應用程式控制器、入口、縮放、DAPR、日誌及其他資料平面元件。 擴充功能是連接叢集的子資源。
自訂位置:一個 Azure 位置資源,連結已連接的叢集、容器應用程式擴充功能,以及建立容器應用程式資源的 Kubernetes 命名空間。
容器應用程式連接環境: 開發者部署容器應用程式與工作時所進入的應用程式邊界。 連接環境會參考自訂位置,並包含其應用程式共享的設定。
相依順序為:連接叢集 > 、擴充 > 功能、自訂位置 > 、連接環境 > 、容器、應用程式或工作。 如果較早的資源不健康,鏈中後面的資源可能會無法提供。
局限性
以下限制適用於在已啟用 Azure Arc 的 Kubernetes 上執行的 Azure 容器應用程式。
| 限制 | 詳細資料 |
|---|---|
| 支援的 Azure 區域 | 澳洲東部、東亞、美國東部、美國中北部、東南亞、瑞典中部、英國南部、西歐、美國西部 |
| 叢集網路需求 | 必須支援 LoadBalancer 服務類型 |
| 節點 OS 需求 | 僅限 Linux。 |
| 功能:受控身分識別 | 無法使用 |
| 功能:使用受控識別從 ACR 提取映像 | 無法使用 (取決於受控身分識別) |
| 功能:Azure 檔案儲存體 | SMB 驅動程式(>= v1.18.0)應該先安裝,再使用 Azure 檔案儲存體 SMB 儲存 |
| 記錄 | Log Analytics 必須設定為使用叢集延伸模組;不是每個應用程式 |
支援的功能如下所示:
- 標籤
- 指標
- 簡單驗證
- 記錄資料流
- 復原能力
- 自訂網域
- 容器應用程式作業
- 修訂管理
- 應用程式容器主控台
重要事項
在 Azure Local 安裝 AKS 擴充功能之前,先設定 HAProxy 或其他支援的負載平衡器,並設定自訂 CoreDNS。 要喺Azure Local設定CoreDNS for AKS,請執行az containerapp arc setup-core-dns --distro AksAzureLocal。 關於指令選項,請參見 az containerapp arc。
容器應用程式延伸模組所建立的資源
在已啟用 Azure Arc 的 Kubernetes 叢集上安裝容器應用程式延伸模組時,會在指定的發行命名空間中建立數個資源。 這些資源可讓叢集成為 Microsoft.App 資源提供者的延伸模組,以支援應用程式的管理和作業。
該擴充套件可安裝用於事件驅動與 HTTP 擴展的 KEDA 元件。 叢集中僅能執行一個支援的 KEDA 安裝。 安裝前,請先執行 kubectl get deployment -A | grep -i keda,檢查是否已有安裝。 如果 KEDA 已經存在,請停止並確認支援的共存配置後再繼續。 不要移除現有的 KEDA 安裝或套用未公開的擴充功能設定,因為其他工作負載可能會依賴它。
下表說明為你建立的每個擴充元件的角色:
| Pod | 描述 | 執行個體數目 | CPU | 記憶體 | 類型 |
|---|---|---|---|---|---|
<extensionName>-k8se-activator |
作為調整管道的一部分使用 | 2 | 100 毫級 CPU | 500 MB | ReplicaSet |
<extensionName>-k8se-billing |
計費記錄產生 | 3 | 100 毫級 CPU | 100 MB | ReplicaSet |
<extensionName>-k8se-containerapp-controller |
在叢集上建立資源並維護元件狀態的核心操作員 Pod。 | 2 | 100 毫級 CPU | 1 GB | ReplicaSet |
<extensionName>-k8se-envoy |
所有資料平面 HTTP 要求的前端 Proxy 層。 其會將輸入流量路由至正確的應用程式。 | 3 | 1 核心 | 1,536 MB | ReplicaSet |
<extensionName>-k8se-envoy-controller |
運算子,會產生 Envoy 組態 | 2 | 200 miliCPU | 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 公尺 | 128 MB | ReplicaSet |
<extensionName>-k8se-keda-metrics-apiserver |
KEDA 計量伺服器 | 1 | 1 核心 | 1,000 MB | ReplicaSet |
<extensionName>-k8se-keda-operator |
將工作負載從 0/1 相應放大至 N 個執行個體 | 1 | 100 毫級 CPU | 500 MB | ReplicaSet |
<extensionName>-k8se-log-processor |
從應用程式和其他元件收集記錄,並將其傳送至 Log Analytics。 | 2 | 200 miliCPU | 500 MB | DaemonSet |
<extensionName>-k8se-mdm |
計量和記錄代理程式 | 2 | 500 millicpu | 500 MB | ReplicaSet |
| dapr-metrics | Dapr 計量 Pod | 1 | 100 毫級 CPU | 500 MB | ReplicaSet |
| dapr-operator | 管理 Dapr 的元件更新和服務端點 | 1 | 100 毫級 CPU | 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 入口網站也會停用連網環境中無法使用的控制項。 支援可能取決於所安裝的擴充套件版本,因此在使用新加入的功能前,請先確認 擴充功能的發布說明 。
是否支援受控身分識別?
否。 你無法在連接環境中為容器應用程式或工作指派管理身份。 用於 Azure Container Registry 映像提取的受控識別驗證也無法使用。
如果應用程式必須認證到 Azure 資源,請使用 Microsoft Entra 應用程式與服務主體:
- 建立或識別應用程式註冊。
- 只賦予其服務主體該應用程式所需的 Azure 角色。
- 將認證資訊儲存為 Container Apps 的祕密值。
- 在應用程式中透過環境變數參照該秘密。
- 建立資格輪調流程。
如需詳細資訊,請參閱 Microsoft Entra ID 中的應用程式和服務主體物件。 避免將憑證嵌入映像檔或原始碼儲存庫。
是否有任何調整限制?
容器應用程式與工作只能在底層 Kubernetes 叢集中可分配的 CPU、記憶體及專用資源範圍內擴展。 設定最大副本數量並不會保留容量。
當叢集容量不足時,Kubernetes 會留下新的副本待處理,應用程式無法達到請求的副本數。 透過以下方式檢查此狀況:
kubectl get pods -n <APPS_NAMESPACE>
kubectl describe pod <PENDING_POD_NAME> -n <APPS_NAMESPACE>
kubectl get events -n <APPS_NAMESPACE> --sort-by=.lastTimestamp
規劃擴展元件、峰值應用程式副本、Kubernetes 系統工作負載、滾動升級及節點故障的叢集容量。
會收集哪些記錄?
系統元件和應用程式的記錄都會寫入標準輸出。
您可以使用標準 Kubernetes 工具來收集這兩種記錄類型以進行分析。 您也可以使用 Log Analytics 工作區設定應用程式環境叢集延伸模組,其會將所有記錄傳送至該工作區。
根據預設,系統元件的記錄會傳送給 Azure 團隊。 不會傳送應用程式記錄。 您可以將 logProcessor.enabled=false 設定為擴充功能組態設定,以防止傳輸這些記錄。 此設定會停用將應用程式轉送至 Log Analytics 工作區的功能。 停用記錄處理器可能會影響任何支援案例所需的時間,而且系統會要求您透過其他方法從標準輸出收集記錄。
如何安裝 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 的叢集。