创建实例
实例(Instance)是运行在云中的虚拟机。
在创建新实例之前,您要提前知晓以下参数:
实例的源可以是镜像,快照,或者包含镜像或快照的块存储设备。
实例的名字。
您实例的型号,这个型号决定了您nova实例的CPU,内存和磁盘空间情况。型号(flavor)是您虚拟机的硬件可用配置。它决定了您能创建的虚拟机的大小。
任意的用户数据文件。用户数据文件时在元数据服务中的一个特殊的键,它保存了一份能给虚拟机实例中的云服务使用的文件。比如,
cloud-init程序便使用了用户数据文件,这个程序是一个源自Ubuntu的开源包,能用在多个Linux发行版上,能够接管云实例的初始化过程。访问权限和安全认证信息,其中包括以下认证信息:
密钥对。密钥对能在镜像启动的时候注入进镜像中,不过前提时该镜像必须包含cloud-init包。您要为每个Project建立至少一个密钥对。如果您已经通过外部工具创建了密钥对,您可以将其导入OpenStack。在一个Project内的多个实例可以共用一个密钥对。
安全组。用来决定哪些网络流量能流至实例。安全组中包含了一组防火墙策略,被成为安全组规则。
如果您需要,您可以为运行中的实例分配一个浮动IP(公网地址)。
您还可以为实例安排一个块存储设备,或者说卷,来做持久化存储。
注意: 使用默认安全组的实例,默认情况下是不能为任何外部IP访问到的。如果您想要让外部IP地址访问到某个实例,您必须修改默认安全组的规则。 不过您还可以通过分配浮动IP的方式让外部IP得以访问我们的实例。请参见Manage IP Addresses。
在您已经知晓了上述参数之后,您便可以通过镜像或卷来启动实例了。您可以从OpenStack的镜像直接启动实例,也可以从持久化卷上的镜像启动实例。OpenStack镜像服务提供了一个镜像池,能将其中的镜像提供给不同Project中的用户。
收集启动实例时需要用到的参数
在您开始之前,请先执行OpenStack RC文件。
列出可用的实例型号:
记下您想使用的服务器型号。
列出可用镜像:
记下您想使用哪个镜像来启动您的实例。
您也可以用grep来过滤结果,像下面这样:
列出可用的安全组:
注意: 如果您是管理员,您可以指定
--all-tenants参数来列出所有tenant的安全组。
记下您想套用在您新实例上的安全组。
如果您没有创建任何安全组,您可以将实例设置为只使用默认安全组。
您还可以用下面的命令来查看某一个安全组内的详细规则:
列出可用的密钥对,记下您想用在新实例SSH上的那对密钥。
通过镜像创建实例
在您已经掌握了所需的参数,运行如下命令来启动实例。要指定服务器名,型号ID和镜像ID:
此外,您可以在上面的命令中传入一个--key-name参数以指定您要用哪一个密钥对,以及用--security-groups参数来指定您要用哪一个安全组。您还可以在参数中添加元数据键值对,比如,您如果要为您的服务器添加一段简短的描述,用--meta description="My Server"参数即可。
您还可以用--user-data USER-DATA-FILE将用户数据文件传入新建的实例。
重要: 如果您创建实例时,
INSTANCE_NAME这一项的长度超过了63个字符,Compute会将其截断,保证dnsmasq能正常工作。这一动作的日志同时会保存在nova-network.log中。
请参看下面的命令。该命令创建了一个叫myCirrosServer的实例,型号时m1.small(ID是1),镜像是cirros-0.3.2-x86_64-uec(ID是397e713c-b95b-4186-ad46-6126863ea0a9),默认用户组,密钥对是KeyPair01,用户数据文件是cloudinit.file。
根据您提供的参数,上面的命令会返回如下服务器属性:
如果状态是“BUILD”,意味着实例已启动,但尚未上线。
如果状态是“ACTIVE”,意味着实例已经可以用了。
在打印出来的参数中查找ID这一项,这一项是服务器ID。您可以用这个ID获取到服务器详情,或者删掉这个服务器。
在参数中查找adminPass项,将管理员密码复制出来。用这个密码来登录服务器。
注意: 您可以在创建实例时,将任意本地文件注入系统,用
--file <dst-path=src-path>即可。您最多能存入五个文件。比如,您想用自定义的认证密钥文件放在实例中,而不是使用正常的SSH密钥注入的话,您可以用--file选项。如下是代码示例:
检查一下实例是否已上线成功:
该列表显示您在这个Project下的服务器ID,名称,状态,私网IP(如果有公网IP也会显示)。
如果实例的状态是ACTIVE,则该实例已经上线了。
如果要查看所有
nova list后面可以接的命令,可以执行以下命令:
注意: 如果您不提供密钥对,安全组,或者安全组规则,那您只能通过云内提供的VNC来访问这个实例。连ping这个实例都ping不通。
Last updated
Was this helpful?