分享方式:


快速入門:搭配 Azure Kubernetes Service 使用 Azure 容器儲存體

Azure 容器儲存體是雲端式磁碟區管理、部署和協調流程服務,專為容器原生建置。 本快速入門說明如何連線到以 Linux 為基礎的 Azure Kubernetes Service (AKS) 叢集、安裝 Azure 容器儲存體,以及使用 Azure CLI 建立存放集區。

重要

Azure 容器儲存體現已正式發行 (GA),從 1.1.0 版開始。 建議對生產環境工作負載使用 GA 版本。

必要條件

  • 如果您沒有 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 容器儲存體區域支援。

  • 如果您尚未建立 AKS 叢集,請依照指示安裝 AKS 叢集

開始使用

  • 記下您的 Azure 訂用帳戶識別碼。 如果您想要使用 Azure 彈性 SAN 作為資料儲存體,您需要 Azure 容器儲存體擁有者角色,或指派給 Azure 訂用帳戶的 Azure 容器儲存體參與者角色。 擁有者層級存取可讓您安裝 Azure 容器儲存體延伸模組、授與其儲存體資源的存取權,以及提供您設定 Azure 彈性 SAN 資源的權限。 參與者層級存取可讓您安裝延伸模組,並授與其儲存體資源的存取權。 如果您打算使用 Azure 磁碟或暫時性磁碟作為資料儲存體,則不需要訂用帳戶上的特殊存取權限。

  • 啟動 Azure Cloud Shell,或如果您使用的是本機安裝,請使用 az login 命令來登入 Azure。

  • 如果您使用 Azure Cloud Shell,系統可能會提示您掛接儲存體。 選擇您要在其中建立儲存體帳戶的 Azure 訂用帳戶,然後選取 [建立]

安裝必要的延伸項目

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

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

設定訂用帳戶內容

使用 az account set 命令來設定您的 Azure 訂用帳戶內容。 您可以執行 az account list --output table 命令,檢視您有權存取之所有訂用帳戶的訂用帳戶識別碼。 請記得將 <subscription-id> 取代為您的訂用帳戶識別碼。

az account set --subscription <subscription-id>

連線至叢集

若要連線至叢集,請使用 Kubernetes 命令列用戶端 (kubectl)。 如果您使用 Azure Cloud Shell,則已安裝;您也可以執行 az aks install-cli 命令,在本機安裝。

  1. 使用 az aks get-credentials 命令,設定 kubectl 以連線到您的叢集。 下列命令:

    • 下載憑證並設定 Kubernetes CLI 以供使用。
    • 使用 ~/.kube/config,這是 Kubernetes 組態檔的預設位置。 您可使用 --file 引數,為您的 Kubernetes 組態檔指定不同的位置。
    az aks get-credentials --resource-group <resource-group> --name <cluster-name>
    
  2. 使用 kubectl get 命令確認叢集的連線。 此命令會傳回叢集節點的清單。

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

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

    請記下節點集區的名稱。 在此範例中,會是 nodepool1

為您的存放集區選擇資料儲存體選項

部署 Azure 容器儲存體之前,您必須決定要用來建立存放集區和磁碟區的後端儲存體選項。 目前有三個選項可供使用:

  • Azure 彈性 SAN:Azure 彈性 SAN 適用於一般用途資料庫、串流和傳訊服務、CI/CD 環境及其他第 1 階層/第 2 階層工作負載。 依建立的磁碟區和磁碟區快照集隨選佈建儲存體。 多個叢集可以同時存取單一 SAN,不過永續性磁碟區一次只能由一個取用者連結。

  • Azure 磁碟:Azure 磁碟非常適合 MySQL、MongoDB 及 PostgreSQL 等資料庫。 依據目標容器存放集區大小和磁碟區大小上限佈建。

  • 暫時磁碟:此選項會在 AKS 叢集節點上使用本機 NVMe 磁碟驅動器或暫存 SSD。 對延遲非常敏感 (低子毫秒延遲),因此最適合不需要資料持久性的應用程式,或具有 Cassandra 等內建資料復寫支援的應用程式。 AKS 會探索 AKS 節點上可用的暫時性記憶體,並取得磁碟機以進行磁碟區部署。

注意

