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


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

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

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

ノードネットワーク設定ポリシーを適用し、クラスター全体でノードのネットワーク設定への変更を適用することができます。正確でない設定を適用する場合、以下の例を使用して、失敗したノードネットワークポリシーのトラブルシューティングと修正を行うことができます。

この例では、Linux ブリッジポリシーが、3 つのコントロールプレーンノードと 3 つのコンピュートノードを持つサンプルクラスターに適用されます。ポリシーは正しくないインターフェイスを参照するために、適用することができません。エラーを確認するには、利用可能な NMState リソースを調べます。その後に、正しい設定でポリシーを更新できます。

手順

  1. ポリシーを作成し、これをクラスターに適用します。以下の例では、ens01 インターフェイスに単純なブリッジを作成します。

    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
    $ oc apply -f ens01-bridge-testfail.yaml

    出力例

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

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

    $ oc get nncp

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

    出力例

    NAME                    STATUS
    ens01-bridge-testfail   FailedToConfigure

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

  3. ノードのネットワーク設定の 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

  4. 失敗した enactment (実行) のいずれかを表示し、トレースバックを確認します。以下のコマンドは、出力ツール jsonpath を使用して出力をフィルターします。

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

    このコマンドは、簡潔にするために編集されている大きなトレースバックを返します。

    出力例

    error reconciling NodeNetworkConfigurationPolicy at desired state apply: , failed to execute nmstatectl set --no-commit --timeout 480: 'exit status 1' ''
    ...
    libnmstate.error.NmstateVerificationError:
    desired
    =======
    ---
    name: br1
    type: linux-bridge
    state: up
    bridge:
      options:
        group-forward-mask: 0
        mac-ageing-time: 300
        multicast-snooping: true
        stp:
          enabled: false
          forward-delay: 15
          hello-time: 2
          max-age: 20
          priority: 32768
      port:
      - name: ens01
    description: Linux bridge with the wrong port
    ipv4:
      address: []
      auto-dns: true
      auto-gateway: true
      auto-routes: true
      dhcp: true
      enabled: true
    ipv6:
      enabled: false
    mac-address: 01-23-45-67-89-AB
    mtu: 1500
    
    current
    =======
    ---
    name: br1
    type: linux-bridge
    state: up
    bridge:
      options:
        group-forward-mask: 0
        mac-ageing-time: 300
        multicast-snooping: true
        stp:
          enabled: false
          forward-delay: 15
          hello-time: 2
          max-age: 20
          priority: 32768
      port: []
    description: Linux bridge with the wrong port
    ipv4:
      address: []
      auto-dns: true
      auto-gateway: true
      auto-routes: true
      dhcp: true
      enabled: true
    ipv6:
      enabled: false
    mac-address: 01-23-45-67-89-AB
    mtu: 1500
    
    difference
    ==========
    --- desired
    +++ current
    @@ -13,8 +13,7 @@
           hello-time: 2
           max-age: 20
           priority: 32768
    -  port:
    -  - name: ens01
    +  port: []
     description: Linux bridge with the wrong port
     ipv4:
       address: []
      line 651, in _assert_interfaces_equal\n    current_state.interfaces[ifname],\nlibnmstate.error.NmstateVerificationError:

    NmstateVerificationError は、desired ポリシー設定、ノード上のポリシーの current 設定、および一致しないパラメーターを強調表示する difference を一覧表示します。この例では、portdifference に組み込まれ、これは問題がポリシーのポート設定に関連するものであることを示唆します。

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

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

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

    出力例

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

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

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

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

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

    $ oc get nncp

    出力例

    NAME                    STATUS
    ens01-bridge-testfail   SuccessfullyConfigured

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

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 を使用できます。

手順

  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.

27.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.