我目前正在尝试“克隆”一个可运行的 Ubuntu 18 实例。本质上,我只想从一个预配置的 Ubuntu 18.04 实例创建多个实例。预配置的 Ubuntu 实例使用 Google 的 Ubuntu 18.04 LTS 镜像,功能齐全且可访问。
我尝试用两种方法来克隆它:
- 从预配置的 Ubuntu 实例的启动盘创建一个映像,以便在创建新的 Ubuntu 实例时使用。
- 创建预配置的 Ubuntu 实例的快照以便在创建新的 Ubuntu 实例时使用。
通过上述任一方法部署新实例时,新实例似乎已失去所有连接方式。部署看起来成功了;我可以看到 GCE 中的 nic0 已分配了内部 IP。与预配置的 Ubuntu 实例不同,它的内部 IP 无法 ping 通,SSH 也不起作用。
通过 Serial0 连接并运行时,ifconfig
我发现除了 之外似乎没有网络接口lo
。这让我想到,当从图像或快照创建新实例时,它不会创建网络接口,即使我正在分配内部 IP 和临时 IP。
Serial0 日志也按以下顺序生成这些日志:
[ 2.077602] virtio_net virtio1 ens4: renamed from eth0
[[0;32m OK [0m] Started Raise network interfaces.
[[0;32m OK [0m] Started Network Service.
Starting Wait for Network to be Configured...
Starting Network Name Resolution...
[[0;32m OK [0m] Started Wait for Network to be Configured.
Starting Initial cloud-init job (metadata service crawler)...
[[0;32m OK [0m] Started Network Name Resolution.
[[0;32m OK [0m] Reached target Host and Network Name Lookups.
[ 16.249051] cloud-init[1068]: Cloud-init v. 19.4-33-gbb4131a2-0ubuntu1~18.04.1 running 'init' at Sat, 23 May 2020 18:42:35 +0000. Up 16.12 seconds.
[ 16.272622] cloud-init[1068]: ci-info: +++++++++++++++++++++++++++Net device info++++++++++++++++++++++++++++
[ 16.292596] cloud-init[1068]: ci-info: +--------+-------+-----------+-----------+-------+-------------------+
[ 16.312622] cloud-init[1068]: ci-info: | Device | Up | Address | Mask | Scope | Hw-Address |
[ 16.332577] cloud-init[1068]: ci-info: +--------+-------+-----------+-----------+-------+-------------------+
[ 16.352578] cloud-init[1068]: ci-info: | ens4 | False | . | . | . | 42:01:0a:01:00:15 |
[ 16.373422] cloud-init[1068]: ci-info: | lo | True | 127.0.0.1 | 255.0.0.0 | host | . |
[ 16.392574] cloud-init[1068]: ci-info: | lo | True | ::1/128 | . | host | . |
[ 16.412605] cloud-init[1068]: ci-info: +--------+-------+-----------+-----------+-------+-------------------+
May 23 18:42:38 ubuntu-gui kernel: [ 2.077602] virtio_net virtio1 ens4: renamed from eth0
Ens4 似乎在 Serial0 中关闭,而 eth0 根本不存在。和都ifup ens4
返回ifup eth0
“未知接口”。
同一网络中的所有其他实例都具有连接性和 SSH,我很确定这不是防火墙问题。有没有办法确保使用该映像的所有实例都具有实际从 GCE 获取其 IP 地址的工作接口?
提前致谢!
编辑1:
在尝试排除故障时,我发现新实例确实检测到了网络接口。尽管据我所知似乎没有办法启用它们。
ykoolhout@ubuntu-gui:~$ sudo ethtool ens4
Settings for ens4:
Supported ports: [ ]
Supported link modes: Not reported
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: Not reported
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: Unknown!
Duplex: Unknown! (255)
Port: Other
PHYAD: 0
Transceiver: internal
Auto-negotiation: off
Link detected: no
ykoolhout@ubuntu-gui:~$ sudo ifup ens4
Unknown interface ens4
编辑2:
似乎 Google 预配置虚拟机的方式在通过 安装 Ubuntu-GUI 时会损坏apt-get install ubuntu-desktop
。虚拟机仍可工作,但在制作虚拟机的机器映像并从该机器映像创建新实例时,新实例会破坏 Google 的客户环境。已发布新的后续问题这里。