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

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

ネットワークのヘルスチェックエラー「 NHC007 」のトラブルシューティング。

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

ID       Component   Severity   Description
NHC007   Network     Warning    One or more DNS resolvers are not reachable from certain worker nodes.

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

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

この警告は、特定のワーカーノードからのDNSトラフィックがブロックされていることを示しています。おそらく、制限的なポリシーか IaaS-level の設定が原因でしょう。

Calico HostEndpoint (HEP)および GlobalNetworkPolicy (GNP)リソース、ならびにACL、セキュリティグループ、およびアウトバウンドDNSトラフィックをブロックする可能性のあるその他のネットワークアプライアンスを確認してください。

  1. Calico HostEndpoint (HEP) リソースをレビューして、 Calico HEP をリストアップし、HEP 設定がワーカーノードインタフェースに制限を誤って適用していないか確認します。

    kubectl get hostendpoints.crd.projectcalico.org
    

    特定のHEPを記述するためのコマンド例。

    kubectl describe hostendpoints.crd.projectcalico.org <hep-name>
    
  2. Calico GlobalNetworkPolicies (GNP)を見直し、GNPをリストアップする。

    kubectl get globalnetworkpolicies.crd.projectcalico.org
    
  3. 制限的なDNSルールに関する特定のポリシーを検査する。 ポート53に影響する、またはノードラベル/セレクタに適用される egress ルールに焦点を当てる。

    kubectl get globalnetworkpolicies.crd.projectcalico.org <policy-name> -o yaml
    
  4. デバッグポッドからDNSへのアクセスをテストするには、一時的なデバッグポッドを実行し、 nodeName に問題が発生しているワーカーノードの名前を指定してください。 ここでDNSが失敗する場合、インフラレベルのブロックが原因かもしれない。

    kubectl run  -i --tty debug \
      --image=us.icr.io/armada-master/network-alpine:latest \
      --restart=Never \
      --overrides='
    {
      "apiVersion": "v1",
      "spec": {
        "nodeName": "<node-name>"
      }
    }' -- sh
    
  5. デバッグポッド内で以下のコマンドを実行してください。

    nslookup ibm.com
    
    dig ibm.com
    
  6. ACL(アクセス制御リスト)を確認してください。

    • コンソールで、 VPC > アクセス制御リストに移動し、 アウトバウンドルールが UDP ポート 53 と TCP ポート 53 の両方を許可していることを確認します。

    • CLIでは、以下のコマンドを実行してACLを検査する。

        ibmcloud is network-acls
        ```
        ```sh {: pre}
        ibmcloud is network-acl <acl-id>
        ```
    
  7. セキュリティグループルールを検査して、ワーカーノードに関連付けられているセキュリティグループを見つけ、セキュリティグループ設定をチェックするために実行します。 DNSトラフィック( UDP / TCP ポート53)をブロックするアウトバウンドルールがないことを確認する。

    ibmcloud is security-group-rules <security-group-id>
    
  8. インフラ(ネットワーク・アプライアンス、ACLなど)を見直し、 UDP および TCP ポート53 のアウトバウンド・トラフィックを許可する

  9. これらの項目を確認してもDNSに到達できない場合は、サポートに連絡してください。 サポート Case を開きます。 ケースの詳細には、関連するログファイル、エラーメッセージ、コマンド出力を必ず含めてください。