共用方式為


使用 Azure 彈性 SAN 的 Azure 容器儲存體 (預覽)

Azure 容器儲存體是雲端式磁碟區管理、部署和協調流程服務,專為容器原生建置。 Azure 彈性 SAN 是完全整合的解決方案,可簡化部署、調整、管理和設定 SAN,同時提供高可用性等內建雲端功能。

在預覽版功能中,您可以將 Azure 容器儲存體設定為使用 Azure 彈性 SAN。 本文說明如何進行該設定。 在本文最後,您將擁有一個使用彈性 SAN 作為其儲存體的 Pod。

必要條件

  • 如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

  • 本文需要最新版本 (2.35.0 或更新版本) 的 Azure CLI。 請參閱如何安裝 Azure CLI。 若您使用的是 Azure Cloud Shell 中的 Bash 環境,即已安裝最新版本。 如果您打算在本機執行命令,而不是在 Azure Cloud Shell 中執行命令,請務必使用系統管理權限來執行這些命令。 如需詳細資訊,請參閱開始使用 Azure Cloud Shell

  • 您將需要 Kubernetes 命令列用戶端,kubectl。 如果您使用 Azure Cloud Shell,則已安裝;您也可以執行 az aks install-cli 命令,在本機安裝。

  • 如果您尚未安裝 Azure 容器儲存體,請遵循將 Azure 容器儲存體與 Azure Kubernetes Service 一起使用中的指示。

  • 檢查您的目標區域是否受 Azure 容器儲存體區域支援。

  • 請確定訂用帳戶上有 Azure 容器儲存體擁有者角色或 Azure 容器儲存體參與者角色。 其中一個角色會授與權限,以允許 Azure 容器儲存體與彈性 SAN 資源通訊。 若要進行這項變更,請移至 Azure 入口網站上的訂用帳戶頁面。 選取 [存取控制 (IAM)] > [新增角色指派],然後在 [作業函式角色] 索引標籤中搜尋 [Azure 容器儲存體擁有者] 或 [Azure 容器儲存體參與者]。選取 [檢視] > [指派] > [新增指派],然後新增您的帳戶。

  • 若要搭配 Azure 彈性 SAN (預覽) 使用 Azure 容器儲存體,您的 AKS 叢集必須至少有三個一般用途 VM 的節點集區,例如叢集節點的 standard_d4s_v5,每個節點至少有四個虛擬 CPU (vCPU)。

限制

當您使用 Azure 容器儲存體來部署及協調彈性 SAN 時,目前不支援下列功能。

  • 磁碟區快照
  • 存放集區擴充

區域可用性

Azure 容器儲存體僅適用於一部分的 Azure 區域:

  • (非洲) 南非北部
  • (亞太地區) 澳大利亞東部
  • (亞太地區) 東亞
  • (亞太地區) 日本東部
  • (亞太地區) 南韓中部
  • (亞太地區) 東南亞
  • (亞太地區) 印度中部
  • (歐洲) 法國中部
  • (歐洲) 德國中西部
  • (歐洲) 歐洲北部
  • (歐洲) 西歐
  • (歐洲) 英國南部
  • (歐洲) 瑞典中部
  • (歐洲) 瑞士北部
  • (中東) 阿拉伯聯合大公國北部
  • (北美洲) 美國東部
  • (北美洲) 美國東部 2
  • (北美洲) 美國西部
  • (北美洲) 美國西部 2
  • (北美洲) 美國西部 3
  • (北美洲) 美國中部
  • (北美洲) 美國中北部
  • (北美洲) 美國中南部
  • (北美洲) 美國中西部
  • (北美洲) 加拿大中部
  • (北美洲) 加拿大東部
  • (南美洲) 巴西南部

建立及連結永續性磁碟區

請遵循下列步驟來建立及連結永續性磁碟區。

1.建立存放集區

首先,透過在 YAML 資訊清單檔中定義存放集區來建立存放集區,這是 Kubernetes 叢集的儲存體邏輯分組。

如果您使用 az aks createaz aks update 命令來啟用 Azure 容器儲存體,您可能已有存放集區。 使用 kubectl get sp -n acstor 來取得存放集區的清單。 如果您有要使用的存放集區,可以跳過本節,然後從顯示可用的儲存類別繼續。

