Openstack创建实例--CLI篇

本文介绍通过OpenStack命令行工具创建虚拟机的过程,包括设置环境变量、生成密钥对、配置安全组规则及创建实例等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、首先source环境变量

每次登陆节点需要操作openstack命令时,都需要source一次环境变量,这样才可以正确的访问相应的用户信息。

[root@cloud ~]#source openrc.sh 


2、生成密钥对

[root@cloud ~]#openstack keypair create --public-key ~/.ssh/id_rsa.pub default

+-------------+-------------------------------------------------+

| Field       | Value                                         |

+-------------+-------------------------------------------------+

| fingerprint |72:5f:11:c0:6d:0e:1a:d3:b5:58:b6:9e:77:0d:1e:0a |

| name        | default                                       |

| user_id     | 057a81efc7914639ba8e84672dffd4fd               |

+-------------+-------------------------------------------------+


3、创建安全组规则

(1)添加允许进方向icmp报文规则

[root@cloud ~]#openstack security group rule create --ingress --ethertype IPv4 --protocol icmp c739ddd6-afda-4a35-b9d4-c2ee2edf6229

+-------------------+--------------------------------------+

| Field            | Value                               |

+-------------------+--------------------------------------+

| created_at        | 2017-06-13T05:42:41Z                |

| description       |                                     |

| direction         | ingress                             |

| ether_type        | IPv4                                |

| id               |98b627a2-6c16-44ec-bdfc-d56b57f28c3a |

| name             | None                                |

| port_range_max    | None                                |

| port_range_min    | None                                |

| project_id        | 4e79773819ff4f779802bceb4e7bf58a     |

| protocol         | icmp                                |

| remote_group_id   | None                                |

| remote_ip_prefix  | 0.0.0.0/0                           |

| revision_number   | 1                                   |

| security_group_id |c739ddd6-afda-4a35-b9d4-c2ee2edf6229 |

| updated_at        | 2017-06-13T05:42:41Z                |

+-------------------+--------------------------------------+

 (2)添加允许出方向icmp报文规则

[root@cloud ~]#openstack security grouprule create --ingress --ethertype IPv4 --protocol icmp c739ddd6-afda-4a35-b9d4-c2ee2edf6229

 (3)添加允许所有tcp报文规则

[root@cloud ~]#openstack security group rulecreate --ingress --ethertype IPv4 --protocol tcp --dst-port 1:65535   --remote-ip 0.0.0.0/0 c739ddd6-afda-4a35-b9d4-c2ee2edf6229

 

4、创建实例

[root@cloud ~]#openstack server create --image cirros --flavor m1.tiny --key-name default--nic net-id=51ec6ecc-896f-495b-bb97-e103d3d49a01 demo1

+-------------------------------------+----------------------------------------+

| Field                              | Value                                |

+-------------------------------------+----------------------------------------+

| OS-DCF:diskConfig                  |MANUAL                               |

| OS-EXT-AZ:availability_zone         |                                       |

| OS-EXT-SRV-ATTR:host               | None                                 |

|OS-EXT-SRV-ATTR:hypervisor_hostname | None                                 |

| OS-EXT-SRV-ATTR:instance_name       |                                       |

| OS-EXT-STS:power_state             | NOSTATE                               |

| OS-EXT-STS:task_state              | scheduling                            |

| OS-EXT-STS:vm_state                | building                              |

| OS-SRV-USG:launched_at             | None                                 |

| OS-SRV-USG:terminated_at           | None                                 |

| accessIPv4                         |                                       |

| accessIPv6                         |                                       |

| addresses                          |                                       |

| adminPass                          | B46TZFkwsJ7w                          |

| config_drive                       |                                      |

| created                            | 2017-06-13T03:48:13Z                  |

| flavor                             | m1.tiny (1)                           |

| hostId                             |                                       |

| id                                |eabed65d-d2a7-4e6b-b5b5-fab7f3f0dcc8   |

| image                              | cirros (301cd776-a178-40ee-805c-       |

|                                   | 7b3998f33869)                         |

| key_name                           | default                               |

| name                               | demo1                                |

| progress                           | 0                                     |

| project_id                         | 4e79773819ff4f779802bceb4e7bf58a       |

| properties                         |                                       |

| security_groups                    | name='default'                        |

| status                             | BUILD                                |

| updated                            | 2017-06-13T03:48:13Z                  |

| user_id                            | 057a81efc7914639ba8e84672dffd4fd       |

