在通过 python 脚本创建实例之前,我创建了一个子网。
def subnet_create(self, network_id, **kwargs):
params = {'name': kwargs.get("name"),
'cidr': kwargs.get("cidr"),
'ip_version': 4,
'enable_dhcp': True}
body = {'subnet': {'network_id': network_id}}
body['subnet'].update(params)
return self.neutron_client.create_subnet(body=body).get("subnet")
之后我通过代码创建一个实例:
compute_srv = self.nova_cli.instance_create(
compute_inst["name"],
compute_inst["image"],
compute_inst["flavor"],
key_name=compute_inst["key_name"],
user_data=compute_inst["user_data"],
security_groups=compute_inst["security_groups"],
nics=compute_inst["nics"])
地平线显示子网和实例创建成功,但是当我打开控制台页面时,有时终端显示实例无法连接到元数据服务器:
calling 'http://169.254.2169.254/2009-04-04/metadata/instance-id' failed
当前实例无法ping通子网网关,但其他子网的实例可以ping通本实例。
这个问题并非每次都存在。有时可能会显示实例已附加到元数据服务器,并且主机名、IP地址可以设置正确。
但是当我通过 Horizon 手动创建子网时,实例总是能够连接元数据服务器。
我很困惑,我在这里呆了大约整整一个星期。有人知道为什么吗?非常感谢。