HNS 文档通常对 Hyper-V 即服务有几处引用,例如:
https://docs.microsoft.com/en-us/virtualization/windowscontainers/container-networking/architecture,指的是为每个网络创建一个“Hyper-V 虚拟交换机”。
Docker 和 Kubernetes 网络模型中的不同网络解决方案可能依赖于 Hyper-V 运行,也可能不依赖于 Hyper-V 运行。在 Kubernetes 中,HNS 的使用非常广泛
- kube-proxy 使用 HNS 创建路由规则
- CNI 提供商 calico 创建新的网络防火墙规则 (https://github.com/projectcalico/node/blob/master/windows-packaging/CalicoWindows/node/node-service.ps1),然后创建一个新的
HNSNetwork
(大概这不需要 Hyper-V,因为 calico 文档中没有对 hyper-v 的要求)。
所以我的总体问题是:
- HNS 的功能是否需要 Hyper-V?如果需要,您如何知道 HNS 操作是否会因为 Hyper-V 的安装和启用而起作用?
这个总体问题的意义在于,在公共云(例如 AWS)或嵌套虚拟化环境(常用于针对 vsphere 和 NSX 等技术进行测试或本地开发)中,通常情况下您可能希望在轻量级虚拟机中运行 Windows 容器,由于它们是嵌套的,因此这些虚拟机不会以任何方式启用 Hyper-V 作为服务,并且在许多地方默认禁用嵌套虚拟化。