共用方式為


教學課程 - 在 AKS 叢集上部署 Azure 容器儲存體 (1.x.x 版)

本教學課程介紹 Azure 容器儲存體,並示範如何部署和管理在 Azure Kubernetes Service (AKS) 上執行的應用程式的容器原生儲存體。 如果您不想立即部署 Azure 容器儲存體,您可以略過本教學課程,並直接繼續在 AKS 中部署應用程式。 在本教學課程系列中,您不需要 Azure 容器儲存體來使用基本的店面應用程式。

這很重要

本文說明如何安裝 Azure 容器儲存體 (1.x.x 版),現在明確需要版本釘選參數 --container-storage-version 1 才能安裝。 Azure 容器儲存體 (2.x.x 版) 現已推出。

Azure 容器儲存體透過提供針對各種工作負載(包括資料庫、分析平台和高效能應用程式)量身打造的容器原生儲存,簡化了 Kubernetes 中有狀態應用程式的管理。

在本教學課程結束時,您將:

  • 瞭解 Azure 容器儲存體如何支援 Kubernetes 中的各種工作負載。
  • 探索多個儲存後端選項,以根據您的應用程式需求自訂儲存。
  • 在 AKS 叢集上部署 Azure 容器儲存體 (1.x.x 版),並建立一般暫時磁碟區。

開始之前

在先前的教學課程中,您已建立容器映像、將它上傳至 ACR 執行個體,以及建立 AKS 叢集。 遵循教學課程 1:準備 AKS 的應用程式 (部分機器翻譯) 開始進行操作。

  • 本教學課程需要使用 Azure CLI 2.35.0 版或更新版本。 目前,Azure 容器儲存體不支援 Portal 和 PowerShell。 使用 az --version 檢查版本。 若要安裝或升級,請參閱安裝 Azure CLI。 如果您在 Azure Cloud Shell 中使用 Bash 環境,則已安裝最新版本。
  • 您必須有現有的 Linux 型 AKS 叢集,其中至少有 3 個節點,具有 儲存體最佳化 VM SKUGPU 加速 VM SKU。 請參閱 教學課程 3 - 建立 AKS 叢集
  • 您將需要 Kubernetes 命令列用戶端 。 kubectl 如果您使用 Azure Cloud Shell,則已安裝,或者您可以執行 az aks install-cli 命令在本機安裝它。

安裝 Kubernetes 擴充功能

執行下列命令,以新增或升級至最新版本的 k8s-extension

az extension add --upgrade --name k8s-extension

連線至叢集並檢查節點狀態

如果您尚未從上一個教學課程連線到叢集,請執行下列命令。 如果您已連線,可以略過此部分。

  1. 執行下列命令以連線至叢集。

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    
  2. 使用 kubectl get 命令確認叢集的連線。 此命令會傳回叢集節點的清單。

    kubectl get nodes
    
  3. 下列輸出範例顯示叢集中的節點。 請確定所有節點的狀態都顯示 [就緒]

    NAME                                STATUS   ROLES   AGE   VERSION
    aks-nodepool1-34832848-vmss000000   Ready    agent   80m   v1.30.9
    aks-nodepool1-34832848-vmss000001   Ready    agent   80m   v1.30.9
    aks-nodepool1-34832848-vmss000002   Ready    agent   80m   v1.30.9
    

選擇備份儲存選項

Azure 容器儲存體 (1.x.x 版) 會使用儲存體集區來佈建和管理持續性和泛型磁碟區。 它為您的儲存池提供了多種後端儲存選項,每種選項都適合特定的工作負載。 選擇正確的儲存類型對於優化工作負載效能、耐用性和成本效率至關重要。 針對本教學課程,我們將使用暫時性磁碟搭配本機 NVMe 作為支援儲存體,以建立一般暫時性磁碟區。 但是,我們還將探索允許您創建持久卷的其他後備存儲選項。

暫時性磁碟

暫時性磁碟會利用 AKS 節點上的本機儲存體資源 (本機 NVMe 或暫存 SSD)。 它提供低亞毫秒延遲和高 IOPS,但如果 VM 重新啟動,則不會保持數據持久性。 短暫磁碟最適合用於如 Cassandra 等優先考慮速度而非持久性的應用程式,特別是對於擁有應用程式層級複寫機制的工作負載來說更理想。

您可以使用暫時磁碟來建立一般暫時磁碟區或持續性磁碟區,即使 VM 重新啟動時資料也會遺失。

Azure 磁碟

