30.3. ノードのネットワーク設定のトラブルシューティング


ノードのネットワーク設定で問題が発生した場合には、ポリシーが自動的にロールバックされ、enactment (実行) レポートは失敗します。これには、以下のような問題が含まれます。

  • ホストで設定を適用できません。
  • ホストはデフォルトゲートウェイへの接続を失います。
  • ホストは API サーバーへの接続を失います。

30.3.1. 正確でないノードネットワーク設定のポリシー設定のトラブルシューティング

ノードネットワーク設定ポリシーを適用し、クラスター全体でノードのネットワーク設定への変更を適用することができます。

誤った設定を適用した場合は、次の例を使用して、失敗したノードネットワークポリシーをトラブルシューティングして修正できます。この例では、3 つのコントロールプレーンノードと 3 つのコンピュートノードを持つクラスターに Linux ブリッジポリシーを適用します。ポリシーが間違ったインターフェイスを参照しているため、ポリシーは適用されません。

エラーを見つけるには、利用可能な NMState リソースを調査する必要があります。その後に、正しい設定でポリシーを更新できます。

前提条件

  • Linux システムに ens01 インターフェイスが存在しない。

手順

  1. クラスターにポリシーを作成します。次の例では、ens01 をメンバーとして持つ単純なブリッジ br1 を作成します。

    apiVersion: nmstate.io/v1
    kind: NodeNetworkConfigurationPolicy
    metadata:
      name: ens01-bridge-testfail
    spec:
      desiredState:
        interfaces:
          - name: br1
            description: Linux bridge with the wrong port
            type: linux-bridge
            state: up
            ipv4:
              dhcp: true
              enabled: true
            bridge:
              options:
                stp:
                  enabled: false
              port:
                - name: ens01
    # ...
  2. ネットワークインターフェイスにポリシーを適用します。

    $ oc apply -f ens01-bridge-testfail.yaml

    出力例

    nodenetworkconfigurationpolicy.nmstate.io/ens01-bridge-testfail created

  3. 以下のコマンドを実行してポリシーのステータスを確認します。

    $ oc get nncp

    この出力は、ポリシーが失敗したことを示しています。

    出力例

    NAME                    STATUS
    ens01-bridge-testfail   FailedToConfigure

    ポリシーのステータスのみでは、すべてのノードで失敗したか、ノードのサブセットで失敗したかを確認することはできません。

  4. ノードのネットワーク設定の enactment (実行) をリスト表示し、ポリシーがいずれかのノードで成功したかどうかを確認します。ポリシーがノードのサブセットに対してのみ失敗した場合、出力は、問題が特定のノード設定にあることを示唆します。すべてのノードでポリシーが失敗した場合、出力はポリシーに問題があることを示唆します。

    $ oc get nnce

    この出力は、ポリシーがすべてのノードで失敗したことを示しています。

    出力例

    NAME                                         STATUS
    control-plane-1.ens01-bridge-testfail        FailedToConfigure
    control-plane-2.ens01-bridge-testfail        FailedToConfigure
    control-plane-3.ens01-bridge-testfail        FailedToConfigure
    compute-1.ens01-bridge-testfail              FailedToConfigure
    compute-2.ens01-bridge-testfail              FailedToConfigure
    compute-3.ens01-bridge-testfail              FailedToConfigure

  5. 失敗した enactment の 1 つを表示します。以下のコマンドは、出力ツール jsonpath を使用して出力をフィルターします。

    $ oc get nnce compute-1.ens01-bridge-testfail -o jsonpath='{.status.conditions[?(@.type=="Failing")].message}'

    出力例

    [2024-10-10T08:40:46Z INFO  nmstatectl] Nmstate version: 2.2.37
    NmstateError: InvalidArgument: Controller interface br1 is holding unknown port ens01

    前の例は、InvalidArgument エラーからの出力で、ens01 が不明なポートであることを示しています。この例では、ポリシー設定ファイル内のポート設定を変更する必要がある場合があります。

  6. ポリシーが適切に設定されていることを確認するには、NodeNetworkState オブジェクトを要求して、1 つまたはすべてのノードのネットワーク設定を表示します。以下のコマンドは、control-plane-1 ノードのネットワーク設定を返します。

    $ oc get nns control-plane-1 -o yaml

    出力は、ノード上のインターフェイス名は ens1 であるものの、失敗したポリシーが ens01 を誤って使用していることを示します。

    出力例

       - ipv4:
    # ...
          name: ens1
          state: up
          type: ethernet

  7. 既存のポリシーを編集してエラーを修正します。

    $ oc edit nncp ens01-bridge-testfail
    # ...
              port:
                - name: ens1

    ポリシーを保存して修正を適用します。

  8. ポリシーのステータスをチェックして、更新が正常に行われたことを確認します。

    $ oc get nncp

    出力例

    NAME                    STATUS
    ens01-bridge-testfail   SuccessfullyConfigured

    更新されたポリシーは、クラスターのすべてのノードで正常に設定されました。

