この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。

仮想マシンの隔離

Kube-OVNを使用するすべての機能は、実験的と見なされます。実験的機能に関する詳細は、機能ラベル を参照してください。

仮想マシン間の隔離は、通常、VLAN(従来のネットワーク)または仮想スイッチ(Kube-OVN)を使用して実現されます。同じ仮想スイッチネットワーク内で仮想マシンを隔離したい場合は、次のいずれかを使用して必要なマイクロセグメンテーションを実現できます:

  • サブネットアクセス制御リスト(ACL):仮想マシンが使用するサブネットにルールを適用します。

  • Kubernetesネットワークポリシー:ネットワークネームスペース内でルールを適用し、ポッドセレクターを使用します。

サブネットACL

スキーマと使用ガイドラインの詳細については、Kube-OVNのドキュメントにある サブネットACLおよび ACL APIリファレンスを参照してください。

  • 例1:`172.20.10.0/24`サブネット内のすべての仮想マシンは、サブネット範囲`172.20.10.0/30`内のアドレス`172.20.10.2`および`172.20.10.3`を持つものを除いて、お互いに通信することが許可されています。

    Kube-OVNは、自動的にゲートウェイアドレス`172.20.10.1`を`excludeIps`リストに追加し、仮想マシンに割り当てられないようにします。ただし、ゲートウェイアドレスとの通信も影響を受けます。

      apiVersion: kubeovn.io/v1
      kind: Subnet
      metadata:
        name: vswitch1
      spec:
        acls:
        - action: drop
          direction: to-lport
          match: ip4.dst == 172.20.10.0/30
          priority: 1005
        - action: drop
          direction: from-lport
          match: ip4.src == 172.20.10.0/30
          priority: 1005
        cidrBlock: 172.20.10.0/24
        excludeIps:
        - 172.20.10.1
        gateway: 172.20.10.1
        gatewayNode: ""
        natOutgoing: false
        private: false
        protocol: IPv4
        provider: vswitch1.default.ovn
        vpc: vpc1
  • 例2:`172.20.10.0/24`サブネット内のすべての仮想マシンは、アドレス`172.20.10.3`を持つものを除いて、お互いに通信することが許可されています。アドレス`172.20.10.2`を持つ仮想マシンは、ACLルールの実行が優先順位に基づいているため、通信が許可されています。このサブネットでは、優先順位値`1006`のルールが`1005`の前に実行されます。

    Kube-OVNは、自動的にゲートウェイアドレス`172.20.10.1`を`excludeIps`リストに追加し、仮想マシンに割り当てられないようにします。ただし、ゲートウェイアドレスとの通信も影響を受けます。

      apiVersion: kubeovn.io/v1
      kind: Subnet
      metadata:
        name: vswitch1
      spec:
        acls:
        - action: allow
          direction: to-lport
          match: ip4.dst == 172.20.10.2
          priority: 1006
        - action: allow
          direction: from-lport
          match: ip4.src == 172.20.10.2
          priority: 1006
        - action: drop
          direction: to-lport
          match: ip4.dst == 172.20.10.0/30
          priority: 1005
        - action: drop
          direction: from-lport
          match: ip4.src == 172.20.10.0/30
          priority: 1005
        cidrBlock: 172.20.10.0/24
        excludeIps:
        - 172.20.10.1
        gateway: 172.20.10.1
        gatewayNode: ""
        natOutgoing: false
        private: false
        protocol: IPv4
        provider: vswitch1.default.ovn
        vpc: vpc1
  • 例3:アドレス`172.20.10.2`を持つ仮想マシンは、他の仮想マシンと通信することが許可されています。ただし、逆方向のトラフィックはブロックされます。仮想マシンは`172.20.10.2`との通信を許可されていません。

      apiVersion: kubeovn.io/v1
      kind: Subnet
      metadata:
        name: vswitch1
      spec:
        acls:
        - action: drop
          direction: to-lport
          match: ip4.dst == 172.20.10.2
          priority: 1005
        cidrBlock: 172.20.10.0/24
        excludeIps:
        - 172.20.10.1
        gateway: 172.20.10.1
        gatewayNode: ""
        natOutgoing: false
        private: false
        protocol: IPv4
        provider: vswitch1.default.ovn
        vpc: vpc1
  • 例4:ポート`9501`およびIPアドレス`172.20.10.6`から発信されるTCPトラフィックは、`vswitch1`サブネットでブロックされます。

      apiVersion: kubeovn.io/v1
      kind: Subnet
      metadata:
        name: vswitch1
      spec:
        acls:
        - action: drop
          direction: from-lport
          match: ip4.src == 172.20.10.6 && tcp.src == 9501
          priority: 1005
        cidrBlock: 172.20.10.0/24
        excludeIps:
        - 172.20.10.1
        gateway: 172.20.10.1
        gatewayNode: ""
        natOutgoing: false
        private: false
        protocol: IPv4
        provider: vswitch1.default.ovn
        vpc: vpc1