Azure 磁碟非常適合 PostgreSQL 和 MongoDB 等資料庫,提供耐用性、延展性和多層效能選項,包括進階 SSD 和 Ultra SSD。

Azure 磁碟允許自動配置儲存體區塊,並包含內建的冗餘和高可用性。

Azure Elastic SAN(預覽版)

Azure 彈性 SAN 專為共用儲存體需求和需要延展性和高可用性的一般用途資料庫而設計,非常適合 CI/CD 管線或大規模資料處理等工作負載。

啟用 Azure 容器儲存體 (1.x.x 版) 並建立儲存體集區

執行下列命令,以在叢集上安裝 Azure 容器儲存體並建立本機 NVMe 存放集區。

az aks update -n myAKSCluster -g myResourceGroup --enable-azure-container-storage ephemeralDisk --container-storage-version 1 --storage-pool-option NVMe

部署時間應該少於 15 分鐘。

驗證儲存區狀態

部署完成時,所選儲存集區類型的元件將會啟用,而且您將擁有預設儲存集區。

若要取得可用儲存區的清單,請執行下列命令:

kubectl get sp -n acstor

若要檢查儲存區的狀態,請執行下列命令:

kubectl describe sp <storage-pool-name> -n acstor

如果 Message 未表示 StoragePool is ready,則您的存放集區仍在建立或遇到問題。

顯示可用的儲存類別

當儲存資源池可供使用時、您必須選取儲存體類別、以定義在建立及部署磁碟區時動態建立儲存體的方式。

執行 kubectl get sc 來顯示可用的儲存類別。 您應該會看到名為 的儲存類別 acstor-<storage-pool-name>。 在下一節中使用此儲存類別來部署網繭。

使用一般暫時性磁碟區部署 Pod

使用 Fio (彈性 I/O 測試器) 建立 Pod 以進行基準測試和工作負載模擬,該 Pod 使用一般暫時磁碟區。

  1. 使用您最愛的文字編輯器來建立 YAML 資訊清單檔案,例如 code acstor-pod.yaml

  2. 貼上以下程式碼並儲存檔案。

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        acstor.azure.com/io-engine: acstor
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: ephemeralvolume
      volumes:
        - name: ephemeralvolume
          ephemeral:
            volumeClaimTemplate:
              metadata:
                labels:
                  type: my-ephemeral-volume
              spec:
                accessModes: [ "ReadWriteOnce" ]
                storageClassName: acstor-ephemeraldisk-nvme # replace with the name of your storage class if different
                resources:
                  requests:
                    storage: 1Gi
    

    如果您變更磁碟區的儲存大小,請確定大小小於單一節點暫時磁碟的可用容量。 執行 kubectl get diskpool -n acstor 檢查可用容量。

  3. 套用 YAML 清單檔案以部署 Pod。

    kubectl apply -f acstor-pod.yaml
    

    您應該會看到類似下列的輸出:

    pod/fiopod created
    
  4. 檢查 Pod 是否正在執行,且暫時性磁碟區宣告已成功繫結至 Pod:

    kubectl describe pod fiopod
    kubectl describe pvc fiopod-ephemeralvolume
    

您現在已部署使用本機 NVMe 做為儲存體的 Pod,並可用於 Kubernetes 工作負載。

在佈建其他磁碟區之前,請先驗證暫時磁碟的可用容量:

kubectl describe node <node-name>

若要深入瞭解 Azure 容器儲存體 (1.x.x 版),包括如何建立持續性磁碟區,請參閱什麼是 Azure 容器儲存體?

清理資源

在本教學課程系列的其餘部分,您不需要 Azure 容器儲存體,因此建議您立即刪除它,以避免產生不必要的 Azure 費用。

  1. 刪除 Pod。

    kubectl delete pod fiopod
    
  2. 刪除儲存池。

    kubectl delete sp -n acstor <storage-pool-name>
    
  3. 刪除延伸模組執行個體。

    az aks update -n myAKSCluster -g myResourceGroup --disable-azure-container-storage all
    

後續步驟

在本教學課程中,您在 AKS 叢集上部署了 Azure 容器儲存體 (1.x.x 版)。 您已學到如何做到以下幾點:

  • 在 AKS 叢集上啟用 Azure 容器儲存體 (1.x.x 版)。
  • 選擇備份儲存體類型並建立儲存區。
  • 使用一般暫時性磁碟區部署 Pod。

在下一個教學課程中,您將瞭解如何將應用程式部署至叢集。