File Storage for VPC に対して、なぜ「 MetadataServiceNotEnabled 」というエラーが表示されるのですか?

仮想プライベートクラウド

File Storage for VPC で転送中暗号化(EIT)を使用中に、Pod または PVC で「 MetadataServiceNotEnabled 」エラーが発生した場合は、このトピックを参照して原因を特定し、解決してください。

File Storage for VPC で転送中暗号化(EIT)を使用すると、ポッドまたは 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 にあるインスタンスメタデータサービスへの接続を試みたものの、応答が得られなかったことを意味します。 2つの独立した根本原因があります。両方とも確認してください。

問題の解決

以下の根本原因を確認してください。

根本原因 A — クラスタのバージョンが古すぎる

EITをご利用いただくには、ROKSバージョン 4.16 以降が必要です。 古いクラスターでは、ワークロードからメタデータサービスのエンドポイントにアクセスすることはできません。

現在のクラスタのバージョンを確認し、お使いのクラスタが最低要件を満たしているかどうかを確認してください。 出力には、「 Pending 」または「 normal 」というステータスと、 Kubernetes のバージョンが表示されます。

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

解決策: クラスタをROKSバージョン 4.16 以降にアップグレードしてください。

根本原因 B — 「Secure by Default」クラスターに、メタデータの送信ルールが設定されていない

「Secure by Default」クラスターの場合、 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 のUIで、 「VPCインフラストラクチャ」>「セキュリティグループ」>「 kube-<clusterID> 」>「アウトバウンドルール」 から、以下の値を設定してルールを追加してください:

    メタデータサービスへのアクセスに関する送信ルール値
    フィールド
    プロトコル 任意
    ソース・タイプ 任意
    ソース 0.0.0.0/0
    宛先 169.254.169.254
  3. ルールを追加した後、失敗したポッドを再試行してください。 ノードの再起動は必要ありません。

両方の確認を行っても問題が解決しない場合は、 IBM Cloud のコンテナストレージチームに サポートチケットを発行してください