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.4. ネットワーク関連の問題のトラブルシューティング
7.4.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 のネットワークインターフェイスを上書きするマシン設定の例
apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: worker name: 98-nodenet-override spec: config: ignition: version: 3.1.0 storage: files: - contents: source: data:text/plain;charset=utf-8;base64,<encoded_script> mode: 0755 overwrite: true path: /usr/local/bin/override-node-ip.sh systemd: units: - contents: | [Unit] Description=Override node IP detection Wants=network-online.target Before=kubelet.service After=network-online.target [Service] Type=oneshot ExecStart=/usr/local/bin/override-node-ip.sh ExecStart=systemctl daemon-reload [Install] WantedBy=multi-user.target enabled: true name: nodenet-override.service