|
この文書は自動機械翻訳技術を使用して翻訳されています。 正確な翻訳を提供するように努めておりますが、翻訳された内容の完全性、正確性、信頼性については一切保証いたしません。 相違がある場合は、元の英語版 英語 が優先され、正式なテキストとなります。 |
仮想マシンの隔離
|
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 |
|---|---|
|
|
|
|
|
|
|
|
|
|
-
例1:
VM1`と`VM2`は、アドレスがサブネット`172.20.10.0/30`内にあるため、お互いに通信することが許可されています。`default`ネームスペース内の他のすべてのトラフィック、`VM3、VM4、および`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`内の他の仮想マシンとも通信することが許可されています。しかし、そのサブネット内の他の仮想マシンは、`VM1、VM2、およびお互いに通信することができません。これは、ポリシー(受信)が`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