為什麼我在瀏覽 File Storage for VPC 時會看到「MetadataServiceNotEnabled」錯誤?

虛擬私有雲

若您在使用 File Storage for VPC 並啟用傳輸中加密 (EIT) 時,Pod 或 PVC 發生「MetadataServiceNotEnabled」錯誤,請參閱此主題以找出並解決問題原因。

當您在 File Storage for VPC 中使用傳輸中加密(EIT)時,您的 Pod 或 PVC 會因 MetadataServiceNotEnabled 錯誤而失敗。

您會在 Pod 事件或 describe 指令的輸出中看到類似以下範例的錯誤訊息:

Code: MetadataServiceNotEnabled,
Description: Failed to mount target.,
Action: Metadata service might not be enabled for worker node.
  Make sure to use IKS>=1.30 or ROKS>=4.16 cluster.

此錯誤表示 EIT 掛載程序嘗試連線至 169.254.169.254 上的實例元資料服務,但未收到任何回應。 有兩個獨立的根本原因——請同時檢查兩者。

解決此問題

請檢查以下根本原因。

根本原因 A — 叢集版本過舊

EIT 需要 ROKS 4.16 或更新版本。 在較舊的叢集中,工作負載無法存取元資料服務的端點。

請檢查當前叢集的版本,以確認您的叢集是否符合最低需求。 輸出結果顯示「Pending」或「normal」的狀態,以及「Kubernetes」的版本。

ibmcloud ks cluster get --cluster CLUSTER_ID | grep "Version"

解決方案: 將叢集升級至 ROKS 4.16 版或更新版本。

根本原因 B —「預設安全」叢集缺少元資料外發規則

對於「預設安全」叢集,除非在「kube-<clusterID>」安全群組中新增明確的出站規則,否則前往 169.254.169.254 的出站流量將被封鎖。 若無此規則,即使在受支援的叢集版本上,EIT 流程也無法連接到元資料服務。

此規則會自動新增至版本為 4.18 及之後的 ROKS 叢集中。 若使用較舊的叢集版本,請手動新增該規則。

  1. 檢查出站規則是否已存在。 如果該指令回傳的行中包含「169.254.169.254」,則表示該規則確實存在,因此這並非問題原因。

    ibmcloud is sg kube-CLUSTER_ID | grep 169.254.169.254
    
  2. 如果缺少該規則,請新增該規則。

    ibmcloud is sg-rulec kube-CLUSTER_ID outbound \
      --protocol all \
      --remote 169.254.169.254
    

    或者,您也可以透過 IBM Cloud 使用者介面,在「VPC 基礎架構」>「安全群組」>「kube-<clusterID>」>「出站規則」中新增一則規則,並設定以下值:

    元數據服務存取的外發規則值
    欄位
    通訊協定 全部
    來源類型 全部
    來源 0.0.0.0/0
    目的地 169.254.169.254
  3. 新增規則後,請重新嘗試執行發生錯誤的 Pod。 無需重新啟動節點。

若完成這兩項檢查後問題仍未解決,請透過 提交支援單 與 IBM Cloud Container Storage 團隊聯繫。