IBM Cloud Docs
ネットワーク・ステータスが NHC003 エラーを表示するのはなぜですか?

ネットワーク・ステータスが NHC003 エラーを表示するのはなぜですか?

仮想プライベート・クラウド クラシック・インフラ

ibmcloud ks cluster health issues --cluster <CLUSTER_ID> を実行してクラスタの健全性のステータスを確認すると、次の例のようなエラーが表示されます。

ID       Component   Severity   Description
NHC003   Network     Warning    Some worker nodes in the cluster can not reach container image registries to pull images.

問題の詳細を確認すると、どのワーカーノードからどのレジストリにアクセスできないかがわかります。

ibmcloud ks cluster health issue get --cluster <CLUSTER_ID> --issue NHC003

この警告は、一部のワーカーノードが Docker Hub、Quay、 IBM Cloud Container Registry などの外部コンテナレジストリーにアクセスできず、ワークロードに必要なイメージをプルできないことを意味します。

ワーカーノードがインターネットにアクセスでき、外部のコンテナレジストリーにアクセスできることを確認する。 ネットワークポリシー、セキュリティグループ、ファイアウォール設定も確認する。

  1. 影響を受けるノード上で実行されているポッドから、そのノードがレジストリにアクセスできるかどうかを確認します。 デバッグポッドを起動する。

    kubectl run  -i --tty debug \
     --image=us.icr.io/armada-master/network-alpine:latest \
     --restart=Never \
     --overrides='
    {
      "apiVersion": "v1",
      "spec": {
        "nodeName": "<node-name>"
      }
    }' -- sh
    

    次にポッド内で、コンテナレジストリにアクセスしてみる。

    wget <registry_address>
    

    または、 curl

    curl -I <registry_address>
    
  2. デバッグポッドから traceroute または ping を実行して、ワーカーノードがアウトバウンドのインターネットアクセスを持っているかどうかを確認します。

    traceroute <registry_address>
    
    ping <registry_address>
    
  3. 制限的なネットワーク・ポリシーやグローバル・ネットワーク・ポリシーがあるかどうかを確認する。

    kubectl get networkpolicies --all-namespaces
    
     kubectl get globalnetworkpolicies.crd.projectcalico.org
    

    ワーカーノードからインターネットまたは特定のレジストリドメインへのイグジットトラフィックをブロックするポリシーを探す。

  4. クラスタのセキュリティ・グループを確認し、アウトバウンド・トラフィックが許可されていることを確認します。 各ワーカーノードについて、セキュリティグループをチェックする。 HTTPS (TCPポート443)またはDNS(UDPポート53)をブロックするルールがないことを確認してください。

  5. インフラ(ネットワーク・アプライアンス、セキュリティ・グループ、ACLなど)を見直し、必要に応じてアウトバウンド・アクセスを有効にする。

  6. プライベート・コンテナ登録を使用している場合は、DNS解決と認証が機能していることを確認する。

  7. 修正プログラムの適用後、数分待ってからクラスタの健全性を再確認します。

  8. それでも問題が解決しない場合は、サポートにお問い合わせください。 サポート Case を開きます。 ケースの詳細には、関連するログファイル、エラーメッセージ、コマンド出力を必ず含めてください。