27.3. ノードのネットワーク設定のトラブルシューティング
ノードのネットワーク設定で問題が発生した場合には、ポリシーが自動的にロールバックされ、enactment (実行) レポートは失敗します。これには、以下のような問題が含まれます。
- ホストで設定を適用できません。
- ホストはデフォルトゲートウェイへの接続を失います。
- ホストは API サーバーへの接続を失います。
27.3.1. 正確でないノードネットワーク設定のポリシー設定のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
ノードネットワーク設定ポリシーを適用し、クラスター全体でノードのネットワーク設定への変更を適用することができます。正確でない設定を適用する場合、以下の例を使用して、失敗したノードネットワークポリシーのトラブルシューティングと修正を行うことができます。
この例では、Linux ブリッジポリシーが、3 つのコントロールプレーンノードと 3 つのコンピュートノードを持つサンプルクラスターに適用されます。ポリシーは正しくないインターフェイスを参照するために、適用することができません。エラーを確認するには、利用可能な NMState リソースを調べます。その後に、正しい設定でポリシーを更新できます。
手順
ポリシーを作成し、これをクラスターに適用します。以下の例では、
ens01
インターフェイスに単純なブリッジを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc apply -f ens01-bridge-testfail.yaml
$ oc apply -f ens01-bridge-testfail.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
nodenetworkconfigurationpolicy.nmstate.io/ens01-bridge-testfail created
nodenetworkconfigurationpolicy.nmstate.io/ens01-bridge-testfail created
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以下のコマンドを実行してポリシーのステータスを確認します。
oc get nncp
$ oc get nncp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この出力は、ポリシーが失敗したことを示しています。
出力例
NAME STATUS ens01-bridge-testfail FailedToConfigure
NAME STATUS ens01-bridge-testfail FailedToConfigure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ただし、ポリシーのステータスのみでは、すべてのノードで失敗したか、ノードのサブセットで失敗したかを確認することはできません。
ノードのネットワーク設定の enactment (実行) をリスト表示し、ポリシーがいずれかのノードで成功したかどうかを確認します。このポリシーがノードのサブセットに対してのみ失敗した場合は、問題が特定のノード設定にあることが示唆されます。このポリシーがすべてのノードで失敗した場合には、問題はポリシーに関連するものであることが示唆されます。
oc get nnce
$ oc get nnce
Copy to Clipboard Copied! Toggle word wrap Toggle overflow この出力は、ポリシーがすべてのノードで失敗したことを示しています。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 失敗した enactment (実行) のいずれかを表示し、トレースバックを確認します。以下のコマンドは、出力ツール
jsonpath
を使用して出力をフィルターします。oc get nnce compute-1.ens01-bridge-testfail -o jsonpath='{.status.conditions[?(@.type=="Failing")].message}'
$ oc get nnce compute-1.ens01-bridge-testfail -o jsonpath='{.status.conditions[?(@.type=="Failing")].message}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow このコマンドは、簡潔にするために編集されている大きなトレースバックを返します。
出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow NmstateVerificationError
は、desired
ポリシー設定、ノード上のポリシーのcurrent
設定、および一致しないパラメーターを強調表示するdifference
を一覧表示します。この例では、port
はdifference
に組み込まれ、これは問題がポリシーのポート設定に関連するものであることを示唆します。ポリシーが適切に設定されていることを確認するには、
NodeNetworkState
オブジェクトを要求して、1 つまたはすべてのノードのネットワーク設定を表示します。以下のコマンドは、control-plane-1
ノードのネットワーク設定を返します。oc get nns control-plane-1 -o yaml
$ oc get nns control-plane-1 -o yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力は、ノード上のインターフェイス名は
ens1
であるものの、失敗したポリシーがens01
を誤って使用していることを示します。出力例
- ipv4: ... name: ens1 state: up type: ethernet
- ipv4: ... name: ens1 state: up type: ethernet
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 既存のポリシーを編集してエラーを修正します。
oc edit nncp ens01-bridge-testfail
$ oc edit nncp ens01-bridge-testfail
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ... port: - name: ens1
... port: - name: ens1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ポリシーを保存して修正を適用します。
ポリシーのステータスをチェックして、更新が正常に行われたことを確認します。
oc get nncp
$ oc get nncp
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
NAME STATUS ens01-bridge-testfail SuccessfullyConfigured
NAME STATUS ens01-bridge-testfail SuccessfullyConfigured
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
更新されたポリシーは、クラスターのすべてのノードで正常に設定されました。
27.3.2. 非接続環境での DNS 接続の問題のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
非接続環境で nmstate
を設定するときに DNS 接続の問題が発生する場合は、root-servers.net
ドメインのネームサーバーのリストを解決するように DNS サーバーを設定できます。
DNS サーバーに root-servers.net
ゾーンのネームサーバー (NS) エントリーが含まれていることを確認します。DNS サーバーはクエリーをアップストリームのリゾルバーに転送する必要はありませんが、サーバーは NS クエリーに対して正しい回答を返す必要があります。
27.3.2.1. bind9 DNS 名前付きサーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
bind9
DNS サーバーをクエリーするように設定されたクラスターの場合は、少なくとも 1 つの NS レコードを含む設定ファイルに root-servers.net
ゾーンを追加できます。たとえば、この条件にすでに一致するゾーンファイルとして /var/named/named.localhost
を使用できます。
手順
次のコマンドを実行して、
/etc/named.conf
設定ファイルの最後にroot-servers.net
ゾーンを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
named
サービスを再起動します。systemctl restart named
$ systemctl restart named
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
root-servers.net
ゾーンが存在することを確認します。journalctl -u named|grep root-servers.net
$ journalctl -u named|grep root-servers.net
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Jul 03 15:16:26 rhel-8-10 bash[xxxx]: zone root-servers.net/IN: loaded serial 0 Jul 03 15:16:26 rhel-8-10 named[xxxx]: zone root-servers.net/IN: loaded serial 0
Jul 03 15:16:26 rhel-8-10 bash[xxxx]: zone root-servers.net/IN: loaded serial 0 Jul 03 15:16:26 rhel-8-10 named[xxxx]: zone root-servers.net/IN: loaded serial 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、DNS サーバーが
root-servers.net
ドメインの NS レコードを解決できることを確認します。host -t NS root-servers.net. 127.0.0.1
$ host -t NS root-servers.net. 127.0.0.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Using domain server: Name: 127.0.0.1 Address: 127.0.0.53 Aliases: root-servers.net name server root-servers.net.
Using domain server: Name: 127.0.0.1 Address: 127.0.0.53 Aliases: root-servers.net name server root-servers.net.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
27.3.2.2. dnsmasq DNS サーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
dnsmasq
を DNS サーバーとして使用している場合は、指定した DNS サーバーを使用して root-servers.net
を解決する新しい設定ファイルを作成するなどして、root-servers.net
ドメインの解決を別の DNS サーバーに委譲できます。
次のコマンドを実行して、
root-servers.net
ドメインを別の DNS サーバーに委譲する設定ファイルを作成します。echo 'server=/root-servers.net/<DNS_server_IP>'> /etc/dnsmasq.d/delegate-root-servers.net.conf
$ echo 'server=/root-servers.net/<DNS_server_IP>'> /etc/dnsmasq.d/delegate-root-servers.net.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
dnsmasq
サービスを再起動します。systemctl restart dnsmasq
$ systemctl restart dnsmasq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、
root-servers.net
ドメインが別の DNS サーバーに委譲されていることを確認します。journalctl -u dnsmasq|grep root-servers.net
$ journalctl -u dnsmasq|grep root-servers.net
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Jul 03 15:31:25 rhel-8-10 dnsmasq[1342]: using nameserver 192.168.1.1#53 for domain root-servers.net
Jul 03 15:31:25 rhel-8-10 dnsmasq[1342]: using nameserver 192.168.1.1#53 for domain root-servers.net
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、DNS サーバーが
root-servers.net
ドメインの NS レコードを解決できることを確認します。host -t NS root-servers.net. 127.0.0.1
$ host -t NS root-servers.net. 127.0.0.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 出力例
Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: root-servers.net name server root-servers.net.
Using domain server: Name: 127.0.0.1 Address: 127.0.0.1#53 Aliases: root-servers.net name server root-servers.net.
Copy to Clipboard Copied! Toggle word wrap Toggle overflow