7.5. ネットワーク関連の問題のトラブルシューティング
7.5.1. ネットワークインターフェイスの選択方法
					ベアメタルでのインストールや、複数のネットワークインターフェイスコントローラー (NIC) でのインストールの場合に、OpenShift Container Platform が Kubernetes API サーバーとの通信に使用する NIC は、ノードの起動時に systemd で実行される nodeip-configuration.service サービスユニットによって決定されます。nodeip-configuration.service は、デフォルトルートに関連付けられたインターフェイスから 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 アドレスとして使用します。
				
					インストール後にハードウェアまたはネットワークが再設定された場合、またはノード IP がデフォルトルートインターフェイスから取得されないネットワークレイアウトがある場合、再起動後に nodeip-configuration.service サービスが別の NIC を選択する可能性があります。oc get nodes -o wide コマンドの出力の INTERNAL-IP 列を確認して、別の NIC が選択されていることを確認できる場合があります。
				
					別の NIC が選択されているためにネットワーク通信が中断または誤って設定されている場合、次のエラーが表示されることがあります: EtcdCertSignerControllerDegraded。NODEIP_HINT 変数を含むヒントファイルを作成して、デフォルトの IP 選択ロジックをオーバーライドできます。詳細は、オプション: デフォルトのノード IP 選択ロジックのオーバーライドを参照してください。
				
7.5.1.1. オプション: デフォルトのノード IP 選択ロジックのオーバーライド
						デフォルトの IP 選択ロジックをオーバーライドするには、NODEIP_HINT 変数を含むヒントファイルを作成して、デフォルトの IP 選択ロジックをオーバーライドします。ヒントファイルを作成すると、NODEIP_HINT 変数で指定された IP アドレスのサブネット内のインターフェイスから特定のノード IP アドレスを選択できます。
					
						たとえば、ノードに 10.0.0.10/24 のアドレスを持つ eth0 と 192.0.2.5/24 のアドレスを持つ eth1 の 2 つのインターフェイスがあり、デフォルトルートが eth0 (10.0.0.10) を指している場合、ノードの IP アドレスは通常、10.0.0.10 IP アドレスを使用します。
					
						ユーザーは、別のサブネット 192.0.2.0/24 が選択されるように、サブネット内の既知の IP (たとえば、192.0.2.1 などのサブネットゲートウェイ) を指すように NODEIP_HINT 変数を設定できます。その結果、eth1 の 192.0.2.5 IP アドレスがノードに使用されます。
					
次の手順は、デフォルトのノード IP 選択ロジックをオーバーライドする方法を示しています。
手順
- /etc/default/nodeip-configurationファイルにヒントファイルを追加します。たとえば、以下のようになります。- NODEIP_HINT=192.0.2.1 - NODEIP_HINT=192.0.2.1- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 重要- 
											192.0.2.5など、ノードの正確な IP アドレスをヒントとして使用しないでください。ノードの正確な IP アドレスを使用すると、ヒント IP アドレスを使用するノードが正しく設定できなくなります。
- ヒントファイル内の IP アドレスは、正しいサブネットを決定するためにのみ使用されます。ヒントファイルに表示されるため、トラフィックを受信しません。
 
- 
											
- 次のコマンドを実行して、 - base-64でエンコードされたコンテンツを生成します。- echo -n 'NODEIP_HINT=192.0.2.1' | base64 -w0 - $ echo -n 'NODEIP_HINT=192.0.2.1' | base64 -w0- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 出力例 - Tk9ERUlQX0hJTlQ9MTkyLjAuMCxxxx== - Tk9ERUlQX0hJTlQ9MTkyLjAuMCxxxx==- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- クラスターをデプロイする前に、 - masterロールと- workerロールの両方のマシン設定マニフェストを作成して、ヒントを有効にします。- 99-nodeip-hint-master.yaml - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- <encoded_contents>を- /etc/default/nodeip-configurationファイルの base64 でエンコードされたコンテンツに置き換えます (例:- Tk9ERUlQX0hJTlQ9MTkyLjAuMCxxxx==)。コンマの後およびエンコードされたコンテンツの前にスペースを入れることはできないことに注意してください。
 - 99-nodeip-hint-worker.yaml - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- <encoded_contents>を- /etc/default/nodeip-configurationファイルの base64 でエンコードされたコンテンツに置き換えます (例:- Tk9ERUlQX0hJTlQ9MTkyLjAuMCxxxx==)。コンマの後およびエンコードされたコンテンツの前にスペースを入れることはできないことに注意してください。
 
- 
								~/clusterconfigsなど、クラスター設定を保存するディレクトリーにマニフェストを保存します。
- クラスターのデプロイ
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 行を変更します。ログレベル- offでは、すべてのログメッセージが除外されます。
- サービスを再起動します。 - 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>コマンドを使用することです。