3.7. セカンダリーネットワークでの IP アドレス割り当ての設定


次のセクションでは、セカンダリーネットワークの 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 デーモン: 環境内の既存の DHCP サーバーと連携して IP アドレス割り当て要求を処理する DHCP イベントのリスナー。このデーモン自体は DHCP サーバーでは ありません

IPAM 設定で type: dhcp を必要とするネットワークの場合は、次の点を確認してください。

  • DHCP サーバーが環境内で利用可能かつ実行されている。DHCP サーバーはクラスターの外部にあり、お客様の既存のネットワークインフラストラクチャーの一部である必要があります。
  • DHCP サーバーが、ノードに IP アドレスを提供するように適切に設定されている。

環境内で DHCP サーバーが利用可能でない場合は、代わりに Whereabouts IPAM CNI プラグインを使用することを推奨します。Whereabouts CNI は、外部 DHCP サーバーを必要とせずに同様の IP アドレス管理機能を提供します。

注記

外部 DHCP サーバーがない場合、または静的 IP アドレス管理が望ましい場合は、Whereabouts CNI プラグインを使用してください。Whereabouts プラグインには、古くなった IP アドレスの割り当てを管理するためのリコンサイラーデーモンが含まれています。

コンテナーの有効期間中、DHCP リースを定期的に更新する必要があるため、別のデーモンである DHCP IPAM CNI デーモンが必要です。DHCP IPAM CNI デーモンをデプロイするには、セカンダリーネットワーク設定の一部としてこのデーモンのデプロイをトリガーするように Cluster Network Operator (CNO) 設定を変更します。

3.7.1.1. 静的 IP アドレス割り当ての設定

以下の表は、静的 IP アドレスの割り当ての設定を説明しています。

Expand
表3.11 ipam 静的設定オブジェクト
フィールド説明

type

string

IPAM のアドレスタイプ。値 static が必要です。

addresses

array

仮想インターフェイスに割り当てる IP アドレスを指定するオブジェクトの配列。IPv4 と IPv6 の IP アドレスの両方がサポートされます。

routes

array

Pod 内で設定するルートを指定するオブジェクトの配列です。

dns

array

オプション: DNS の設定を指定するオブジェクトの配列です。

addresses の配列には、以下のフィールドのあるオブジェクトが必要です。

Expand
表3.12 ipam.addresses[] 配列
フィールド説明

address

string

指定する IP アドレスおよびネットワーク接頭辞。たとえば、10.10.21.10/24 を指定すると、セカンダリーネットワークに IP アドレスの 10.10.21.10 が割り当てられ、ネットマスクは 255.255.255.0 になります。

gateway

string

Egress ネットワークトラフィックをルーティングするデフォルトのゲートウェイ。

Expand
表3.13 ipam.routes[] 配列
フィールド説明

dst

string

CIDR 形式の IP アドレス範囲 (192.168.17.0/24、またはデフォルトルートの 0.0.0.0/0)。

gw

string

ネットワークトラフィックがルーティングされるゲートウェイ。

Expand
表3.14 ipam.dns オブジェクト
フィールド説明

nameservers

array

DNS クエリーの送信先となる 1 つ以上の IP アドレスの配列。

domain

array

ホスト名に追加するデフォルトのドメイン。たとえば、ドメインが example.com に設定されている場合、example-host の DNS ルックアップクエリーは example-host.example.com として書き換えられます。

search

array

DNS ルックアップのクエリー時に非修飾ホスト名に追加されるドメイン名の配列 (例: example-host)。

静的 IP アドレス割り当ての設定例

{
  "ipam": {
    "type": "static",
      "addresses": [
        {
          "address": "191.168.1.7/24"
        }
      ]
  }
}
Copy to Clipboard Toggle word wrap

3.7.1.2. 動的 IP アドレス (DHCP) 割り当ての設定

Pod は、作成時に元の DHCP リースを取得します。リースは、クラスターで実行している最小限の DHCP サーバーデプロイメントで定期的に更新する必要があります。

重要

イーサネットネットワークアタッチメントの場合、SR-IOV Network Operator は DHCP サーバーデプロイメントを作成しません。Cluster Network Operator は最小限の DHCP サーバーデプロイメントを作成します。

