我想尝试用容器创建一个网络基础设施,但是如何为我的 lxc 容器配置另一个 lxd(例如:lxcbr1)桥?
在主机上我输入:
sudo brctl addbr lxcbr1
但是当我通过键入以下内容启动新容器时:
lxc launch images:centos/7/amd64 MyCentos
该容器默认采用 lxdbr0 桥的网络配置。
答案1
注意:计算机上的 LXC 客户端能够使用远程 LXC 实例。
[ ]
此处使用信息中方括号之间的任何内容都应忽略,因为我将解释如何操作。我还使用了launch
OP 问题中提供的命令,但您可以使用任何您想要的操作系统映像来启动。
不要brctl
直接使用,然后弄乱单个容器配置,而是考虑使用lxc network create
来执行此操作,并让 LXD 管理这些桥接。它使创建桥接变得真的很容易,不会给我们带来太多麻烦。(这是我在几个 LXD 环境中所做的)。
从用法上来说:
lxc network create [<remote>:]<network> [key=value...]
Create a network.
实际上,只需执行lxc network create lxcbr1
或按照您想要的方式命名即可。
问题是,你必须在某处指定这一点。我个人使用配置文件来实现这一点,特别是当我必须绑定到多个桥接器时。
现在,通常情况下我对每个桥接器都有单独的配置文件,并且不会将两个放在同一个框中,但对于您来说,您将有两个 LXD 桥接器定义。因此我们需要为它们创建一个配置文件。
如果您需要同时在容器上建立多个桥接器......
首先将default
配置复制到multibridge
配置:
lxc profile copy default multibridge
之后,我们需要编辑新的多桥文件,使其具有多个网络设备。
lxc profile edit multibridge
您将在文件中看到类似这样的内容:
devices:
eth0:
nictype: bridged
parent: lxdbr0
type: nic
在该行之后创建一个新的空白行type
,并添加行,使其看起来像这样:
devices:
eth0:
nictype: bridged
parent: lxdbr0
type: nic
eth1:
nictype: bridged
parent: testing
type: nic
不要编辑文件中的任何其他内容,然后保存它。
现在,我们必须告诉 LXD 创建一个新容器,但要使用multibridge
配置文件:
lxc launch images:centos/7/amd64 MyCentos -p multibridge
这将告诉 LXD 使用multibridge
我们刚刚设置的配置文件作为新容器的配置文件,并且它应该分别在容器上lxdbr0
和在容器内使用和。lxdbr1
eth0
eth1
一个主要警告:该系统并不智能,配置也不正确eth1
。因此,您需要进入 CentOS 系统,自行设置配置eth1
,将其设置为lxdbr1
配置 IP 范围内的 DHCP 或静态 IP。否则,该接口将永远不会启动。由于此配置因操作系统而异,我无法在此为您提供有关如何配置每个映像上的每个网络接口的明确答案。还有其他资源可用于此目的。
如果你只需要新桥,不是一个容器上同时有多个桥...
然后我们需要专门为此创建一个配置文件。
lxc profile copy default lxdbr1
...然后编辑新的配置文件。
lxc profile edit lxdbr1
...进入那里后,找到lxdbr0
指定的位置并将其更改为lxdbr1
。
然后像上面一样,启动你的 LXD 容器并lxdbr1
为其指定配置文件。
lxc launch images:centos/7/amd64 MyCentos -p lxdbr1
您不需要对网络接口进行任何专门的配置,因为默认将第一个接口设置为 DHCP,并且将自动正确配置。
现在仅介绍一些配置后注意事项:
如果您知道要输入的配置,也可以通过编辑网络配置来修改所有单独的网络元素,lxdbr1
而无需使用brctl
,只需调用lxc network edit lxdbr1
并添加单独的配置即可。这lxd
实际上可以处理所有事情,而不必自己手动设置网桥brctl
(并让 LXD 管理网桥)。
您可能需要设置类似于下面的网络配置,这将禁用自动 NAT,并且您必须为第二个桥手动配置数据如何流向 Internet(lxc network edit lxdbr1
如果您希望使用lxdbr1
作为名称,您可以通过更改桥配置本身)。请注意此处的使用ipv4.nat: "false"
,这将禁用iptables
'MASQUERADE
规则,使其看起来像系统本身到达出站:
config:
ipv4.address: 10.75.251.1/24
ipv4.dhcp: "true"
ipv4.dhcp.ranges: 10.75.251.200-10.75.251.250
ipv4.nat: "false"
还有 IPv6 等效命令,但 IPv4 更易于使用,因此我在此省略。完成此操作后,您需要重新启动容器。特别是因为我们将所有内容都设置为dhcp
。