3.7. セカンダリーネットワークでの IP アドレス割り当ての設定
Pod がセカンダリーネットワークに接続できるように、セカンダリーネットワークの IP アドレスの割り当てを設定できます。
3.7.1. ネットワークアタッチメントの IP アドレス割り当ての設定 リンクのコピーリンクがクリップボードにコピーされました!
セカンダリーネットワークの場合、Dynamic Host Configuration Protocol (DHCP) や静的割り当てなどのさまざまな割り当て方法をサポートする IP アドレス管理 (IPAM) CNI プラグインを使用して IP アドレスを割り当てることができます。
IP アドレスの動的割り当てを担当する DHCP IPAM CNI プラグインは、2 つの異なるコンポーネントを使用して動作します。
- CNI プラグイン:Kubernetes ネットワークスタックと統合して、IP アドレスを要求および解放できます。
- DHCP IPAM CNI Daemon: IP アドレス割り当て要求を処理するために環境内の既存の DHCP サーバーと連携する DHCP イベントのリスナー。このデーモンは、DHCP サーバー自体ではありません。
IPAM 設定で type: dhcp が必要なネットワークの場合、DHCP サーバーが以下の条件を満たしていることを確認してください。
- DHCP サーバーが環境内で利用可能かつ実行されている。
- DHCP サーバーはクラスターの外部にあり、そのサーバーがお客様の既存のネットワークインフラストラクチャーに含まれる必要があります。
- DHCP サーバーが、ノードに IP アドレスを提供するように適切に設定されている。
環境で DHCP サーバーが利用できない場合は、Whereabouts IPAM CNI プラグインの使用を検討してください。Whereabouts CNI は、外部 DHCP サーバーを必要とせずに同様の IP アドレス管理機能を提供します。
外部 DHCP サーバーが存在しない場合、または静的 IP アドレス管理が優先される場合は、Whereabouts CNI プラグインを使用します。Whereabouts プラグインには、古くなった IP アドレスの割り当てを管理するためのリコンサイラーデーモンが含まれています。
別のデーモンである DHCP IPAM CNI デーモンを組み込むことで、コンテナーの有効期間全体で DHCP リースが定期的に更新されるようにします。DHCP IPAM CNI デーモンをデプロイするには、セカンダリーネットワーク設定の一部としてこのデーモンのデプロイをトリガーするように Cluster Network Operator (CNO) 設定を変更します。
3.7.1.1. 静的 IP アドレス割り当ての設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の表は、静的 IP アドレスの割り当ての設定を説明しています。
| フィールド | 型 | 説明 |
|---|---|---|
|
|
|
IPAM のアドレスタイプ。値 |
|
|
| 仮想インターフェイスに割り当てる IP アドレスを指定するオブジェクトの配列。IPv4 と IPv6 の IP アドレスの両方がサポートされます。 |
|
|
| Pod 内で設定するルートを指定するオブジェクトの配列です。 |
|
|
| オプション: DNS の設定を指定するオブジェクトの配列です。 |
addresses の配列には、以下のフィールドのあるオブジェクトが必要です。
| フィールド | 型 | 説明 |
|---|---|---|
|
|
|
指定する IP アドレスおよびネットワーク接頭辞。たとえば、 |
|
|
| Egress ネットワークトラフィックをルーティングするデフォルトのゲートウェイ。 |
| フィールド | 型 | 説明 |
|---|---|---|
|
|
|
CIDR 形式の IP アドレス範囲 ( |
|
|
| ネットワークトラフィックをルーティングするゲートウェイ。 |
| フィールド | 型 | 説明 |
|---|---|---|
|
|
| DNS クエリーが送信される 1 つ以上の IP アドレスの配列。 |
|
|
|
ホスト名に追加するデフォルトのドメイン。たとえば、ドメインが |
|
|
|
DNS ルックアップのクエリー時に非修飾ホスト名に追加されるドメイン名の配列 (例: |
静的 IP アドレス割り当ての設定例
3.7.1.2. 動的 IP アドレス (DHCP) 割り当ての設定 リンクのコピーリンクがクリップボードにコピーされました!
Pod の作成時に、Pod は元の DHCP リースを取得します。リースは、クラスターで実行している最小限の DHCP サーバーデプロイメントで定期的に更新する必要があります。
イーサネットネットワークアタッチメントの場合、SR-IOV Network Operator は DHCP サーバーデプロイメントを作成しません。Cluster Network Operator は最小限の DHCP サーバーデプロイメントを作成します。
DHCP サーバーのデプロイメントをトリガーするには、以下の例にあるように Cluster Network Operator 設定を編集して shim ネットワーク割り当てを作成する必要があります。
shim ネットワーク割り当ての定義例
ここでは、以下のようになります。
type- クラスターの動的 IP アドレスの割り当てを指定します。
3.7.1.3. Whereabouts を使用した動的 IP アドレス割り当ての設定 リンクのコピーリンクがクリップボードにコピーされました!
Whereabouts CNI プラグインは、DHCP サーバーを使用せずに、セカンダリーネットワークに IP アドレスを動的に割り当てる場合に役立ちます。
また、Whereabouts CNI プラグインは、重複する IP アドレス範囲と、別々の NetworkAttachmentDefinition CRD 内で同じ CIDR 範囲を複数回設定することをサポートしています。これにより、マルチテナント環境での柔軟性と管理機能が向上します。
3.7.1.3.1. 動的 IP アドレス設定パラメーター リンクのコピーリンクがクリップボードにコピーされました!
以下の表は、Whereabouts を使用した動的 IP アドレス割り当ての設定オブジェクトを説明しています。
| フィールド | 型 | 説明 |
|---|---|---|
|
|
|
IPAM のアドレスタイプ。値 |
|
|
| IP アドレスと範囲を CIDR 表記。IP アドレスは、この範囲内のアドレスから割り当てられます。 |
|
|
| オプション: CIDR 表記の IP アドレスと範囲 (0 個以上) のリスト。除外されたアドレス範囲内の IP アドレスは割り当てられません。 |
|
|
| オプション: 同じ範囲の IP アドレスを共有する場合でも、Pod の各グループまたはドメインが独自の IP アドレスセットを取得するようにします。このフィールドを設定することは、特にマルチテナント環境でネットワークを分離して整理しておく場合に重要です。 |
3.7.1.3.2. IP アドレス範囲を除外する Whereabouts による動的 IP アドレス割り当て設定 リンクのコピーリンクがクリップボードにコピーされました!
次の例は、Whereabouts を使用する NAD ファイル内の動的アドレス割り当て設定を示しています。
特定の IP アドレス範囲を除外する Whereabouts 動的 IP アドレス割り当て
3.7.1.3.3. IP アドレス範囲が重複する場合に Whereabouts を使用した動的 IP アドレス割り当て リンクのコピーリンクがクリップボードにコピーされました!
次の例は、マルチテナントネットワークで重複する IP アドレスの範囲を使用する、動的な IP アドレスの割り当てを示しています。
NetworkAttachmentDefinition 1
ここでは、以下のようになります。
network_name-
オプションのパラメーター。設定されている場合、
NetworkAttachmentDefinition 2のnetwork_nameと一致する必要があります。
NetworkAttachmentDefinition 2
ここでは、以下のようになります。
network_name-
オプションのパラメーター。設定されている場合、
NetworkAttachmentDefinition 1のnetwork_nameと一致する必要があります。
3.7.1.4. whereabouts-reconciler デーモンセットの作成 リンクのコピーリンクがクリップボードにコピーされました!
Whereabouts reconciler は、Whereabouts IP アドレス管理 (IPAM) ソリューションを使用して、クラスター内の Pod の動的 IP アドレス割り当てを管理します。Whereabouts リコンサイラーは、各 Pod が指定された IP アドレス範囲から一意の IP アドレスを取得するようにします。Whereabouts reconciler は、Pod が削除またはスケールダウンされた場合の IP アドレスのリリースも処理します。
動的 IP アドレスの割り当てには、NetworkAttachmentDefinition カスタムリソース定義 (CRD) を使用することもできます。
whereabouts-reconciler デーモンセットは、Cluster Network Operator を通じてセカンダリーネットワークを設定するときに自動的に作成されます。whereabouts-reconciler DaemonSet は、YAML マニフェストからセカンダリーネットワークを設定するときに自動的に作成されません。
whereabouts-reconciler デーモンセットのデプロイをトリガーするには、Cluster Network Operator のカスタムリソース (CR) ファイルを編集して、whereabouts-shim ネットワーク割り当てを手動で作成する必要があります。
手順
以下のコマンドを実行して、
Network.operator.openshift.ioCR を編集します。oc edit network.operator.openshift.io cluster
$ oc edit network.operator.openshift.io clusterCopy to Clipboard Copied! Toggle word wrap Toggle overflow このサンプル YAML に示す
additionalNetworksセクションを、CR のspec定義内に含めます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - ファイルを保存し、テキストエディターを編集します。
次のコマンドを実行して、
whereabouts-reconcilerデーモンセットが正常にデプロイされたことを確認します。oc get all -n openshift-multus | grep whereabouts-reconciler
$ oc get all -n openshift-multus | grep whereabouts-reconcilerCopy to Clipboard Copied! Toggle word wrap Toggle overflow pod/whereabouts-reconciler-jnp6g 1/1 Running 0 6s pod/whereabouts-reconciler-k76gg 1/1 Running 0 6s daemonset.apps/whereabouts-reconciler 6 6 6 6 6 kubernetes.io/os=linux 6s
pod/whereabouts-reconciler-jnp6g 1/1 Running 0 6s pod/whereabouts-reconciler-k76gg 1/1 Running 0 6s daemonset.apps/whereabouts-reconciler 6 6 6 6 6 kubernetes.io/os=linux 6sCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7.1.5. Whereabouts IP リコンサイラーのスケジュールの設定 リンクのコピーリンクがクリップボードにコピーされました!
Whereabouts IPAM CNI プラグインは、IP アドレスリコンサイラーを毎日実行します。このプロセスは、IP アドレスを使い切られる可能性のあるストレンドされた IP アドレスの割り当てをクリーンアップし、新規 Pod に割り当てられた IP アドレスを取得できないようにします。
IP リコンサイラーを実行する頻度を変更するには、次の手順を使用します。
前提条件
-
OpenShift CLI (
oc) がインストールされている。 -
cluster-adminロールを持つユーザーとしてクラスターにアクセスできる。 -
whereabouts-reconcilerデーモンセットがデプロイされており、whereabouts-reconcilerPod が起動して実行されている。
手順
次のコマンドを実行して、IP リコンサイラー用の特定の cron 式を使用し、
openshift-multusnamespace にwhereabouts-configという名前のConfigMapオブジェクトを作成します。oc create configmap whereabouts-config -n openshift-multus --from-literal=reconciler_cron_expression="*/15 * * * *"
$ oc create configmap whereabouts-config -n openshift-multus --from-literal=reconciler_cron_expression="*/15 * * * *"Copy to Clipboard Copied! Toggle word wrap Toggle overflow この cron 式は、IP リコンサイラーを 15 分ごとに実行するよう指定します。この式は固有の要件に基づいて調整してください。
注記whereabouts-reconcilerデーモンセットは、5 つのアスタリスクを含む cron 式パターンのみを使用できます。Red Hat は、秒を示すために使用される 6 番目のアスタリスクをサポートしていません。次のコマンドを実行して、
openshift-multusnamespace 内のwhereabouts-reconcilerデーモンセットおよび Pod に関連するリソースに関する情報を取得します。oc get all -n openshift-multus | grep whereabouts-reconciler
$ oc get all -n openshift-multus | grep whereabouts-reconcilerCopy to Clipboard Copied! Toggle word wrap Toggle overflow pod/whereabouts-reconciler-2p7hw 1/1 Running 0 4m14s pod/whereabouts-reconciler-76jk7 1/1 Running 0 4m14s daemonset.apps/whereabouts-reconciler 6 6 6 6 6 kubernetes.io/os=linux 4m16s
pod/whereabouts-reconciler-2p7hw 1/1 Running 0 4m14s pod/whereabouts-reconciler-76jk7 1/1 Running 0 4m14s daemonset.apps/whereabouts-reconciler 6 6 6 6 6 kubernetes.io/os=linux 4m16sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを実行して、設定した間隔で
whereabouts-reconcilerPod が IP リコンサイラーを実行していることを確認します。oc -n openshift-multus logs whereabouts-reconciler-2p7hw
$ oc -n openshift-multus logs whereabouts-reconciler-2p7hwCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7.1.6. Whereabouts IPAM CNI プラグインの Fast IPAM 設定 リンクのコピーリンクがクリップボードにコピーされました!
Wherabouts は、クラスター全体のレベルで IP アドレスを割り当てる IP アドレス管理 (IPAM) Container Network Interface (CNI) プラグインです。Whereabouts には Dynamic Host Configuration Protocol (DHCP) サーバーは必要ありません。
以下は、一般的な Wherabouts ワークフローを説明しています。
-
Whereabouts は、
192.168.2.0/24などの Classless Inter-Domain Routing (CIDR) 表記のアドレス範囲を取得し、その範囲内で192.168.2.1から192.168.2.254などの IP アドレスを割り当てます。 - Whereabouts は、CIDR 範囲内の最小値のアドレスである IP アドレスを Pod に割り当て、その Pod の有効期間中、データストア内の IP アドレスを追跡します。
- Pod が削除されると、Whereabouts がアドレスを Pod から解放するため、アドレスは割り当て可能になります。
Whereabouts のパフォーマンスを向上させるには、特にクラスター内のノードが大量の Pod を実行している場合は、Fast IPAM 機能を有効化します。
Fast IPAM はテクノロジープレビュー機能です。テクノロジープレビュー機能は、Red Hat 製品のサービスレベルアグリーメント (SLA) の対象外であり、機能的に完全ではないことがあります。Red Hat は、実稼働環境でこれらを使用することを推奨していません。テクノロジープレビュー機能は、最新の製品機能をいち早く提供して、開発段階で機能のテストを行い、フィードバックを提供していただくことを目的としています。
Red Hat のテクノロジープレビュー機能のサポート範囲に関する詳細は、テクノロジープレビュー機能のサポート範囲 を参照してください。
Fast IPAM 機能は、Whereabouts Controller によって管理される nodeslicepools を使用して、ノードの IP 割り当てを最適化します。
前提条件
-
Cluster Network Operator (CNO) が Whereabouts Controller をデプロイできるように、
whereabouts-shim設定をNetwork.operator.openshift.ioカスタムリソース (CR) に追加している。「Whereabouts リコンサイラーデーモンセットの作成」を参照してください。 -
Fast IPAM 機能が機能するには、
NetworkAttachmentDefinition(NAD)と Pod が同じopenshift-multusnamespace に存在することを確認します。
手順
次のコマンドを入力して、Whereabouts Controller が実行されていることを確認します。
oc get pods -n openshift-multus | grep controller
$ oc get pods -n openshift-multus | grep controllerCopy to Clipboard Copied! Toggle word wrap Toggle overflow multus-admission-controller-d89bc96f-gbf7s 2/2 Running 0 6h3m ...
multus-admission-controller-d89bc96f-gbf7s 2/2 Running 0 6h3m ...Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要Whereabouts Controller が実行されていない場合、Fast IPAM は機能しません。
クラスターの NAD ファイルを作成し、以下の設定例のように、Fast IPAM の詳細をファイルに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
namespace- CNO が NAD をデプロイする namespace。
name- Whereabouts IPAM CNI プラグインの名前。
type-
whereaboutsなど、IPAM CNI プラグインのタイプ。 range- Whereabouts IPAM CNI プラグインが Pod に IP アドレスを割り当てるために使用する IP プールの IP アドレス範囲。
node_slice_size- 各ノードで使用できる IP アドレスのスライスサイズを設定します。
Whereabouts IPAM CNI プラグインのアノテーションの詳細を Pod の YAML ファイルに追加します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
name- Pod の名前。
k8s.v1.cni.cncf.io/networks-
openshift-multusnamespace に存在する Whereabouts IPAM CNI プラグイン名を参照するアノテーションの詳細。 - name- Pod のコンテナーの名前。
command- コンテナーのエントリーポイントを定義し、Whereabouts IPAM CNI プラグインでコンテナーの動作を制御します。
クラスター内で実行されているノード上に存在する Pod に NAD ファイル設定を適用します。
oc create -f <NAD_file_name>.yaml
$ oc create -f <NAD_file_name>.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
検証
次のコマンドを入力して、Pod の IP アドレスの詳細を表示します。
oc describe pod <pod_name>
$ oc describe pod <pod_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 次のコマンドを入力して、Pod にアクセスし、そのインターフェイスを確認します。
oc exec <pod_name> -- ip a
$ oc exec <pod_name> -- ip aCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
inet: Pod は予想通りにnet1 IP アドレスに割り当てられます。1インターフェイスの 192.168.2.次のコマンドを入力して、
openshift-multusnamespace にノードセレクタープールが存在することを確認します。予想される出力には、nodeslicepool などのノードセレクタープールの名前や、作成期間が 32m などの分単位で表示されます。oc get nodeslicepool -n openshift-multus
$ oc get nodeslicepool -n openshift-multusCopy to Clipboard Copied! Toggle word wrap Toggle overflow
3.7.1.7. デュアルスタック IP アドレスを動的に割り当てる設定の作成 リンクのコピーリンクがクリップボードにコピーされました!
Pod が IPv4 と IPv6 アドレスの両方で通信できるように、デュアルスタック IP アドレスをセカンダリーネットワークに動的に割り当てることができます。
ipRanges パラメーターでは、以下の IP アドレスの割り当てタイプを設定できます。
- IPv4 アドレス
- IPv6 アドレス
- 複数の IP アドレスの割り当て
手順
-
typeをwhereaboutsに設定します。 以下の例のように、
ipRangesを使用して IP アドレスを割り当てます。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - セカンダリーネットワークを Pod にアタッチします。詳細は、「セカンダリーネットワークへの Pod の追加」を参照してください。
検証
次のコマンドを入力して、すべての IP アドレスが Pod のネットワーク namespace 内のネットワークインターフェイスに割り当てられていることを確認します。
$ oc exec -it <pod_name> -- ip a
$ oc exec -it <pod_name> -- ip aCopy to Clipboard Copied! Toggle word wrap Toggle overflow ここでは、以下のようになります。
<podname>- Pod の名前。