DHCP サーバーのデプロイメントをトリガーするには、以下の例にあるように Cluster Network Operator 設定を編集して shim ネットワーク割り当てを作成する必要があります。

shim ネットワーク割り当ての定義例

apiVersion: operator.openshift.io/v1
kind: Network
metadata:
  name: cluster
spec:
  additionalNetworks:
  - name: dhcp-shim
    namespace: default
    type: Raw
    rawCNIConfig: |-
      {
        "name": "dhcp-shim",
        "cniVersion": "0.3.1",
        "type": "bridge",
        "ipam": {
          "type": "dhcp"
        }
      }
  # ...
Copy to Clipboard Toggle word wrap

次の表は、DHCP による動的 IP アドレス割り当ての設定パラメーターを示しています。

Expand
表3.15 ipam DHCP 設定オブジェクト
フィールド説明

type

string

IPAM のアドレスタイプ。値 dhcp が必要です。

以下の JSON の例は、DHCP を使用した動的 IP アドレスの割り当ての設定を説明しています。

動的 IP アドレス (DHCP) 割り当ての設定例

{
  "ipam": {
    "type": "dhcp"
  }
}
Copy to Clipboard Toggle word wrap

3.7.1.3. Whereabouts を使用した動的 IP アドレス割り当ての設定

Whereabouts CNI プラグインは、DHCP サーバーを使用せずに、セカンダリーネットワークに IP アドレスを動的に割り当てる場合に役立ちます。

また、Whereabouts CNI プラグインは、重複する IP アドレス範囲と、別々の NetworkAttachmentDefinition CRD 内で同じ CIDR 範囲を複数回設定することをサポートしています。これにより、マルチテナント環境での柔軟性と管理機能が向上します。

3.7.1.3.1. 動的 IP アドレス設定パラメーター

以下の表は、Whereabouts を使用した動的 IP アドレス割り当ての設定オブジェクトを説明しています。

Expand
表3.16 ipam の whereabouts 設定パラメーター
フィールド説明

type

string

IPAM のアドレスタイプ。値 whereabouts が必要です。

range

string

IP アドレスと範囲を CIDR 表記。IP アドレスは、この範囲内のアドレスから割り当てられます。

exclude

array

オプション: CIDR 表記の IP アドレスと範囲 (0 個以上) のリスト。除外されたアドレス範囲内の IP アドレスは割り当てられません。

network_name

string

オプション: 同じ範囲の IP アドレスを共有する場合でも、Pod の各グループまたはドメインが独自の IP アドレスセットを取得するようにします。このフィールドを設定することは、特にマルチテナント環境でネットワークを分離して整理しておく場合に重要です。

3.7.1.3.2. IP アドレス範囲を除外する Whereabouts による動的 IP アドレス割り当て設定

次の例は、Whereabouts を使用する NAD ファイル内の動的アドレス割り当て設定を示しています。

特定の IP アドレス範囲を除外する Whereabouts 動的 IP アドレス割り当て

{
  "ipam": {
    "type": "whereabouts",
    "range": "192.0.2.192/27",
    "exclude": [
       "192.0.2.192/30",
       "192.0.2.196/32"
    ]
  }
}
Copy to Clipboard Toggle word wrap

3.7.1.3.3. IP アドレス範囲が重複する場合に Whereabouts を使用した動的 IP アドレス割り当て

次の例は、マルチテナントネットワークで重複する IP アドレスの範囲を使用する、動的な IP アドレスの割り当てを示しています。

NetworkAttachmentDefinition 1

{
  "ipam": {
    "type": "whereabouts",
    "range": "192.0.2.192/29",
    "network_name": "example_net_common", 
1

  }
}
Copy to Clipboard Toggle word wrap

1
オプション: 設定されている場合、NetworkAttachmentDefinition 2network_name と一致する必要があります。

NetworkAttachmentDefinition 2

{
  "ipam": {
    "type": "whereabouts",
    "range": "192.0.2.192/24",
    "network_name": "example_net_common", 
1

  }
}
Copy to Clipboard Toggle word wrap

