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


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

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

11.3.1. 正確でない NodeNetworkConfigurationPolicy 設定のトラブルシューティング

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

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

手順

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

    apiVersion: nmstate.io/v1alpha1
    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. 以下のコマンドを実行して Policy のステータスを確認します。

    $ oc get nncp

    この出力は、Policy が失敗したことを示しています。

    出力例

    NAME                    STATUS
    ens01-bridge-testfail   FailedToConfigure

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

  3. Enactment を一覧表示し、Policy がいずれかのノードで成功したかどうかを確認します。Policy がサブセットに対してのみ失敗した場合は、問題は特定のノード設定にあることにあることが示唆されます。Policy がすべてのノードで失敗した場合は、問題は Policy に関連したものであることが示唆されます。

    $ oc get nnce

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

    出力例

    NAME                                   STATUS
    master-1.ens01-bridge-testfail         FailedToConfigure
    master-2.ens01-bridge-testfail         FailedToConfigure
    master-3.ens01-bridge-testfail         FailedToConfigure
    worker-1.ens01-bridge-testfail         FailedToConfigure
    worker-2.ens01-bridge-testfail         FailedToConfigure
    worker-3.ens01-bridge-testfail         FailedToConfigure

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

    $ oc get nnce worker-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 Policy 設定、ノード上の Policy の current 設定、および一致しないパラメーターを強調表示する difference を一覧表示します。この例では、portdifference に組み込まれ、これは問題が Policy のポート設定に関連するものであることを示唆します。

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

    $ oc get nns master-1 -o yaml

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

    出力例

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

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

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

    Policy を保存して修正を適用します。

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

    $ oc get nncp

    出力例

    NAME                    STATUS
    ens01-bridge-testfail   SuccessfullyConfigured

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

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.