14.2. ホステッドクラスター向けに内部 OVN IPv4 サブネットを設定する


ホステッドクラスターでは、ルーティングの競合を回避したり、ネットワークアーキテクチャーをカスタマイズしたり、仮想プライベートクラウド (VPC) ピアリングを有効にしたりするために、内部 OVN サブネットを設定できます。

CIDR の競合を避ける
Red Hat OpenShift Service on AWS クラスターをホストする VPC を、デフォルトの OVN 内部サブネットである 100.88.0.0/16 および 100.64.0.0/16 を使用する他の VPC に接続します。
ネットワークアーキテクチャーをカスタマイズする
社内ネットワークポリシーに合わせて、内部 OVN サブネットを設定してください。
VPC ピアリングを有効にする
デフォルトのサブネットがピアリングされたネットワークと競合する環境に、ホステッドクラスターをデプロイします。

OVN 内部サブネットを設定するには、OVN-Kubernetes 内部サブネット設定オプションを 2 つ公開します。

internalJoinSubnet
OVN-Kubernetes がネットワーク参加に使用する内部サブネット (デフォルト: 100.64.0.0/16)
internalTransitSwitchSubnet
OVN インターコネクトアーキテクチャーにおける分散トランジットスイッチに使用される内部サブネット (デフォルト: 100.88.0.0/16)

既存のホステッドクラスター内で内部 OVN サブネットを設定することも、ホステッドクラスターを作成する際にサブネットを設定することもできます。

前提条件

  • ホステッドクラスターのバージョンは、OpenShift Container Platform 4.20 以降である必要があります。
  • ネットワークタイプについては、ホステッドクラスターは networkType: OVNKubernetes を使用する必要があります。
  • カスタムサブネットは、以下のサブネットと重複してはなりません。

    • 機械 CIDR
    • サービス CIDR
    • クラスターネットワーク CIDR
    • インフラストラクチャー内のその他のネットワーク

手順

  • ホステッドクラスターを作成する際に内部 OVN サブネットを設定するには、ホステッドクラスターの設定ファイルに次のセクションを含めます。

    apiVersion: hypershift.openshift.io/v1beta1
    kind: HostedCluster
    metadata:
      name: <hosted_cluster_name>
      namespace: <hosted_control_plane_namespace>
    spec:
      networking:
        networkType: OVNKubernetes
        machineCIDR: 10.0.0.0/16
        serviceCIDR: 172.30.0.0/16
        clusterNetwork:
        - cidr: 10.128.0.0/14
      operatorConfiguration:
        clusterNetworkOperator:
          ovnKubernetesConfig:
            ipv4:
              internalJoinSubnet: "100.99.0.0/16"
              internalTransitSwitchSubnet: "100.69.0.0/16"

    ここでは、以下のようになります。

    metadata
    ホステッドクラスター名前空間と Hosted Control Plane 名前空間の名前を指定します。
    spec.operatorConfiguration.clusterNetworkOperator.ovnKubernetesConfig.ipv4
    使用するサブネットを指定します。このセクションのサブネットフィールドは両方とも、192.168.1.0/24 のような有効な IPv4 CIDR 表記でなければなりません。接頭辞の範囲は /0 から /30 までです (両端を含む)。最初のオクテットは 0 であってはならず、文字列の長さは 9-18 文字でなければなりません。サブネットフィールドには同じ値を使用できません。サブネットは、クラスター内のノードごとに 1 つの IP アドレスを格納できる十分な大きさでなければなりません。サブネットのサイズを計画する際は、将来のクラスターの拡張性を考慮してください。これらのフィールドを省略した場合、internalJoinSubnet フィールドのデフォルト値は 100.64.0.0/16 となり、internalTransitSwitchSubnet フィールドのデフォルト値は 100.88.0.0/16 となります。

    ホステッドクラスターの作成に関する詳細は、CLI を使用したホステッドクラスターの作成を参照してください。

  • 既存のホステッドクラスターで内部 OVN サブネットを設定するには、次のコマンドを入力します。

    重要

    既存のホステッドクラスターにこの変更を加えると、ovnkube-node DaemonSet が展開され、コンピュートノード上の OVN コンポーネントが再起動されます。この処理中、一時的にネットワーク接続が途切れる場合があります。

    $ oc patch hostedcluster <hosted_cluster_name> \
      -n <hosted_control_plane_namespace> \
      --type=merge \
      -p '{
        "spec": {
          "operatorConfiguration": {
            "clusterNetworkOperator": {
              "ovnKubernetesConfig": {
                "ipv4": {
                  "internalJoinSubnet": "100.99.0.0/16",
                  "internalTransitSwitchSubnet": "100.69.0.0/16"
                }
              }
            }
          }
        }
      }'

    ここでは、以下のようになります。

    metadata
    ホステッドクラスター名前空間と Hosted Control Plane 名前空間の名前を指定します。
    spec.operatorConfiguration.clusterNetworkOperator.ovnKubernetesConfig.ipv4
    使用するサブネットを指定します。このセクションのサブネットフィールドは両方とも、192.168.1.0/24 のような有効な IPv4 CIDR 表記でなければなりません。接頭辞の範囲は /0 から /30 までです (両端を含む)。最初のオクテットは 0 であってはならず、文字列の長さは 9-18 文字でなければなりません。サブネットフィールドには同じ値を使用できません。サブネットは、クラスター内のノードごとに 1 つの IP アドレスを格納できる十分な大きさでなければなりません。サブネットのサイズを計画する際は、将来のクラスターの拡張性を考慮してください。これらのフィールドを省略した場合、internalJoinSubnet フィールドのデフォルト値は 100.64.0.0/16 となり、internalTransitSwitchSubnet フィールドのデフォルト値は 100.88.0.0/16 となります。