1
オプション: 設定されている場合、NetworkAttachmentDefinition 1network_name と一致する必要があります。

3.7.1.4. whereabouts-reconciler デーモンセットの作成

Whereabouts reconciler は、Whereabouts IP アドレス管理 (IPAM) ソリューションを使用して、クラスター内の Pod の動的 IP アドレス割り当てを管理します。これにより、各 Pod が指定の IP アドレス範囲から一意の IP アドレスを確実に取得します。また、Pod が削除またはスケールダウンされた場合の IP アドレスの解放も処理します。

注記

動的 IP アドレスの割り当てには、NetworkAttachmentDefinition カスタムリソース定義 (CRD) を使用することもできます。

whereabouts-reconciler デーモンセットは、Cluster Network Operator を通じてセカンダリーネットワークを設定するときに自動的に作成されます。YAML マニフェストからセカンダリーネットワークを設定する場合、これは自動的には作成されません。

whereabouts-reconciler デーモンセットのデプロイをトリガーするには、Cluster Network Operator のカスタムリソース (CR) ファイルを編集して、whereabouts-shim ネットワーク割り当てを手動で作成する必要があります。

whereabouts-reconciler デーモンセットをデプロイするには、次の手順を使用します。

手順

  1. 以下のコマンドを実行して、Network.operator.openshift.io カスタムリソース (CR) を編集します。

    $ oc edit network.operator.openshift.io cluster
    Copy to Clipboard Toggle word wrap
  2. この例で展開されている YAML の additionalNetworks セクションを、カスタムリソース (CR) の spec 定義内に含めます。

    apiVersion: operator.openshift.io/v1
    kind: Network
    metadata:
      name: cluster
    # ...
    spec:
      additionalNetworks:
      - name: whereabouts-shim
        namespace: default
        rawCNIConfig: |-
          {
           "name": "whereabouts-shim",
           "cniVersion": "0.3.1",
           "type": "bridge",
           "ipam": {
             "type": "whereabouts"
           }
          }
        type: Raw
    # ...
    Copy to Clipboard Toggle word wrap
  3. ファイルを保存し、テキストエディターを編集します。
  4. 次のコマンドを実行して、whereabouts-reconciler デーモンセットが正常にデプロイされたことを確認します。

    $ oc get all -n openshift-multus | grep whereabouts-reconciler
    Copy to Clipboard Toggle word wrap

    出力例

    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
    Copy to Clipboard Toggle word wrap

3.7.1.5. Whereabouts IP リコンサイラーのスケジュールの設定

Whereabouts IPAM CNI プラグインは、IP リコンサイラーを毎日実行します。このプロセスは、IP が枯渇して新しい Pod に IP が割り当てられなくなる状態を避けるために、完了せずに残っている IP 割り当てをクリーンアップします。

IP リコンサイラーを実行する頻度を変更するには、次の手順を使用します。

前提条件

  • OpenShift CLI (oc) がインストールされている。
  • cluster-admin ロールを持つユーザーとしてクラスターにアクセスできる。
  • whereabouts-reconciler デーモンセットがデプロイされており、whereabouts-reconciler Pod が起動して実行されている。

