10.4. 仮想マシンをセカンダリー localnet ユーザー定義ネットワークに接続する
CLI を使用して、仮想マシン (VM) を OVN-Kubernetes localnet セカンダリーネットワークに接続できます。クラスター管理者は、ClusterUserDefinedNetwork (CUDN) カスタムリソース定義 (CRD) を使用して、複数の namespace にわたって共有 OVN-Kubernetes ネットワークを作成できます。
OVN-Kubernetes のセカンダリーネットワークは、マルチネットワークポリシー API と互換性があり、仮想マシンとの間のトラフィックフローを制御するための MultiNetworkPolicy カスタムリソース定義 (CRD) を提供します。詳細は、「関連情報」を参照してください。
特定の CIDR ブロックのネットワークポリシーの Ingress および Egress ルールを定義するには、ipBlock 属性を使用する必要があります。Pod または namespace セレクターポリシーピアの使用はサポートされていません。
localnet トポロジーは、セカンダリーネットワークを物理アンダーレイに接続します。これにより、east-west クラスタートラフィックとクラスター外で実行されているサービスへのアクセスの両方が可能になります。ただし、クラスターノード上の基盤となる Open vSwitch (OVS) システムの追加設定が必要です。
10.4.1. CLI を使用して localnet トポロジー用のユーザー定義ネットワークを作成する リンクのコピーリンクがクリップボードにコピーされました!
CLI を使用して、localnet ネットワークトポロジーのセカンダリークラスタースコープユーザー定義ネットワーク (CUDN) を作成できます。
前提条件
-
cluster-admin権限を持つユーザーとしてクラスターにログインしている。 -
OpenShift CLI (
oc) がインストールされている。 - Kubernetes NMState Operator がインストールされている。
手順
NodeNetworkConfigurationPolicyオブジェクトを作成して、OVN-Kubernetes セカンダリーネットワークを Open vSwitch (OVS) ブリッジにマッピングします。NodeNetworkConfigurationPolicyマニフェストの例:apiVersion: nmstate.io/v1 kind: NodeNetworkConfigurationPolicy metadata: name: mapping spec: nodeSelector: node-role.kubernetes.io/worker: '' desiredState: ovn: bridge-mappings: - localnet: localnet1 bridge: br-ex state: present-
metadata.name は、設定オブジェクトの名前を指定します。 -
spec.nodeSelector は、ノードネットワーク設定ポリシーが適用されるノードを指定します。推奨されるノードセレクター値はnode-role.kubernetes.io/worker: ''です。 -
spec.desiredState.ovn.bridge-mappings.localnet は、トラフィックが OVS ブリッジに転送される追加ネットワークの名前を指定します。この属性は、OVN-Kubernetes 追加ネットワークを定義するClusterUserDefinedNetworkオブジェクトのspec.network.localnet.physicalNetworkNameフィールドの値と一致する必要があります。この例では、localnet1という名前を使用します。 -
spec.desiredState.ovn.bridge-mappings.bridge は、ノード上の OVS ブリッジの名前を指定します。state属性がpresentまたは指定されていない場合は、この値は必須です。 spec.desiredState.ovn.bridge-mappings.state は、マッピングの状態を指定します。マッピングを追加するにはpresentに、マッピングを削除するにはabsentにする必要があります。デフォルト値はpresentです。重要OpenShift Virtualization は、Linux ブリッジボンディングモード 0、5、および 6 をサポートしていません。詳細は、Which bonding modes work when used with a bridge that virtual machine guests or containers connect to? を参照してください。
-
次のコマンドを実行して、
NodeNetworkConfigurationPolicyマニフェストを適用します。$ oc apply -f <filename>.yamlここでは、以下のようになります。
<filename>-
NodeNetworkConfigurationPolicyマニフェスト YAML ファイルの名前を指定します。
localnet セカンダリーネットワークを作成するために、
ClusterUserDefinedNetworkオブジェクトを作成します。ClusterUserDefinedNetworkマニフェストの例:apiVersion: k8s.ovn.org/v1 kind: ClusterUserDefinedNetwork metadata: name: cudn-localnet spec: namespaceSelector: matchExpressions: - key: kubernetes.io/metadata.name operator: In values: ["red", "blue"] network: topology: Localnet localnet: role: Secondary physicalNetworkName: localnet1 ipam: mode: Disabled # ...-
metadata.name は、ClusterUserDefinedNetworkカスタムリソースの名前を指定します。 -
spec.namespaceSelector は、クラスター UDN が適用される名前空間のセットを指定します。namespace セレクターは、default、openshift-*namespace、または Cluster Network Operator (CNO) によって定義されたグローバル namespace の値を指すことはできません。 -
spec.namespaceSelector.matchExpressions はセレクターのタイプを指定します。この例では、matchExpressionsセレクターは、ラベルkubernetes.io/metadata.nameと値redまたはblueを持つオブジェクトを選択します。 -
spec.namespaceSelector.matchExpressions.operator は演算子の型を指定します。可能な値はIn、NotIn、Existsです。 -
spec.network.topology は、ネットワークのトポロジー設定を指定します。Localnetトポロジーは、論理ネットワークを物理アンダーレイに接続します。 -
spec.network.localnet.role は、UDN がプライマリーかセカンダリーかを指定します。topology: Localnetの場合、必要な値はSecondaryです。 -
spec.network.localnet.physicalNetworkName は、ノード上で設定されている OVN-Kubernetes ブリッジマッピングの名前を指定します。この値は、以前に作成したNodeNetworkConfigurationPolicyマニフェストのspec.desiredState.ovn.bridge-mappings.localnetフィールドと一致する必要があります。これにより、意図した物理ネットワークのセグメントに確実にブリッジできます。 -
spec.network.localnet.ipam.mode は、IP アドレス管理 (IPAM) が有効か無効かを指定します。必要な値はDisabledです。OpenShift Virtualization は、仮想マシンの IPAM の設定をサポートしません。
-
次のコマンドを実行して、
ClusterUserDefinedNetworkマニフェストを適用します。$ oc apply -f <filename>.yamlここでは、以下のようになります。
<filename>-
ClusterUserDefinedNetworkマニフェスト YAML ファイルの名前を指定します。