通过 Network Policy 控制虚拟机网络请求
平台的虚拟机方案基于开源组件 KubeVirt 实现,实际上运行在 Pod 中。通过使用 Network Policy 的功能,可以控制虚拟机的入站和出站请求。
操作步骤
-
进入 Container Platform。
-
在左侧导航栏中,点击 Network > Network Policies。
-
点击 Create Network Policy。
-
按需配置以下参数。
-
点击 Create。
使用 API
控制台表单映射到标准 Kubernetes NetworkPolicy (networking.k8s.io/v1)。下面的示例允许 DNS 出站流量以及所有出站 IP 流量,但排除一个地址——这与下方 结果验证 场景的效果相同:
字段映射:关联方式(标签选择器) → spec.podSelector(通过 vm.kubevirt.io/name 选择虚拟机的 Pod);方向 → policyTypes 以及 ingress / egress;协议 / 访问端口 → ports;远端类型 = IP 段 → ipBlock.cidr;排除远端 → ipBlock.except。
结果验证
本文通过虚拟机访问 www.example.com 来验证该配置。
第一步:创建允许所有流量通过的虚拟机和网络策略
-
创建虚拟机,详细步骤请参考 创建虚拟机。
-
在虚拟机的命名空间中配置网络策略,为 TCP 和 UDP 协议添加白名单规则,参数如下:
-
TCP 协议白名单:
-
UDP 协议白名单规则:
-
-
网络策略创建后,登录虚拟机并执行以下命令请求 www.example.com。
-
请求成功。
第二步:更新网络策略,将 www.example.com 从白名单中移除
-
执行以下命令以获取 www.example.com 的 IP 地址,结果为 93.184.215.14。
-
更新 第一步 中创建的网络策略,修改后的参数如下:
-
更新网络策略后,登录虚拟机并执行以下命令请求 www.example.com。
-
请求超时,说明排除远端功能已生效。