手順

  1. 次のコマンドを実行して、IP リコンサイラー用の特定の cron 式を使用し、openshift-multus namespace に whereabouts-config という名前の ConfigMap オブジェクトを作成します。

    $ oc create configmap whereabouts-config -n openshift-multus --from-literal=reconciler_cron_expression="*/15 * * * *"
    Copy to Clipboard Toggle word wrap

    この cron 式は、IP リコンサイラーを 15 分ごとに実行するよう指定します。この式は固有の要件に基づいて調整してください。

    注記

    whereabouts-reconciler デーモンセットは、5 つのアスタリスクを含む cron 式パターンのみを使用できます。秒を表すために使用される 6 番目のアスタリスクは、現在サポートされていません。

  2. 次のコマンドを実行して、openshift-multus namespace 内の whereabouts-reconciler デーモンセットおよび Pod に関連するリソースに関する情報を取得します。

    $ oc get all -n openshift-multus | grep whereabouts-reconciler
    Copy to Clipboard Toggle word wrap

    出力例

    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
    Copy to Clipboard Toggle word wrap

  3. 次のコマンドを実行して、設定した間隔で whereabouts-reconciler Pod が IP リコンサイラーを実行していることを確認します。

    $ oc -n openshift-multus logs whereabouts-reconciler-2p7hw
    Copy to Clipboard Toggle word wrap

    出力例

    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/..2024_02_02_16_33_54.1375928161": CREATE
    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/..2024_02_02_16_33_54.1375928161": CHMOD
    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/..data_tmp": RENAME
    2024-02-02T16:33:54Z [verbose] using expression: */15 * * * *
    2024-02-02T16:33:54Z [verbose] configuration updated to file "/cron-schedule/..data". New cron expression: */15 * * * *
    2024-02-02T16:33:54Z [verbose] successfully updated CRON configuration id "00c2d1c9-631d-403f-bb86-73ad104a6817" - new cron expression: */15 * * * *
    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/config": CREATE
    2024-02-02T16:33:54Z [debug] event not relevant: "/cron-schedule/..2024_02_02_16_26_17.3874177937": REMOVE
    2024-02-02T16:45:00Z [verbose] starting reconciler run
    2024-02-02T16:45:00Z [debug] NewReconcileLooper - inferred connection data
    2024-02-02T16:45:00Z [debug] listing IP pools
    2024-02-02T16:45:00Z [debug] no IP addresses to cleanup
    2024-02-02T16:45:00Z [verbose] reconciler success
    Copy to Clipboard Toggle word wrap

3.7.1.6. Whereabouts IPAM CNI プラグインの Fast IPAM 設定

Wherabouts は、クラスター全体のレベルで IP アドレスを割り当てる IP アドレス管理 (IPAM) Container Network Interface (CNI) プラグインです。Whereabouts には Dynamic Host Configuration Protocol (DHCP) サーバーは必要ありません。

以下は、一般的な Wherabouts ワークフローを説明しています。

  1. Whereabouts は、192.168.2.0/24 などの Classless Inter-Domain Routing (CIDR) 表記のアドレス範囲を取得し、その範囲内で 192.168.2.1 から 192.168.2.254 などの IP アドレスを割り当てます。
  2. Whereabouts は、CIDR 範囲内の最小値のアドレスである IP アドレスを Pod に割り当て、その Pod の有効期間中、データストア内の IP アドレスを追跡します。
  3. 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-multus namesapace に存在することを確認している。

手順

  1. 次のコマンドを入力して、Whereabouts Controller が実行されていることを確認します。

    $ oc get pods -n openshift-multus | grep controller
    Copy to Clipboard Toggle word wrap

    出力例

    multus-admission-controller-d89bc96f-gbf7s   2/2     Running   0              6h3m
    ...
    Copy to Clipboard Toggle word wrap

    重要

    Whereabouts Controller が実行されていない場合、Fast IPAM は機能しません。

  2. クラスターの NAD ファイルを作成し、Fast IPAM の詳細をファイルに追加します。

    Fast IPAM 設定の NAD ファイルの例

    apiVersion: "k8s.cni.cncf.io/v1"
    kind: NetworkAttachmentDefinition
    metadata:
      name: wb-ipam
      namespace: openshift-multus 
    1
    
    spec:
      config: {
    	"cniVersion": "0.3.0",
    	"name": "wb-ipam-cni-name", 
    2
    
    	"type": "bridge",
    	"bridge": "cni0",
    	"ipam": {
      	"type": "whereabouts", 
    3
    
      	"range": "10.5.0.0/20", 
    4
    
      	"node_slice_size": "/24" 
    5
    
        }
      }
    # ...
    Copy to Clipboard Toggle word wrap

    1
    CNO が NAD をデプロイする namespace。
    2
    Whereabouts IPAM CNI プラグインの名前。
    3
    IPAM CNI プラグインのタイプ: whereabouts
    4
    Whereabouts IPAM CNI プラグインが Pod に IP アドレスを割り当てるために使用する IP プールの IP アドレス範囲。
    5
    各ノードで使用できる IP アドレスのスライスサイズを設定します。
  3. Whereabouts IPAM CNI プラグインのアノテーションの詳細を Pod の YAML ファイルに追加します。

    apiVersion: v1
    kind: Pod
    metadata:
      name: <pod_name> 
    1
    
      annotations:
      k8s.v1.cni.cncf.io/networks: openshift-multus/wb-ipam 
    2
    
    spec:
      containers:
      - name: samplepod 
    3
    
      command: ["/bin/ash", "-c", "trap : TERM INT; sleep infinity & wait"] 
    4
    
      image: alpine
    # ...
    Copy to Clipboard Toggle word wrap
    1
    Pod の名前。
    2
    openshift-multus namespace に存在する Whereabouts IPAM CNI プラグイン名を参照するアノテーションの詳細。
    3
    Pod のコンテナーの名前。
    4
    コンテナーのエントリーポイントを定義し、Whereabouts IPAM CNI プラグインでコンテナーの動作を制御します。
  4. クラスター内で実行されているノード上に存在する Pod に NAD ファイル設定を適用します。

    $ oc create -f <NAD_file_name>.yaml
    Copy to Clipboard Toggle word wrap

