Azure 容器執行個體 的最佳做法和考慮

Azure 容器執行個體 可讓您封裝、部署和管理雲端應用程式,而不需要管理基礎結構。 在ACI上執行的常見案例包括高載工作負載、工作自動化和建置作業。 您可以定義每個容器群組所需的資源,包括 vCPU 和記憶體,以使用 ACI。 ACI 是任何可在隔離容器中運作,並提供快速啟動時間、超 visor 層級安全性、自定義容器大小等等案例的絕佳解決方案。 下列資訊將協助您判斷 Azure 容器執行個體 是否最適合您的案例。

要考慮什麼

透過命令行介面 (CLI) 傳遞的使用者認證會儲存為後端的純文字。 以純文本儲存認證是安全性風險;Microsoft 建議客戶將使用者認證儲存在 CLI 環境變數中,以確保在後端儲存時會加密/轉換。

可能需要增加配額的預設限制。 如需詳細資訊:ACI 的資源可用性和配額限制 - Azure 容器執行個體 |Microsoft Learn

容器映射不能大於 15 GB,任何超過此大小的映射都可能導致非預期的行為: 我的容器映射有多大?

如果您的容器映射大於 15 GB,您可以掛接 Azure 檔案儲存體 hare 來儲存映像。

如果容器群組重新啟動,容器群組的IP可能會變更。 建議您不要在您的案例中使用硬式編碼IP位址。 如果您需要靜態公用IP位址,請使用 應用程式閘道:容器群組的靜態IP位址 - Azure 容器執行個體 |Microsoft Learn

有保留給服務功能的埠。 建議您不要使用這些埠,因為其使用會導致非預期的行為: ACI 服務是否保留服務功能的埠?

您的容器群組可能會因為平台維護事件而重新啟動。 這些維護事件是為了確保基礎結構的持續改善: 容器在沒有明確使用者輸入的情況下,會進行隔離重新啟動。

ACI 不允許 特殊許可權的容器作業。 建議您不要依賴針對您的案例使用根目錄

最佳作法

建議您在多個區域中執行容器群組,以便在某個區域中發生問題時,您的工作負載可以繼續執行。

建議您不要在您的案例中使用硬式編碼IP位址,因為容器群組的IP位址不保證。 若要減輕連線問題,建議您設定閘道。 如果您的容器位於公用IP位址後面,而且您需要靜態公用IP位址,請使用 應用程式閘道。 如果您的容器位於虛擬網路後方,而且您需要靜態 IP 位址,建議您使用 NAT 閘道

其他 Azure 容器選項

Azure 容器應用程式

Azure 容器應用程式可讓您根據容器建置無伺服器微服務。 Azure 容器應用程式不提供基礎 Kubernetes API 的直接存取權。 如果您需要存取 Kubernetes API 和控制平面,您應該使用 Azure Kubernetes Service。 不過,如果您想要建置 Kubernetes 樣式應用程式,而且不需要直接存取所有原生 Kubernetes API 和叢集管理,容器應用程式會根據最佳做法提供完全受控的體驗。 基於這些原因,許多小組可能偏好使用 Azure Container Apps 開始建置容器微服務。

Azure App Service

Azure App Service 為 Web 應用程式提供完全受控的裝載,包括網站和 Web API。 您可以使用程式代碼或容器來部署這些 Web 應用程式。 Azure App Service 已針對 Web 應用程式最佳化。 Azure App Service 與其他 Azure 服務整合,包括 Azure 容器應用程式或 Azure Functions。 如果您打算建置 Web 應用程式,Azure App 服務 是理想的選項。

Azure Container Instances

Azure 容器執行個體 (ACI) 會視需要提供 Hyper-V 隔離容器的單一 Pod。 相較於容器應用程式,它可以視為較低層級的「建置組塊」選項。 ACI 容器不提供調整、負載平衡和憑證等概念。 例如,若要調整為五個容器執行個體,您可以建立五個不同的容器執行個體。 Azure Container Apps 在容器之上提供許多應用程式特定概念,包括憑證、修訂、規模和環境。 使用者通常會透過其他服務與 Azure 容器執行個體互動。 例如,Azure Kubernetes Service 可以透過虛擬節點分層協調流程,並在 ACI 之上進行調整。 如果您需要不太符合 Azure 容器應用程式最佳化案例的「堅持己見」建置組塊,Azure 容器執行個體是理想的選項。

Azure Kubernetes Service

Azure Kubernetes Service (AKS) 在 Azure 中提供完全受控 Kubernetes 選項。 它支援直接存取 Kubernetes API,並執行任何 Kubernetes 工作負載。 完整叢集位於您的訂用帳戶中,而叢集組態和作業則位於您的控制與責任內。 在 Azure 中尋找完全受控 Kubernetes 版本的小組,Azure Kubernetes Service 是理想的選項。

Azure Functions

Azure Functions 是無伺服器函數即服務 (FaaS) 解決方案。 其已針對使用函式程式設計模型執行事件驅動應用程式進行最佳化。 其會與 Azure 容器應用程式共用許多特性,以調整和與事件整合,但是已針對部署為程式碼或容器的暫時性函式最佳化。 Azure Functions 程式設計模型可為想要在事件上觸發函式執行並繫結至其他資料來源的小組提供生產力優勢。 如果您打算建置 FaaS 樣式函式,Azure Functions 是理想的選項。 Azure Functions 程式設計模型可作為基礎容器映像,使其可攜至其他容器型計算平台,讓小組在環境需求變更時重複使用程式碼。

Azure Spring Apps

Azure Spring 應用程式是適用於 Spring 開發人員的完全受控服務。 如果您想要在 Azure 上執行 Spring Boot、Spring Cloud 或任何其他 Spring 應用程式,Azure Spring 應用程式是理想的選項。 服務會管理 Spring 應用程式的基礎結構,讓開發人員可以專注於處理程式碼。 Azure Spring 應用程式提供生命週期管理,使用全方位的監視和診斷、組態管理、服務探索、持續整合與持續傳遞的整合、藍綠部署等等。

Azure Red Hat OpenShift

Azure Red Hat OpenShift 是由 Red Hat 和 Microsoft 聯合設計、操作及支援,以提供整合產品和支持體驗來執行 Kubernetes 支援的 OpenShift。 透過 Azure Red Hat OpenShift,小組可以選擇自己的登錄、網路、記憶體和 CI/CD 解決方案,或使用內建解決方案進行自動化原始程式碼管理、容器和應用程式組建、部署、調整、健康情況管理等等。 如果您的小組或組織使用 OpenShift,Azure Red Hat OpenShift 是理想的選項。

下一步

瞭解如何使用 Azure Resource Manager 範本部署多容器容器群組: