使用 Azure Kubernetes Service 上的成品串流來減少映像提取時間 (AKS) (預覽)

高效能計算工作負載通常牽涉到大型映像,可能會導致較長的映像提取時間,並降低工作負載部署的速度。 AKS 上的成品串流可讓您將容器映像從 Azure Container Registry (ACR) 串流至 AKS。 AKS 只會提取初始 Pod 啟動所需的層次,減少提取映像和部署工作負載所需的時間。

根據映像的大小,成品串流可縮短 Pod 整備時間超過 15%,而且最適合 <30GB 映像。 根據我們的測試,我們看到 <10GB 映像的啟動時間從數分鐘減少到數秒鐘。 如果您有需要存取大型檔案 (>30GB) 的 Pod,則您應該將其掛接為磁碟區,而不是將它建置為層。 這是因為如果您的 Pod 需要啟動該檔案,它會佔用節點。 成品串流並不適合在啟動時從您的檔案系統讀取大量映像。 使用成品串流時,Pod 啟動會變成並行,而若未使用成品串流,Pod 會以序列方式啟動。

本文說明如何在 AKS 節點集區上啟用成品串流功能,以從 ACR 串流成品。

重要

AKS 預覽功能可透過自助服務,以加入方式使用。 預覽會以「現狀」和「可供使用時」提供,其其不受服務等級協定和有限瑕疵擔保所保護。 客戶支援部門會盡最大努力,部分支援 AKS 預覽。 因此,這些功能不適合實際執行用途。 如需詳細資訊,請參閱下列支援文章:

必要條件

注意

只有 Ubuntu 22.04、Ubuntu 20.04 和 Azure Linux 節點集區才支援成品串流。 不支援 Windows 節點集區。

安裝 aks-preview CLI 擴充功能

  1. 使用 az extension add 命令安裝 aks-preview CLI 擴充功能。

    az extension add --name aks-preview
    
  2. 更新擴充功能,以確保您已使用 az extension update 命令安裝最新版本。

    az extension update --name aks-preview
    

在您的訂用帳戶中註冊 ArtifactStreamingPreview 功能旗標

  • 使用 az feature register 命令,在您的訂用帳戶中註冊 ArtifactStreamingPreview 功能旗標。

    az feature register --namespace Microsoft.ContainerService --name ArtifactStreamingPreview
    

在 ACR 上啟用成品串流

ACR 上的啟用是 AKS 上成品串流的必要條件。 如需詳細資訊,請參閱 ACR 上的成品串流

  1. 使用 az group create 命令建立 Azure 資源群組來保存您的 ACR 實例。

    az group create --name myStreamingTest --location westus
    
  2. 使用具有 --sku Premium 旗標的 az acr create 命令,建立新的進階 SKU Azure Container Registry。

    az acr create --resource-group myStreamingTest --name mystreamingtest --sku Premium
    
  3. 使用 az configure 命令,為您的訂用帳戶設定預設 ACR 執行個體。

    az configure --defaults acr="mystreamingtest"
    
  4. 使用 az acr import 命令將映像推送或匯入登錄。

    az acr import --source docker.io/jupyter/all-spark-notebook:latest -t jupyter/all-spark-notebook:latest
    
  5. 使用 az acr artifact-streaming create 命令從映像建立串流成品。

    az acr artifact-streaming create --image jupyter/all-spark-notebook:latest
    
  6. 使用 az acr manifest list-referrers 命令確認產生的成品串流。

    az acr manifest list-referrers -n jupyter/all-spark-notebook:latest
    

在 AKS 上啟用成品串流

在新節點集區上啟用成品串流

  • 使用 az aks nodepool add 命令搭配 --enable-artifact-streaming,建立已啟用成品串流的新節點集區。

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name myNodePool \
        --enable-artifact-streaming
    

在現有的節點集區上啟用成品串流

  • 更新現有的節點集區,以使用 az aks nodepool update 命令搭配 --enable-artifact-streaming 啟用成品串流。

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name myNodePool \
        --enable-artifact-streaming
    

檢查成品串流是否已啟用

既然您已在進階 ACR 上啟用成品串流,並將該串流連線至已啟用成品串流的 AKS 節點集區,此叢集上任何具有已啟用成品串流之映像提取的 Pod 部署都會看到映像提取時間降低。

  • 檢查您的節點集區是否使用 az aks nodepool show 命令啟用成品串流。

    az aks nodepool show --resource-group myResourceGroup --cluster-name myAKSCluster --name myNodePool --query artifactStreamingProfile
    

    在輸出中,檢查 Enabled 欄位是否設定為 true

下一步

本文說明如何在 AKS 節點集區上啟用成品串流,以從 ACR 串流成品並減少映像提取時間。 若要深入瞭解在 AKS 中使用容器映像,請參閱 AKS 中容器映像管理和安全性的最佳做法