検証

  1. 次のコマンドを入力して、Pod の IP アドレスの詳細を表示します。

    $ oc describe pod <pod_name>
    Copy to Clipboard Toggle word wrap

    出力例

    ...
    IP:     192.168.2.0
    IPs:
      IP:   192.168.2.0
    Containers:
      samplepod:
        Container ID:   docker://<image_name>
        Image:          <app_name>:v1
        Image ID:
    ...
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを入力して、Pod にアクセスし、そのインターフェイスを確認します。

    $ oc exec <pod_name> -- ip a
    Copy to Clipboard Toggle word wrap

    出力例

    ...
    3: net1@if23: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
        link/ether 82:01:98:e5:0c:b7 brd ff:ff:ff:ff:ff:ff
        inet 192.168.2.0/24 brd 10.10.0.255 scope global net1 
    1
    
           valid_lft forever preferred_lft forever
        inet6 fe80::8001:98ff:fee5:cb7/64 scope link
           valid_lft forever preferred_lft forever
    ...
    Copy to Clipboard Toggle word wrap

    1
    予想どおり、Pod は net1 インターフェイス上の 192.168.2.1 IP アドレスに接続されます。
  3. 次のコマンドを入力して、ノードセレクタープールが openshift-multus namespace に存在することを確認します。予想される出力には、ノードセレクタープールの名前と作成期間が分単位で表示されます。

    $ oc get nodeslicepool -n openshift-multus
    Copy to Clipboard Toggle word wrap

    出力例

    NAME            AGE
    nodeslicepool   32m
    Copy to Clipboard Toggle word wrap

3.7.1.7. デュアルスタック IP アドレスを動的に割り当てる設定の作成

デュアルスタックの IP アドレスの割り当ては、ipRanges パラメーターで設定できます。

  • IPv4 アドレス
  • IPv6 アドレス
  • 複数の IP アドレスの割り当て

手順

  1. typewhereabouts に設定します。
  2. 以下の例のように、ipRanges を使用して IP アドレスを割り当てます。

    cniVersion: operator.openshift.io/v1
    kind: Network
    =metadata:
      name: cluster
    spec:
      additionalNetworks:
      - name: whereabouts-shim
        namespace: default
        type: Raw
        rawCNIConfig: |-
          {
           "name": "whereabouts-dual-stack",
           "cniVersion": "0.3.1,
           "type": "bridge",
           "ipam": {
             "type": "whereabouts",
             "ipRanges": [
                      {"range": "192.168.10.0/24"},
                      {"range": "2001:db8::/64"}
                  ]
           }
          }
    Copy to Clipboard Toggle word wrap
  3. ネットワークを Pod にアタッチします。詳細は、「セカンダリーネットワークへの Pod の追加」を参照してください。
  4. すべての IP アドレスが割り当てられていることを確認します。
  5. 以下のコマンドを実行して、IP アドレスがメタデータとして割り当てられることを確認します。

    $ oc exec -it mypod -- ip a
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat