命名的 veth 对¶
- 日期:
2015-08-31 22:00
- 标签:
lxc, veth, 故障排除
本规范旨在通过使用容器名称构建 veth 接口的名称,使 OpenStack-Ansible 问题的故障排除过程更加高效。
链接到蓝图
问题描述¶
主机上的所有 veth 接口都使用随机生成的名称命名,例如 vethK070G4。这会使故障排除容器网络问题更具挑战性,因为很难将 veth 名称追溯到容器内的特定网络接口。
提议的变更¶
veth 接口的名称应唯一且易于与其容器关联。但是,网络接口名称存在限制,必须小心处理
最大长度 16 个字符
某些字符,例如连字符 (-) 不允许
容器主机名末尾的随机字符可以与接口名称结合使用,以形成 veth 名称。例如,名为 aio1_utility_container-a9ef9551 的容器可以有两个命名的 veth 接口
a9ef9551_eth0
a9ef9551_eth1
备选方案¶
将 veth 名称保留为 LXC 随机生成。
Playbook/Role 影响¶
veth 名称仅会在 LXC 配置文件本身的主机上进行调整。容器不会受到影响。Playbooks 不会在主机上对 veth 名称执行任何操作。
如果容器停止时未正确清理 veth(有时称为“悬挂的 veth”),则在手动删除悬挂的 veth(使用 ip link del <veth>)之前,容器可能无法启动。
升级影响¶
升级不受影响。此更改仅调整 LXC 容器配置文件,不会更改任何容器的运行配置。
如果容器正在运行并且其 LXC 配置文件被调整为使用命名的 veth,则仅在重新启动时才会使用这些调整。如果升级仅重新启动主机上的部分容器,则只有这些容器在重新启动后才会使用命名的 veth。
安全影响¶
此更改不应影响安全性。
性能影响¶
此更改不应影响性能。
最终用户影响¶
此更改不应影响最终用户。
部署者影响¶
部署 OpenStack 的用户应该能够更有效地排查网络问题。
例如,如果用户在访问 nova API 容器时遇到问题,他们可以快速查看与该容器关联的 veth。这将允许用户使用各种工具(如 ethtool 和 tcpdump)诊断网络问题,而无需深入研究接口索引或编写脚本。
如果部署者希望立即开始使用命名的 veth 对,则必须重新启动所有容器。这是因为 LXC 配置文件会在磁盘上进行调整,但正在运行的容器不会进行调整。
开发人员影响¶
与上述部署者影响类似,此更改还可以帮助开发人员更有效地诊断不同容器中的问题。
依赖项¶
本规范没有已知的依赖项。
实现¶
负责人¶
- 主要负责人
工作项¶
更新 Ansible Playbooks,以便在主 LXC 配置文件以及接口 .ini 文件中指定 lxc.network.veth.pair
测试¶
进行全新部署并验证命名的 veth
在版本之间进行升级并验证命名的 veth
验证这两个测试都不会影响正在运行的容器
文档影响¶
文档会很有帮助,尤其是在这如何帮助解决问题方面。
参考资料¶
N/A