This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.7.5. ネットワーク関連の問題のトラブルシューティング
7.5.1. ネットワークインターフェイスの選択方法 リンクのコピーリンクがクリップボードにコピーされました!
ベアメタルでのインストールや、複数のネットワークインターフェイスコントローラー (NIC) でのインストールの場合に、OpenShift Container Platform が Kubernetes API サーバーとの通信に使用する NIC は、ノードの起動時に systemd で実行される nodeip-configuration.service
サービスユニットによって決定されます。このサービスは、ノード上のネットワークインターフェイスと、OpenShift Container Platform の通信用に選択された API サーバー向けに IP アドレスをホストできるサブネットで設定された最初のネットワークインターフェイスを使用して反復していきます。
nodeip-configuration.service
サービスが正しい NIC を決定すると、このサービスは /etc/systemd/system/kubelet.service.d/20-nodenet.conf
ファイルを作成します。20-nodenet.conf
ファイルは、KUBELET_NODE_IP
環境変数を、サービスが選択した IP アドレスに設定します。
kubelet サービスの起動時に、20-nodenet.conf
ファイルから環境変数の値を読み取り、IP アドレスを --node-ip
kubelet コマンドライン引数に設定します。その結果、kubelet サービスは選択した IP アドレスをノード IP アドレスとして使用します。
インストール後にハードウェアまたはネットワークを再設定する場合は、リブート後に nodeip-configuration.service
サービスは別の NIC を選択できます。oc get nodes -o wide
コマンドの出力の INTERNAL-IP
列を確認して、別の NIC が選択されていることを確認できる場合があります。
別の NIC が選択されているため、ネットワーク通信が中断されたり、誤って設定されていたりする場合は、選択プロセスを上書きする 1 つのストラテジーで、正しい IP アドレスを明示的に設定します。次のリストでは、ハイレベルの手順と考慮事項を特定します。
-
OpenShift Container Platform 通信に使用する IP アドレスを決定するシェルスクリプトを作成します。スクリプトにより、
/etc/systemd/system/kubelet.service.d/98-nodenet-override.conf
などのカスタムユニットファイルが作成されます。カスタムユニットファイル98-nodenet-override.conf
を使用してKUBELET_NODE_IP
環境変数を IP アドレスに設定します。 -
/etc/systemd/system/kubelet.service.d/20-nodenet.conf
ファイルは上書きしないでください。同じディレクトリーパス内の98-nodenet-override.conf
など、数値の高い値を使用してファイル名を指定します。これは、20-nodenet.conf
の後にカスタムユニットファイルを実行して、環境変数の値を上書きすることが目的です。 -
シェルスクリプトで base64 でエンコードされた文字列として作成し、Machine Config Operator を使用してスクリプトをファイルシステムパス (
/usr/local/bin/override-node-ip.sh
など) にデプロイします。 -
シェルスクリプトの実行後に
systemctl daemon-reload
が実行されることを確認します。最も簡単な方法として、以下の例のように、マシン設定でExecStart=systemctl daemon-reload
を指定します。
kubelet のネットワークインターフェイスを上書きするマシン設定の例
7.5.2. Open vSwitch の問題のトラブルシューティング リンクのコピーリンクがクリップボードにコピーされました!
Open vSwitch(OVS) の問題をトラブルシューティングするためには、より多くの情報を含むようにログレベルを設定する必要があるかもしれません。
ノードのログレベルを一時的に変更した場合、次の例のようにノード上のマシン設定デーモンからログメッセージを受信することがあるので注意が必要です。
E0514 12:47:17.998892 2281 daemon.go:1350] content mismatch for file /etc/systemd/system/ovs-vswitchd.service: [Unit]
E0514 12:47:17.998892 2281 daemon.go:1350] content mismatch for file /etc/systemd/system/ovs-vswitchd.service: [Unit]
不一致に関連するログメッセージを回避するには、トラブルシューティングが完了した後に、ログレベルの変更を元に戻してください。
7.5.2.1. Open vSwitch のログレベルの一時的な設定 リンクのコピーリンクがクリップボードにコピーされました!
短期間のトラブルシューティングのために、Open vSwitch(OVS) のログレベルを一時的に設定することができます。以下の手順では、ノードを再起動する必要はありません。また、ノードを再起動した場合、設定の変更は保持されません。
この手順を実行してログレベルを変更した後、ovs-vswitchd.service
のコンテンツの不一致を示すログメッセージをマシン設定デーモンから受け取ることがあります。ログメッセージが表示されないようにするには、この手順を繰り返し、ログレベルを元の値に設定してください。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc
) がインストールされている。
手順
ノードのデバッグ Pod を起動します。
oc debug node/<node_name>
$ oc debug node/<node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow /host
をデバッグシェル内の root ディレクトリーとして設定します。デバッグ Pod は、Pod 内の/host
にホストからのルートファイルシステムをマウントします。ルートディレクトリーを/host
に変更すると、ホストファイルシステムからのバイナリーを実行できます。chroot /host
# chroot /host
Copy to Clipboard Copied! Toggle word wrap Toggle overflow OVS モジュールの現在の syslog レベルを表示します。
ovs-appctl vlog/list
# ovs-appctl vlog/list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次の出力例では、syslog のログレベルが
info
に設定されています。出力例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow etc/systemd/system/ovs-vswitchd.service.d/10-ovs-vswitchd-restart.conf
ファイルでログレベルを指定します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 前述の例では、ログレベルは
dbg
に設定されています。syslog:<log_level>
をoff
、emer
、err
、warn
、info
、またはdbg
に設定することで、最後の 2 行を変更します。オフの
ログレベルでは、すべてのログメッセージが除外されます。サービスを再起動します。
systemctl daemon-reload
# systemctl daemon-reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow systemctl restart ovs-vswitchd
# systemctl restart ovs-vswitchd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.2.2. Open vSwitch のログレベルの恒久的な設定 リンクのコピーリンクがクリップボードにコピーされました!
Open vSwitch(OVS) のログレベルを長期的に変更する場合は、ログレベルを恒久的に変更することができます。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc
) がインストールされている。
手順
以下の例のような
MachineConfig
オブジェクトで、99-change-ovs-loglevel.yaml
のようなファイルを作成します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow マシン設定を適用します。
oc apply -f 99-change-ovs-loglevel.yaml
$ oc apply -f 99-change-ovs-loglevel.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
7.5.2.3. Open vSwitch のログの表示 リンクのコピーリンクがクリップボードにコピーされました!
Open vSwitch(OVS) のログを表示するには、以下の手順で行います。
前提条件
-
cluster-admin
ロールを持つユーザーとしてクラスターにアクセスできる。 -
OpenShift CLI (
oc
) がインストールされている。
手順
以下のコマンドのいずれかを実行します。
クラスター外から
oc
コマンドを使用してログを表示する。oc adm node-logs <node_name> -u ovs-vswitchd
$ oc adm node-logs <node_name> -u ovs-vswitchd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow クラスター内のノードにログオンした後にログを表示する。
journalctl -b -f -u ovs-vswitchd.service
# journalctl -b -f -u ovs-vswitchd.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ノードにログオンする 1 つの方法は、
oc debug node/<node_name>
コマンドを使用することです。