本文概述了 Azure Kubernetes Service (AKS) 搭配 Azure Container Registry (ACR) 上的 Artifact Streaming。 Artifact Streaming 會將容器映像從 ACR 串流到 AKS,所以你只會在初始 pod 啟動時拉取必要的層。 此功能縮短了部署工作負載所需的時間。
Artifact 串流是如何運作的?
在標準容器啟動中,Kubernetes 會在工作負載開始前下載所有映像層。 在處理大型映像檔或啟動多個 Pod 時,此程序可能需要一些時間。
AKS 上的 Artifact Streaming 改變了此行為,只取得初始 pod 啟動所需的層。 執行時會根據需要稍後擷取剩餘資料。 此功能使用 OverlayBD,將容器映像層轉換為虛擬區塊裝置。 執行時可以在區塊層級存取資料,而非下載完整映像檔。 使用此方法,您只會取得啟動與執行時存取的區塊。 如果應用程式只使用部分映像,則只拉取該部分。
Note
AKS 的 Artifact Streaming 僅支援依標籤拉取圖片。
Artifact Streaming 的運作方式,是將依標籤擷取的映像檔解析為該映像檔的串流版本。 如果你用 digest 來拉取圖片,就不能用 Artifact Streaming。
優點與使用案例
透過 AKS 的 Artifact Streaming,你可以:
- 部署多個區域的容器化應用程式:將單一 Azure 容器登錄檔串流容器映像到不同區域的 AKS 叢集。 此方法減少複製影像所需的時間與資源。
- 縮短莢艙準備時間:在完整影像下載前啟動莢艙,這能縮短莢艙準備時間(尤其是大型影像)。
- 提升擴展效率:透過減少建立或擴展多個 pod 的啟動延遲,支援大規模部署。
- 優化大型映像檔的啟動速度:改善啟動時不需要所有映像層的工作負載初始化時間,例如容器化的有狀態工作負載(如 Java 或 C# 應用程式),或是映像中內建依賴但非啟動時立即需要的工作負載。
Considerations
在使用 AKS 的 Artifact 串流時,請留意以下幾點:
- 需要在啟動時讀取檔案的讀取密集映像檔,並不會從 Artifact Streaming 中受益。 如果你的 pod 需要存取大型檔案(>30 GB),建議將其掛載為磁碟區,而不是將其建置為映像層。 如果你的 Pod 需要那個檔案才能啟動,節點就會塞爆。
- 你可以針對新舊容器登錄檔中的特定倉庫或標籤啟動 Artifact 串流。
- 你可以透過啟動 Artifact Streaming 來將原始文物和串流文物同時存放在 ACR。
- 即使已針對存放區或成品關閉 Artifact Streaming,你仍可存取原始成品和串流成品。
- 如果你啟用 Artifact Streaming 和 Soft Delete,並刪除儲存庫或構件,則原始版本和 Artifact Streaming 版本都會被刪除。 然而,Soft Delete 入口網站中僅提供原始版本。
相關內容
欲開始使用 AKS 上的 Artifact Streaming,請參見 Enable Artifact Streaming on Azure Kubernetes Service (AKS) with Azure Container Registry (ACR)。