検証

  1. ホストされている設定が正しいことを確認するには、次のコマンドを入力してください。

    $ oc get hostedcluster <hosted_cluster_name> -n <hosted_control_plane_namespace> \
      -o jsonpath='{.spec.operatorConfiguration.clusterNetworkOperator.ovnKubernetesConfig}' | jq .

    出力例

    {
      "ipv4": {
        "internalJoinSubnet": "100.99.0.0/16",
        "internalTransitSwitchSubnet": "100.69.0.0/16"
      }
    }

  2. ホステッドクラスターでネットワーク Operator の設定を確認してください。

    1. 以下のコマンドを入力して、ホステッドクラスター kubeconfig ファイルを抽出します。

      $ oc extract secret/<hosted_cluster_name>-admin-kubeconfig \
        -n <hosted_control_plane_namespace> --to=- > <hosted_cluster_kubeconfig_file>
    2. 以下のコマンドを入力して、ネットワーク Operator の設定を確認してください。

      $ oc get network.operator.openshift.io cluster \
        --kubeconfig=<hosted_cluster_kubeconfig_file> \
        -o jsonpath='{.spec.defaultNetwork.ovnKubernetesConfig.ipv4}' | jq .

      出力例

      {
        "internalJoinSubnet": "100.99.0.0/16",
        "internalTransitSwitchSubnet": "100.69.0.0/16"
      }

  3. 以下の手順を実行して、2 つのテスト Pod を作成します。

    1. ノード 1 で、次の例に示すように Pod1 を作成します。

      kind: Pod
      apiVersion: v1
        metadata:
          name: "<pod_1>"
          namespace: "<hosted_control_plane_namespace>"
          labels:
            name: <pod_name>
        spec:
          securityContext:
            runAsNonRoot: true
            seccompProfile:
              type: RuntimeDefault
          containers:
          - image: "<image_url>"
            name: <pod_name>
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop: ["ALL"]
          nodeName: "${NODE1}"
    2. ノード 2 で、次の例に示すように Pod2 を作成します。

      kind: Pod
      apiVersion: v1
        metadata:
          name: "<pod_2>"
          namespace: "<hosted_control_plane_namespace>"
          labels:
            name: <pod_name>
        spec:
          securityContext:
            runAsNonRoot: true
            seccompProfile:
              type: RuntimeDefault
          containers:
          - image: "<image_url>"
            name: <pod_name>
            securityContext:
              allowPrivilegeEscalation: false
              capabilities:
                drop: ["ALL"]
          nodeName: "${NODE2}"
  4. 次の例に示すように、両方の Pod をバックアップするテストサービスを作成します。

    kind: Service
    apiVersion: v1
      metadata:
        name: "<test_service_name"
        namespace: "<hosted_control_plane_namespace>"
        labels:
          name: test-service
      spec:
        internalTrafficPolicy: "Cluster"
        externalTrafficPolicy: ""
        ipFamilyPolicy: "SingleStack"
        ports:
        - name: http
          port: <service_test_port_number>
          protocol: "TCP"
          targetPort: 8080
        selector:
          name: "<pod_name>"
        type: "ClusterIP"
  5. OVNPod が実行されていることを確認してください。

    1. 以下のコマンドを入力します。

      $ oc rollout status daemonset/ovnkube-node \
        -n openshift-ovn-kubernetes \
        --kubeconfig=<hosted_cluster_kubeconfig_file> \
        --timeout=5m
    2. 以下のコマンドを入力します。

      $ oc get pods -n openshift-ovn-kubernetes --kubeconfig=<hosted_cluster_kubeconfig_file>

      すべての ovnkube-node Pod は 実行 状態であり、すべてのコンテナーが準備完了状態である必要があります。

  6. 以下のコマンドを入力して、変更内容がネットワーク Operator に同期されていることを確認してください。

    $ oc get network.operator.openshift.io/cluster \
      -ojsonpath='{.spec.defaultNetwork.ovnKubernetesConfig.ipv4}' \
      --kubeconfig=<clusters-hostedclustername> | jq .
  7. Pod2 の IP アドレスを取得し、Pod1 から転送します。

    1. 以下のコマンドを入力します。

      $ pod2_ip=oc get pod -n e2e-test-networking-ovnkubernetes-xxt8s <pod_2> -o=jsonpath={.status.podIPs[0].ip}
    2. 以下のコマンドを入力します。

      $ oc exec <pod_1> -- /bin/sh -x -c curl --connect-timeout 5 -s <pod2_ip>:8080
  8. サービスの IP アドレスを取得し、サービスから外部経由で Pod にアクセスできることを確認します。

    1. 以下のコマンドを入力します。

      $ SERVICE_IP=oc get service test-service-o=jsonpath={.spec.clusterIPs[0]}
    2. 以下のコマンドを入力します。

      $ oc exec <pod_1> -- /bin/sh -x -c curl --connect-timeout 5 -s $SERVICE_IP:<service_test_port_number>
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る