我不明白为什么我使用 virt-install 和 kickstart 创建的虚拟机没有能够从外部主机可靠访问的网络。我使用 virt-manager 创建的虚拟机可以使用 ssh 登录,可以 ping 通等等,但 kickstarted 创建的虚拟机无法访问。
即使我使用 virsh 编辑了 kickstart 的虚拟机,并且更改在重启后仍然无法生效。kube2 是使用 virt-install 和 kickstart 创建的。其他两个是使用 virt-manager 创建的。
[root@kraken msh]# virsh dumpxml kube2 |grep bridge
<interface type='bridge'>
<source bridge='br0'/>
[root@kraken msh]# virsh dumpxml kube1 |grep bridge
<interface type='bridge'>
<source network='host-bridge' bridge='br0'/>
[root@kraken msh]# virsh dumpxml kube0 |grep bridge
<interface type='bridge'>
<source network='host-bridge' bridge='br0'/>
我在 virt-install 脚本中使用什么语法来确保源网络 (host-bridge) 已构建?我的 virt-install --network 语法变化很大,我甚至不想在这里发布它。有时我能够 ssh 到虚拟机的 IP,但不能 ssh 到主机名。
我的 virsh-install 语法中是否需要“--bridge br0”或其他内容?
答案1
我在 /etc/sysconfig/network-scripts/ifcfg-enp2s0f1 中输入了错误的 DEVICE= 名称,这是我从属于 br0 的 NIC。
我执行了
nmcli connection add type bridge-slave autoconnect yes con-name enp0s8 ifname enp0s8 master br0
而不是正确的
nmcli connection add type bridge-slave autoconnect yes con-name enp0s8 ifname enp2s0f1 master br0
所以问题出在复制粘贴或 pebkac 上。与 virt-install 无关。这是我的工作 virt-install 语法。
virt-install \
--name kube2 \
--memory 8192 \
--graphics none \
--vcpus 2 \
--disk path=/pool/libvirt/images/kube2.qcow2 \
--network bridge=br0 -w network=host-bridge \
--os-variant centos8 \
--console pty,target_type=serial \
--location http://192.168.10.2/centos8 \
--extra-args 'console=ttyS0,115200n8 serial' \
-x "ks=http://192.168.10.2/kube-centos-8.cfg"