共用方式為


疑難排解 Azure 容器儲存體

Azure 容器儲存體是雲端式磁碟區管理、部署和協調流程服務,專為容器原生建置。 使用本文針對 Azure 容器儲存體的常見問題進行疑難排解,並找出問題的解決方式。

針對安裝問題進行疑難排解

Azure 容器儲存體無法安裝

執行 az aks create 之後,您可能會看到 Azure 容器儲存體無法安裝訊息。已建立 AKS 叢集。請執行 az aks update 以及 --enable-azure-container-storage 以啟用 Azure 容器儲存體

此訊息表示未安裝 Azure 容器儲存體,但您的 AKS 叢集已正確建立。

若要安裝 Azure 容器儲存體及建立存放集區,請執行下列命令。 將<cluster-name><resource-group> 取代為您自己的值。 以 azureDiskephemeraldiskelasticSan 取代 <storage-pool-type>

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

無法將存放集區類型設定為 NVMe

如果您嘗試使用暫時性磁碟安裝 Azure 容器儲存體,特別是在虛擬機器 (VM) SKU 沒有 NVMe 磁碟機的叢集上使用本機 NVMe 時,您會收到下列錯誤訊息:無法將 --storage-pool-option 設定為 NVMe,因為節點集區全都不支援暫時性 NVMe 磁碟

若要補救,請使用具有 NVMe 磁碟機的 VM SKU 建立節點集區,然後再試一次。 請參閱儲存體最佳化 VM

針對存放集區問題進行疑難排解

若要檢查存放集區的狀態,請執行 kubectl describe sp <storage-pool-name> -n acstor。 以下是您可能會遇到的一些問題。

嘗試擴充 Azure 磁碟存放集區時發生錯誤

如果您現有的存放集區小於 4 TiB (4,096 GiB),則您只能將其擴充至 4,095 GiB。 如果您嘗試擴充的數量超過其限制,則內部 PVC 將會收到錯誤訊息「僅大小超過 4095 GB 的磁碟支援磁碟快取類型 (CachingType) 'None'」或「大小為 4096 GB (<=4096 GB) 的磁碟 'xxx' 在連結至執行中的虛擬機器時,無法調整大小至 16384 GB (>4096 GB)。 請停止您的 VM 或中斷連結磁碟,然後重試作業。」

為了避免錯誤,如果存放集區一開始小於 4 TiB (4,096 GiB),請勿嘗試將目前的存放集區擴充至 4,095 GiB。 大於 4 TB 的存放集區最多可以擴充到可用的儲存體容量上限。

僅當使用 Premium_LRSStandard_LRSStandardSSD_LRSPremium_ZRSStandardSSD_ZRS 磁碟 SKU 時,才適用此限制。

彈性 SAN 建立失敗

如果您嘗試建立彈性 SAN 存放集區,可能會看到以下訊息:Azure 彈性 SAN 建立失敗:已建立訂用帳戶的彈性 SAN 數目上限。 這表示您已達到每個訂用帳戶可在區域中部署的彈性 SAN 資源數目限制。 您可以在這裡檢查限制:彈性 SAN 延展性和效能目標。 請考慮在不再使用的訂用帳戶上刪除任何現有彈性 SAN 資源,或嘗試在不同的區域中建立存放集區。

找不到封鎖裝置

如果您看到此訊息,可能會嘗試在 VM SKU 沒有 NVMe 磁碟機的叢集上建立暫時性磁碟存放集區。

若要補救,請使用具有 NVMe 磁碟機的 VM SKU 建立節點集區,然後再試一次。 請參閱儲存體最佳化 VM

存放集區類型已啟用

如果您嘗試啟用已啟用的存放集區類型,您會收到下列訊息:無效的 --enable-azure-container-storage 值。已針對叢集中的存放集區類型 <storage-pool-type> 啟用 Azure 容器儲存體。 您可以執行 kubectl get sp -n acstor 來檢查您是否已建立任何現有的存放集區。

停用存放集區類型

透過 az aks update --disable-azure-container-storage <storage-pool-type> 停用存放集區類型或透過 az aks update --disable-azure-container-storage all 取消安裝 Azure 容器儲存體時,如果有該類型的現有存放集區,您會收到下列訊息:

停用存放集區 <storage-pool-type> 類型的 Azure 容器儲存體將會強制刪除相同類型的所有存放集區,並使用這些存放集區影響應用程式。 強制刪除存放集區也會導致耗用的儲存體資源流失。 您是否要在停用 Azure 容器儲存體之前,驗證是否使用任何 <storage-pool-type> 類型存放集區? (是/否)

如果您選取 Y,就會執行自動驗證,以確保沒有從存放集區建立的永續性磁碟區。 選取 n 會略過此驗證,並停用存放集區類型、刪除任何現有的存放集區,並可能會影響您的應用程式。

無法刪除包含 AKS 叢集的資源群組

如果您已建立彈性 SAN 存放集區,可能會無法刪除 AKS 叢集所在的資源群組。

若要解決此問題,請登入 Azure 入口網站,然後選取 [資源群組]。 找出 AKS 建立的資源群組 (資源群組名稱開頭為 MC_)。 選取資源群組中的 SAN 資源物件。 手動移除所有磁碟區和磁碟區群組。 接著,重試刪除包含 AKS 叢集的資源群組。