| volumes_attached                   |                                      |

+-------------------------------------+----------------------------------------+


5、查看web界面,如下:



至此,利用命令行创建vm完毕。

<think>好的,我需要解决用户提出的问题:在OpenStack创建实例,镜像未显示的问题。用户想知道解决方案错误原因。首,我要回忆一下OpenStack的相关知识,并结合提供的引用内容进行分析。 根据用户提供的引用,有三个相关引用。引用[1]提到存储池配置合理可能导致临硬盘空间足,引用[2]涉及导出镜像制作镜像的方法,引用[3]则是一个创建实例的编码错误。虽然这些引用完全直接对应镜像未显示的问题,但可能从中找到一些线索。 首,镜像未显示的可能原因有哪些呢?可能包括镜像未正确上传或注册,权限问题导致用户无法查看镜像,镜像状态是“active”,或者Glance服务有问题。另外,可能还有网络问题导致前端无法加载镜像列表,或者项目配额限制导致无法选择镜像。 接下来,结合引用内容,引用[2]提到导出镜像在另一个环境使用,这可能与镜像的可用性有关。如果镜像没有正确上传到当前项目,或者跨项目共享未设置,用户可能看到镜像。此外,引用[3]中的编码错误虽然同,但可能暗示在创建镜像或实例存在配置错误,可能影响到镜像的显示。 解决方案方面,需要检查镜像的状态是否正常,确保镜像已上传到正确的项目,并且用户有权限访问。同,确认Glance服务是否正常运行,检查日志是否有错误。另外,查看前端界面是否有缓存问题,或者是否有配额限制导致镜像可选。 可能还需要考虑网络问题,比如Glance API无法访问,导致前端无法获取镜像列表。此外,如果使用共享文件系统,存储配置问题(如引用[1]提到的存储池配置)可能间接影响镜像的可用性,但更直接的是镜像本身的状态权限。 最后,需要验证解决方案,比如重新上传镜像,检查权限设置,重启相关服务等。同,用户可能需要查看日志文件,如Glance服务的日志,或者前端界面的错误提示,以更准确地定位问题。</think>### OpenStack创建实例镜像未显示的解决方案 #### 错误原因分析 1. **镜像未正确上传或注册** - 镜像文件未完整上传到Glance服务,或注册元数据填写错误(如格式匹配)。 - 检查镜像状态:需确保镜像状态为`active`,而非`queued`或`error`。可通过命令 `openstack image list` 查看[^2]。 2. **权限问题** - 镜像未共享给当前项目,或用户角色无权限访问该镜像。需检查镜像的 `visibility` 属性(如 `public`、`private`)及项目成员权限[^2]。 3. **Glance服务异常** - Glance服务未正常运行,导致镜像列表无法加载。检查服务状态:`systemctl status glance-api`,并查看日志 `/var/log/glance/api.log`。 4. **前端缓存或配置问题** - 控制面板(如Horizon)缓存未更新,或配置文件中镜像存储路径错误。 5. **配额限制** - 项目配额用尽可能导致镜像无法显示。通过 `openstack quota show` 确认资源余量[^1]。 --- #### 逐步解决方案 1. **验证镜像状态** 执行以下命令查看镜像列表及状态: ```bash openstack image list --all-projects ``` - 若镜像状态为`error`,需重新上传;若为`private`,需通过 `openstack image set --public <IMAGE_ID>` 设为公开或共享给当前项目。 2. **检查权限配置** - 在控制面板中,进入 **管理员 > 镜像 > 镜像详情**,确认 **成员** 选项卡中已添加当前项目。 -使用CLI运行: ```bash openstack image add project <IMAGE_ID> <PROJECT_ID> ``` 3. **重启Glance服务** ```bash systemctl restart glance-api ``` 观察日志是否有异常: ```bash tail -f /var/log/glance/api.log ``` 4. **清理前端缓存** - 清除浏览器缓存,或重启Horizon服务: ```bash systemctl restart httpd ``` 5. **验证存储配置** - 若镜像存储在共享文件系统(如NFS),检查挂载点是否正常。例如: ```bash df -h | grep /var/lib/glance ``` - 参考引用[1],确保存储池未过度分配或空间充足。 --- #### 相关引用说明 - **镜像跨环境迁移问题**:若镜像从其他环境导入,需确保格式兼容(如QCOW2)且元数据完整。 - **编码错误关联**:若镜像名称含非ASCII字符(如中文),可能引发元数据解析错误,需重命名后重新上传[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值