Kuryr - Mitaka 里程碑

https://launchpad.net/kuryr

Kuryr 角色与职责 - Mitaka 版本第一个里程碑

本章包括 Kuryr 旨在解决的各种用例,其中一些在介绍章节中已简要描述。需要对这些项目进行优先级排序。

  1. 将 Kuryr 作为 libnetwork 远程驱动程序部署(在 libnetwork API 和 Neutron API 之间映射)

  2. 配置 https://etherpad.openstack.org/p/kuryr-configuration

    包括对 Neutron 和 Docker 的身份验证(Keystone 集成)

  3. VIF 绑定 https://etherpad.openstack.org/p/Kuryr_vif_binding_unbinding https://blueprints.launchpad.net/kuryr/+spec/vif-binding-and-unbinding-mechanism

  4. 容器化的 neutron 插件 + Kuryr 通用层 (Kolla)

  5. 嵌套 VM - 无代理模式(或使用 Kuryr shim 层)

  6. Magnum Kuryr 集成 https://blueprints.launchpad.net/kuryr/+spec/containers-in-instances

    为 Magnum 使用创建 Kuryr heat 资源

  7. Neutron 中缺少支持 docker 网络模型的 API

    端口映射:Docker 端口映射将在服务中实现,而不是网络中(libnetwork)。两者之间存在关联。以下是一些详细信息: https://github.com/docker/docker/blob/2025.2/experimental/networking.md https://github.com/docker/docker/blob/2025.2/api/server/server_experimental_unix.go#L13-L16

    这是一个在特定网络上发布服务并将容器附加到服务的示例:docker service publish db1.prod cid=$(docker run -itd -p 8000:8000 ubuntu) docker service attach $cid db1.prod

    Kuryr 需要与 docker api 的服务对象交互以支持端口映射。我们计划在 Mitaka 中提出一个端口转发规范,该规范引入了 Neutron 中端口转发的 API 和参考实现,以启用此功能。

    Neutron 相关规范:VLAN 中继端口( https://blueprints.launchpad.net/neutron/+spec/vlan-aware-vms)(用于嵌套 VM 定义中继端口和子端口)

    根据端口名称进行 DNS 解析(https://review.opendev.org/#/c/90150/)(需要与 Docker 服务发布功能兼容)

  8. Neutron 标识符和 Docker 标识符之间的映射

    正在 Neutron 中提出一个新的规范,我们可以利用它来解决此用例: 为资源添加标签。标签在概念上类似于 Docker 标签。

  9. 测试 (CI)

    应该有一个测试基础设施,运行单元测试和功能测试,并完全设置 docker + kuryr + neutron。

  10. Kuryr 的打包和 devstack 插件

Kuryr 未来范围

  1. 计划使 Kuryr 支持 Kubernetes 定义的其他网络后端模型(而不仅仅是 libnetwork)。

  2. 除了 Docker 之外,服务也是 Kubernetes 的关键组件。在 Kubernetes 中,我创建一个 pod 并选择性地创建/将服务附加到 pod: https://github.com/kubernetes/kubernetes/blob/2025.2/docs/user-guide/services.md

    可以使用 LBaaS API 实现服务

    一个为 Kubernetes 和 Neutron LBaaS 执行此操作的示例项目: https://github.com/kubernetes/kubernetes/blob/release-1.0/pkg/cloudprovider/openstack/openstack.go