針對磁碟區問題進行疑難排解

Pod 擱置建立,因為暫時性磁碟區大小超過可用容量

暫時性磁碟區會配置在單一節點上。 當您設定 Pod 的暫時性磁碟區大小時,大小應該小於單一節點暫時性磁碟的可用容量。 否則,Pod 建立將會處於擱置狀態。

使用下列命令來檢查 Pod 建立是否處於擱置狀態。

$ kubectl get pods
NAME     READY   STATUS    RESTARTS   AGE
fiopod   0/1     Pending   0          17s

在此範例中,Pod fiopod 處於 Pending 狀態。

使用下列命令來檢查 Pod 是否有 persistentvolumeclaim 建立的警告事件。

$ kubectl describe pod fiopod
...
Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  40s   default-scheduler  0/3 nodes are available: waiting for ephemeral volume controller to create the persistentvolumeclaim "fiopod-ephemeralvolume". preemption: 0/3 nodes are available: 3 Preemption is not helpful for scheduling..

在此範例中,Pod 會顯示建立永續性磁碟區宣告 fiopod-ephemeralvolume 的警告事件。

使用下列命令來檢查持續性磁碟區宣告是否因為容量不足而無法佈建。

$ kubectl describe pvc fiopod-ephemeralvolume
...
  Warning  ProvisioningFailed    107s (x13 over 20m)  containerstorage.csi.azure.com_aks-nodepool1-29463073-vmss000000_xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx  failed to provision volume with StorageClass "acstor-ephemeraldisk-temp": rpc error: code = Internal desc = Operation failed: GenericOperation("error in response: status code '507 Insufficient Storage', content: 'RestJsonError { details: \"Operation failed due to insufficient resources: Not enough suitable pools available, 0/1\", message: \"SvcError :: NotEnoughResources\", kind: ResourceExhausted }'")

在此範例中,Insufficient Storage 會顯示為磁碟區佈建失敗的原因。

執行下列命令來檢查單一節點暫時性磁碟的可用容量。

$ kubectl get diskpool -n acstor
NAME                                CAPACITY      AVAILABLE     USED        RESERVED    READY   AGE
ephemeraldisk-temp-diskpool-jaxwb   75660001280   75031990272   628011008   560902144   True    21h
ephemeraldisk-temp-diskpool-wzixx   75660001280   75031990272   628011008   560902144   True    21h
ephemeraldisk-temp-diskpool-xbtlj   75660001280   75031990272   628011008   560902144   True    21h

在此範例中,單一節點的可用暫存磁碟容量為 75031990272 位元組或 69 GiB。

調整低於可用容量的磁碟區儲存大小,然後重新部署您的 Pod。 請參閱使用一般暫時性磁碟區部署 Pod

磁碟區因中繼資料存放區離線而無法連結

Azure 容器儲存體使用 etcd (這是分散式的可靠索引鍵/值存放區),用於儲存和管理磁碟區的中繼資料以支援磁碟區協調流程作業。 為了獲得高可用性和復原能力,etcd 會在這些集區中執行。 當執行的 etcd 執行個體少於兩個時,Azure 容器儲存體將停止磁碟區協調流程作業,同時仍允許對磁碟區進行資料存取。 Azure 容器儲存體會在 etcd 執行個體離線和復原時自動進行偵測。 不過,如果您在重新啟動 AKS 叢集之後發現磁碟區協調流程錯誤,則 etcd 執行個體可能無法自動復原。 請遵循本節中的指示,判斷 etcd 執行個體的健全狀態。

執行下列命令來取得 Pod 的清單。

kubectl get pods

您會看到類似以下的輸出。

NAME     READY   STATUS              RESTARTS   AGE 
fiopod   0/1     ContainerCreating   0          25m 

描述 Pod:

kubectl describe pod fiopod

一般而言,如果中繼資料存放區離線,則您會看到磁碟區失敗訊息。 在此範例中,fiopod 處於 ContainerCreating 狀態,而 FailedAttachVolume 警告表示建立因磁碟區連結失敗而擱置。

Name:             fiopod 

Events: 

Type     Reason              Age                 From                     Message 

----     ------              ----                ----                     ------- 

Normal   Scheduled           25m                 default-scheduler        Successfully assigned default/fiopod to aks-nodepool1-xxxxxxxx-vmss000009

Warning  FailedAttachVolume  3m8s (x6 over 23m)  attachdetach-controller  AttachVolume.Attach failed for volume "pvc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" : timed out waiting for external-attacher of containerstorage.csi.azure.com CSI driver to attach volume xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

您也可以執行下列命令以檢查 etcd 執行個體的狀態:

kubectl get pods -n acstor | grep "^etcd"

您應該看到類似以下的輸出,其中所有執行個體都處於執行中狀態:

etcd-azurecontainerstorage-bn89qvzvzv                            1/1     Running   0               4d19h
etcd-azurecontainerstorage-phf92lmqml                            1/1     Running   0               4d19h
etcd-azurecontainerstorage-xznvwcgq4p                            1/1     Running   0               4d19h

如果所顯示執行中狀態的執行個體少於兩個,則您可以得出結論,磁碟區因中繼資料存放區離線而無法連結,因此自動復原未成功。 若是如此,請向 Azure 支援提出支援票證。

另請參閱