請遵循下列步驟來建立 Azure 彈性 SAN (預覽) 的存放集區。

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

  2. 貼入下列程式碼。 存放集區 name 值可以是您想要的任何值。 調整儲存體,以反映您想要在 Gi 或 Ti 中的儲存容量,並儲存該檔案。 Azure 彈性 SAN 目前不支援對存放集區的大小進行調整。

    apiVersion: containerstorage.azure.com/v1
    kind: StoragePool
    metadata:
      name: managed
      namespace: acstor
    spec:
      poolType:
        elasticSan: {}
      resources:
        requests: {"storage": 1Ti}
    
  3. 套用 YAML 資訊清單檔以建立存放集區。

    kubectl apply -f acstor-storagepool.yaml 
    

    當存放集區建立完成時,您會看到如下的訊息:

    storagepool.containerstorage.azure.com/managed created
    

    您也可以執行此命令來檢查存放集區的狀態。 將 <storage-pool-name> 取代為您的存放集區 name 值。 在此範例中,值會是 managed

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

建立存放集區時,Azure 容器儲存體會代表您建立儲存類別,並使用命名慣例 acstor-<storage-pool-name>。 此外,也會建立 Azure 彈性 SAN 資源。

2.顯示可用的儲存類別

當存放集區準備好使用時,您必須選取儲存類別,以定義在建立永續性磁碟區宣告和部署永續性磁碟區時,如何動態建立儲存體。

執行 kubectl get sc 以顯示可用的儲存類別。 您應看到名為 acstor-<storage-pool-name> 的儲存類別。

重要

請勿使用標示為 [內部] 的儲存類別。 這是 Azure 容器儲存體運作所需的內部儲存類別。

3.建立永續性磁碟區宣告

永續性磁碟區宣告 (PVC) 可用來根據儲存體類別,動態佈建儲存體。 請遵循下列步驟,使用新的儲存類別建立 PVC。

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

  2. 貼上下列程式碼並儲存檔案。 PVC name 值可以是您想要的任何值。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: managedpvc
    spec:
      accessModes:
        - ReadWriteOnce
      storageClassName: acstor-managed # replace with the name of your storage class if different
      resources:
        requests:
          storage: 100Gi
    
  3. 套用 YAML 資訊清單檔以建立 PVC。

    kubectl apply -f acstor-pvc.yaml
    

    您應該會看到如下所示的輸出:

    persistentvolumeclaim/managedpvc created
    

    您可以執行下列命令來驗證 PVC 狀態:

    kubectl describe pvc managedpvc
    

建立 PVC 後,就可以由 Pod 使用。

4.部署 Pod 並連結永續性磁碟區

使用 Fio (彈性 I/O 測試器) 建立 Pod,以進行基準測試和工作負載模擬,並指定永續性磁碟區的掛接路徑。 針對 claimName,請使用您在建立永續性磁碟區宣告時所使用的 name 值。

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

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

    kind: Pod
    apiVersion: v1
    metadata:
      name: fiopod
    spec:
      nodeSelector:
        acstor.azure.com/io-engine: acstor
      volumes:
        - name: managedpv
          persistentVolumeClaim:
            claimName: managedpvc
      containers:
        - name: fio
          image: nixery.dev/shell/fio
          args:
            - sleep
            - "1000000"
          volumeMounts:
            - mountPath: "/volume"
              name: managedpv
    
  3. 套用 YAML 資訊清單檔以部署 Pod。

    kubectl apply -f acstor-pod.yaml
    

    您應該會看到如下輸出:

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

    kubectl describe pod fiopod
    kubectl describe pvc managedpvc
    
  5. 檢查 Fio 測試以查看其目前狀態:

    kubectl exec -it fiopod -- fio --name=benchtest --size=800m --filename=/volume/test --direct=1 --rw=randrw --ioengine=libaio --bs=4k --iodepth=16 --numjobs=8 --time_based --runtime=60
    

您現在已部署使用彈性 SAN 作為儲存體的 Pod,並可用於 Kubernetes 工作負載。

管理永續性磁碟區和存放集區

既然您已建立永續性磁碟區,可以視需要中斷連結並重新連結。 您也可以刪除存放集區。

中斷連結及重新連結永續性磁碟區

若要中斷連結永續性磁碟區,請刪除永續性磁碟區連結的 Pod。 將 <pod-name> 取代為 Pod 的名稱,例如 fiopod

kubectl delete pods <pod-name>

若要重新連結永續性磁碟區,只要參考 YAML 資訊清單檔中的永續性磁碟區宣告名稱,如部署 Pod 並連結永續性磁碟區中所述。

若要檢查永續性磁碟區宣告繫結至哪個永續性磁碟區,請執行 kubectl get pvc <persistent-volume-claim-name>

刪除存放集區

若要刪除存放集區,請執行下列命令。 使用存放集區名稱取代 <storage-pool-name>

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

另請參閱