第2章 ノードポートサービス範囲の設定
OpenShift Container Platform でクラスターノードのポート要件を満たすには、インストール時にノードポートのサービス範囲を設定するか、インストール後に拡張することができます。新しい設定では、デフォルトの範囲である 30000-32768 を 維持したまま、その範囲を両側に拡張できます。
Red Hat は、デフォルトのポート範囲 30000 - 32768 以外でテストを実行していません。デフォルトのポート範囲外の範囲は、拡張されたノードポート範囲がクラスターに影響を与えないことを確認するためにテストを行ってください。特に、以下の点を確認してください。
- ホストプロセスですでに使用されているポートと重複しない
- ホストネットワーキングで設定済みの Pod ですでに使用されているポートと重複しない
範囲を拡張したところポート割り当ての問題が発生した場合は、新しいクラスターを作成し、必要な範囲を設定します。
ノードのポート範囲を拡張し、OpenShift Container Platform API サーバーとのポート競合のために OpenShift CLI (oc) が動作しなくなった場合は、新しいクラスターを作成する必要があります。
2.1. ノードのポート範囲の拡張 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform クラスターのインストール後にノードポート範囲を拡張するには、oc patch コマンドを使用して serviceNodePortRange パラメーターを更新します。範囲は左右どちらにも拡張できますが、インストール後に縮小することはできません。
Red Hat は、デフォルトのポート範囲 30000 - 32768 以外でテストを実行していません。デフォルトのポート範囲外の範囲は、拡張されたノードポート範囲がクラスターに影響を与えないことを確認するためにテストを行ってください。範囲を拡張したところポート割り当ての問題が発生した場合は、新しいクラスターを作成し、必要な範囲を設定します。
serviceNodePortRange パラメーターを拡張する場合は、パラメーターに設定する値がカーネルの一時ポート範囲 net.ipv4.ip_local_port_range と重複しないようにしてください。
OVN-Kubernetes は、送信 Pod トラフィックにおける送信元ネットワークアドレス変換 (SNAT) の送信元ポート選択に、この一時的な範囲を使用します。SNAT の送信元ポートがノードのポート番号と一致する場合、戻りトラフィックが誤ってルーティングされ、断続的な送信 TCP 接続タイムアウトが発生する可能性があります。
詳細は、関連情報 セクションの安全な sysctl と安全でない sysctl を参照してください。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-admin権限を持つユーザーとしてクラスターにログインしている。 -
クラスターインフラストラクチャーが拡張範囲内にあるポートへのアクセスを許可していることを確認している。たとえば、ノードのポート範囲を
30000-32900に拡張する場合、ファイアウォールまたはパケットフィルタリングの設定で、30000-32900のポート範囲 (両端の値を含む) を許可する必要があります。
手順
クラスターが Pod のトラフィックを管理するために使用する
network.config.openshift.ioオブジェクト内のserviceNodePortRangeパラメーターの範囲を拡張するには、次のコマンドを入力します。$ oc patch network.config.openshift.io cluster --type=merge -p \ '{ "spec": { "serviceNodePortRange": "<port_range>" } }'ここでは、以下のようになります。
<port_range>-
拡張範囲を指定します。例:
30000-32900。
ヒント次の YAML を適用してノードのポート範囲を更新することもできます。
apiVersion: config.openshift.io/v1 kind: Network metadata: name: cluster spec: serviceNodePortRange: "<port_range>" # ...出力例
network.config.openshift.io/cluster patched
検証
更新された設定がアクティブであることを確認するには、次のコマンドを入力します。更新の適用には数分かかる場合があります。
$ oc get configmaps -n openshift-kube-apiserver config \ -o jsonpath="{.data['config\.yaml']}" | \ grep -Eo '"service-node-port-range":["[[:digit:]]+-[[:digit:]]+"]'出力例
"service-node-port-range":["30000-32900"]