ネットワークポリシー

NetworkPolicyルールは、デフォルトでトラフィックを拒否します。他のポッドに影響を与えないように、次のことを確認してください:

  • ポリシーに必要なすべてのマッチ条件が追加されています。

  • トラフィックは、ポッドセレクターとネームスペースを使用して隔離されています。

この文書の例は、同じサブネット内の仮想マシン間の隔離を達成することに焦点を当てています。

詳細については、Kubernetesドキュメントの Network PoliciesおよびKube-OVNドキュメントの NetworkPolicy Loggingを参照してください。

次の仮想マシンは、`default`ネームスペース内に作成され、サブネット範囲`172.20.10.0/24`のために作成されたオーバーレイネットワークに接続されています。

仮想マシン IP Address

VM1

172.20.10.2

VM2

172.20.10.3

VM3

172.20.10.4

VM4

172.20.10.5

VM5

172.20.10.6

  • 例1:VM1`と`VM2`は、アドレスがサブネット`172.20.10.0/30`内にあるため、お互いに通信することが許可されています。`default`ネームスペース内の他のすべてのトラフィック、`VM3VM4、および`VM5`とのトラフィックを含め、ブロックされます。

      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        name: ip-block
        namespace: default
      spec:
        egress:
        - to:
          - ipBlock:
              cidr: 172.20.10.0/30
        ingress:
        - from:
          - ipBlock:
              cidr: 172.20.10.0/30
        policyTypes:
        - Ingress
        - Egress
  • 例2:VM1`と`VM2`は、お互いに、またサブネット`172.20.10.0/24`内の他の仮想マシンとも通信することが許可されています。しかし、そのサブネット内の他の仮想マシンは、`VM1VM2、およびお互いに通信することができません。これは、ポリシー(受信)が`172.20.10.0/30`から発信されるトラフィックのみを許可するためです。

      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        name: ip-block
        namespace: default
      spec:
        ingress:
        - from:
          - ipBlock:
              cidr: 172.20.10.0/30
        policyTypes:
        - Ingress
  • 例3:`VM1`と`VM2`は、お互いに通信することが許可されていますが、サブネット`172.20.10.0/24`内の他の仮想マシンとは通信できません。同じサブネット内の他の仮想マシンは、`VM1`および`VM2`と通信できます。これは、ポリシー(送信)が`172.20.10.0/30`に送信されるトラフィックを許可するためです。

      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        name: ip-block
        namespace: default
      spec:
        egress:
        - to:
          - ipBlock:
              cidr: 172.20.10.0/30
        policyTypes:
        - egress
  • 例4:`VM2`は`VM1`と通信することが許可されていますが、サブネット`172.20.10.0/24`内の他の仮想マシンとは通信できません。これは、ポッドセレクタラベルが`VM2`に適用されているためです。同じサブネット内の他のすべての仮想マシンは、`VM1`およびお互いに通信できます。

      apiVersion: networking.k8s.io/v1
      kind: NetworkPolicy
      metadata:
        name: ip-block
        namespace: default
      spec:
        podSelector:
          matchLabels:
            vm.kubevirt.io/name: VM2
        egress:
        - to:
          - ipBlock:
              cidr: 172.20.10.0/30
        ingress:
        - from:
          - ipBlock:
              cidr: 172.20.10.0/30
        policyTypes:
        - Ingress
        - Egress