針對 Azure 彈性 SAN 和 Azure 磁碟,Azure 容器儲存體會在安裝期間為您部署備份儲存體。 您不需要建立自己的彈性 SAN 或 Azure 資料箱磁碟。 若要使用彈性 SAN,您需要 Azure 容器儲存體擁有者角色,或是 Azure 訂用帳戶的 Azure 容器儲存體參與者角色。

資源取用量

Azure 容器儲存體需要特定節點資源來執行服務的元件。 根據存放集區類型選取項目,您會在安裝 Azure 容器儲存體時指定這些資源:

存放集區類型 CPU 核心 RAM
Azure 彈性 SAN  無
Azure 磁碟 1 1 GiB
暫時性磁碟 - 暫時 SSD 1 1 GiB
暫時性磁碟 - 本機 NVMe (標準層) 25% 的核心 (效能層級級可以更新)* 1 GiB

取用的資源是每個節點,而且會針對將安裝 Azure 容器儲存體的節點集區中的每個節點取用。 如果您的節點沒有足夠的資源,Azure 容器儲存體將無法執行。 Kubernetes 會自動重新嘗試初始化這些失敗的 Pod,因此如果資源獲釋,則可以再次初始化這些 Pod。

*在存放集區類型暫時磁碟 - 本機 NVMe 標準 (預設) 效能層級中,如果您使用叢集節點的多個 VM SKU 類型,所取用的 25% CPU 核心會套用至所使用的最小 SKU。 例如,如果您使用 8 核心和 16 核心 VM 類型的混合,則資源耗用量為 2 個核心。 您可以更新效能層級,以使用較大百分比的核心,並達到更高的 IOPS。

確定叢集的 VM 類型符合下列準則

若要使用 Azure 容器儲存體,您需要至少三個 Linux VM 的節點集區。 如果您使用本機 NVMe 作為存放集區,節點集區應至少包含四個 Linux VM。 每個 VM 至少應有四個虛擬 CPU (vCPU)。 Azure 容器儲存體將在部署擴充功能的每個 VM 上取用一個核心進行 I/O 處理。

選擇叢集節點的 VM 類型時,請遵循這些指導方針。 您必須選擇支援 Azure 高階儲存體的 VM 類型。

  • 如果您想要使用 Azure 彈性 SAN 或 Azure 資料箱磁碟作為備份儲存體,選擇一般用途 VM 類型,例如 standard_d4s_v5
  • 如果您要使用暫時磁碟和本機 NVMe,請選擇儲存體最佳化 VM 類型,例如 standard_l8s_v3
  • 如果您要搭配暫存 SSD 使用暫時磁碟,請選擇具有暫存 SSD 磁碟的 VM,例如 Ev3 和 Esv3-series

在您的 AKS 叢集上安裝 Azure 容器儲存體

安裝命令會根據您是否已經有在 AKS 叢集上執行的 Azure 容器儲存體的預覽執行個體,或是否是第一次在叢集上安裝 Azure 容器儲存體,而有所不同。

將預覽安裝升級至 GA

如果您已經有在叢集上執行的 Azure 容器儲存體的預覽執行個體,建議您執行下列命令以更新至最新的正式發行 (GA) 版本。 如果您是第一次在叢集上安裝 Azure 容器儲存體,請繼續安裝 Azure 容器儲存體並建立存放集區。 您也可以在特定的節點集區上安裝 Azure 容器儲存體

az k8s-extension update --cluster-type managedClusters --cluster-name <cluster-name> --resource-group <resource-group> --name azurecontainerstorage --version 1.1.0 --auto-upgrade false --release-train stable

切記以您自己的值取代 <cluster-name><resource-group>

安裝 Azure 容器儲存體並建立存放集區

安裝之前,請確定您的 AKS 叢集符合 VM 需求

執行下列命令,在叢集上安裝 Azure 容器儲存體並建立存放集區。 將<cluster-name><resource-group> 取代為您自己的值。 以 azureDiskephemeralDiskelasticSan 取代 <storage-pool-type>。 如果您選擇 ephemeralDisk,您也可以指定 --storage-pool-option,而且值可以是 NVMeTemp

執行此命令會在系統節點集區上啟用 Azure 容器儲存體,其預設名稱為 nodepool1*。 如果您要在其他節點集區上啟用它,請參閱在特定節點集區上安裝 Azure 容器儲存體。 如果您要指定其他參數,請參閱 Azure 容器儲存體存放集區參數