30.3.2. 非接続環境での DNS 接続の問題のトラブルシューティング

非接続環境で nmstate を設定するときに DNS 接続の問題が発生する場合は、ドメイン root-servers.net のネームサーバーのリストを解決するように DNS サーバーを設定できます。

重要

DNS サーバーに root-servers.net ゾーンのネームサーバー (NS) エントリーが含まれていることを確認します。DNS サーバーはクエリーをアップストリームのリゾルバーに転送する必要はありませんが、サーバーは NS クエリーに対して正しい回答を返す必要があります。

30.3.2.1. bind9 DNS 名前付きサーバーの設定

bind9 DNS サーバーを照会するように設定されたクラスターの場合は、少なくとも 1 つの NS レコードを含む設定ファイルに root-servers.net ゾーンを追加できます。たとえば、この条件にすでに一致するゾーンファイルとして /var/named/named.localhost を使用できます。

手順

  1. 次のコマンドを実行して、/etc/named.conf 設定ファイルの最後に root-servers.net ゾーンを追加します。

    $ cat >> /etc/named.conf <<EOF
    zone "root-servers.net" IN {
        	type master;
        	file "named.localhost";
    };
    EOF
  2. 次のコマンドを実行して、named サービスを再起動します。

    $ systemctl restart named
  3. 次のコマンドを実行して、root-servers.net ゾーンが存在することを確認します。

    $ journalctl -u named|grep root-servers.net

    出力例

    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

  4. 次のコマンドを実行して、DNS サーバーが root-servers.net ドメインの NS レコードを解決できることを確認します。

    $ host -t NS root-servers.net. 127.0.0.1

    出力例

    Using domain server:
    Name: 127.0.0.1
    Address: 127.0.0.53
    Aliases:
    root-servers.net name server root-servers.net.

30.3.2.2. dnsmasq DNS サーバーの設定

dnsmasq を DNS サーバーとして使用している場合は、指定した DNS サーバーを使用して root-servers.net を解決する新しい設定ファイルを作成するなどして、root-servers.net ドメインの解決を別の DNS サーバーに委任できます。

  1. 次のコマンドを実行して、ドメイン root-servers.net を別の DNS サーバーに委任する設定ファイルを作成します。

    $ echo 'server=/root-servers.net/<DNS_server_IP>'> /etc/dnsmasq.d/delegate-root-servers.net.conf
  2. 次のコマンドを実行して、dnsmasq サービスを再起動します。

    $ systemctl restart dnsmasq
  3. 次のコマンドを実行して、root-servers.net ドメインが別の DNS サーバーに委任されていることを確認します。

    $ journalctl -u dnsmasq|grep 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

  4. 次のコマンドを実行して、DNS サーバーが root-servers.net ドメインの NS レコードを解決できることを確認します。

    $ host -t NS root-servers.net. 127.0.0.1

    出力例

    Using domain server:
    Name: 127.0.0.1
    Address: 127.0.0.1#53
    Aliases:
    root-servers.net name server root-servers.net.

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.