目标与用例¶
Kuryr 通过利用 Neutron APIs 和服务为 Docker 容器提供网络。它还为常见的 Neutron 插件提供容器化镜像。
Kuryr 实现了一个 libnetwork 远程驱动,并将它的调用映射到 OpenStack Neutron。它充当 libnetwork 的 容器网络模型 (CNM) 和 Neutron 的网络模型 之间的翻译器,并提供容器-主机或容器-虚拟机(嵌套虚拟机)绑定。
使用 Kuryr,任何 Neutron 插件都可以显式地用作 libnetwork 远程驱动。Neutron APIs 是供应商无关的,因此所有 Neutron 插件都将能够以通用的轻量级插件片段提供 Docker 的网络后端,就像它们在 nova 中一样。
Kuryr 负责将容器命名空间绑定到网络基础设施,为例如 Linux bridge 端口、Open vSwitch 端口、Midonet 端口等端口类型提供 VIF 绑定 的通用层。
Kuryr 应该成为容器网络 API 和用例与 Neutron APIs 和服务之间的网关,并且应该弥合两个领域之间的差距。它将映射 Neutron 中缺失的部分,并推动更改以进行调整。
Kuryr 应该解决 Magnum 项目在容器网络方面的用例,并为 Magnum 或任何其他需要通过 Neutron API 利用容器网络的 OpenStack 项目提供统一的接口。在这方面,Kuryr 旨在利用支持虚拟机嵌套容器用例的 Neutron 插件,并增强 Neutron APIs 以支持这些用例(例如 OVN)。关于 Magnum Kuryr 集成 的 etherpad 描述了 Kuryr 需要支持的各种用例。
Kuryr 应该提供容器化的 Neutron 插件,以便于部署,并且必须与 OpenStack Kolla 项目及其部署工具兼容。容器化的插件具有通用的 Kuryr 绑定层,该层将容器绑定到网络基础设施。
Kuryr 应该利用 Neutron 子项目和服务(特别是 LBaaS、FWaaS、VPNaaS)来提供对高级容器网络用例的支持,并被容器编排管理系统(例如 Kubernetes,甚至 OpenStack Magnum)消费。
Kuryr 还支持预分配网络、端口和子网,并在 Docker 创建期间根据传递的特定标签将它们绑定到 Docker 网络/端点。Docker 中正在合并一个补丁,以支持在网络创建期间提供用户标签。您可以查看这个 Docker 补丁中的用户标签。