ネットワーク・ステータスが 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トラフィックをブロックする可能性のあるその他のネットワークアプライアンスを確認してください。
-
Calico HostEndpoint (HEP) リソースをレビューして、 Calico HEP をリストアップし、HEP 設定がワーカーノードインタフェースに制限を誤って適用していないか確認します。
kubectl get hostendpoints.crd.projectcalico.org特定のHEPを記述するためのコマンド例。
kubectl describe hostendpoints.crd.projectcalico.org <hep-name> -
Calico GlobalNetworkPolicies (GNP)を見直し、GNPをリストアップする。
kubectl get globalnetworkpolicies.crd.projectcalico.org -
制限的なDNSルールに関する特定のポリシーを検査する。 ポート53に影響する、またはノードラベル/セレクタに適用される
egressルールに焦点を当てる。kubectl get globalnetworkpolicies.crd.projectcalico.org <policy-name> -o yaml -
デバッグポッドから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 -
デバッグポッド内で以下のコマンドを実行してください。
nslookup ibm.comdig ibm.com -
ACL(アクセス制御リスト)を確認してください。
-
コンソールで、 VPC > アクセス制御リストに移動し、 アウトバウンドルールが UDP ポート 53 と TCP ポート 53 の両方を許可していることを確認します。
-
CLIでは、以下のコマンドを実行してACLを検査する。
ibmcloud is network-acls ``` ```sh {: pre} ibmcloud is network-acl <acl-id> ``` -
-
セキュリティグループルールを検査して、ワーカーノードに関連付けられているセキュリティグループを見つけ、セキュリティグループ設定をチェックするために実行します。 DNSトラフィック( UDP / TCP ポート53)をブロックするアウトバウンドルールがないことを確認する。
ibmcloud is security-group-rules <security-group-id> -
インフラ(ネットワーク・アプライアンス、ACLなど)を見直し、 UDP および TCP ポート53 のアウトバウンド・トラフィックを許可する
-
これらの項目を確認してもDNSに到達できない場合は、サポートに連絡してください。 サポート Case を開きます。 ケースの詳細には、関連するログファイル、エラーメッセージ、コマンド出力を必ず含めてください。