*如果有任何具有 acstor.azure.com/io-engine:acstor 標籤的現有節點集區,則預設會在該處安裝 Azure Container Storage。 否則,這會安裝在系統節點集區上。

重要

如果您使用 Azure 入口網站建立 AKS 叢集:叢集可能會有使用者節點集區和系統/代理程式節點集區。 不過,如果您的叢集只包含系統節點集區,這是使用 Azure 入口網站建立的測試/開發叢集的情況,您必須先新增使用者節點集區,然後為其加上標籤。 這是因為當您使用 Azure 入口網站建立 AKS 叢集時,會將污點 CriticalAddOnsOnly 新增至系統/代理程式節點集區,這會封鎖在系統節點集區上安裝 Azure 容器儲存體。 使用 Azure CLI 建立 AKS 叢集時,不會新增此污點。

az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-pool-type>

部署時間需要 10-15 分鐘。 完成時,您將會安裝已安裝 Azure 容器儲存體的 AKS 叢集、已啟用所選存放集區的元件,以及預設存放集區。 如果您要開啟其他存放集區類型來建立其他存放集區,請參閱啟用其他存放集區類型

重要

如果您將 Azure 彈性 SAN 指定為存放集區的支援儲存體,而且您沒有指派給 Azure 訂用帳戶的 Azure 容器儲存體擁有者 (部分機器翻譯) 角色或 Azure 容器儲存體參與者 (部分機器翻譯) 角色,則安裝 Azure 容器儲存體將會失敗,而且不會建立存放集區。 如果您嘗試在沒有這些角色的情況下啟用 Azure 彈性 SAN 做為其他存放集區類型,則先前的安裝和存放集區將不受影響,且不會建立彈性 SAN 存放集區。

在特定節點集區上安裝 Azure 容器儲存體

如果您想要在特定節點集區上安裝 Azure 容器儲存體,請遵循這些指示。 節點集區必須包含至少三個 Linux VM。 如果您使用本機 NVMe 作為存放集區,則節點集區必須各至少包含四個 Linux VM。

  1. 執行下列命令以檢視可用的節點集區清單。 將<resource-group><cluster-name> 取代為您自己的值。

    az aks nodepool list --resource-group <resource-group> --cluster-name <cluster-name>
    
  2. 執行下列命令,在特定節點集區上安裝 Azure 容器儲存體。 將<cluster-name><resource-group> 取代為您自己的值。 以 azureDiskephemeralDiskelasticSan 取代 <storage-pool-type>。 如果您選擇 ephemeralDisk,您也可以指定 --storage-pool-option,而且值可以是 NVMeTemp

    az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-pool-type> --azure-container-storage-nodepools <comma separated values of nodepool names>
    

啟用其他存放集區類型

如果您想要啟用原本未在安裝 Azure 容器儲存體期間啟用的存放集區類型,請執行下列命令。 將<cluster-name><resource-group> 取代為您自己的值。 針對 <storage-pool-type>,指定 azureDiskephemeralDiskelasticSan

如果您想要搭配此命令指定其他存放集區參數,請參閱此資料表

az aks update -n <cluster-name> -g <resource-group> --enable-azure-container-storage <storage-pool-type>

如果您啟用的新存放集區類型佔用的資源超過已啟用的存放集區類型,資源耗用量會變更為最大數量。

提示

如果您已將新的節點集區新增至叢集,而且想要在該節點集區上執行 Azure 容器儲存體,您可以在執行 az aks update 命令時指定具有 --azure-container-storage-nodepools <nodepool-name> 的節點集區。

顯示可用的存放集區

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

kubectl get sp -n acstor

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

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

如果 Message 未表示 StoragePool is ready,則您的存放集區仍在建立或遇到問題。 請參閱疑難排解 Azure 容器儲存體

停用存放集區類型

如果您不再使用特定的存放集區類型,而且想要將其停用以釋放節點集區中的資源,請執行下列命令。 將<cluster-name><resource-group> 取代為您自己的值。 針對 <storage-pool-type>,指定 azureDiskephemeralDiskelasticSan

az aks update -n <cluster-name> -g <resource-group> --disable-azure-container-storage <storage-pool-type>

注意

如果您有嘗試停用之類型的現有存放集區,將不會停用存放集區類型。

後續步驟

若要建立磁碟區,請選取您所選備份儲存體類型的連結。