【OpenStack(Train版)安装部署(十五)】之Glance的API测试,报错处理

本文章由公号【开发小鸽】发布!欢迎关注!!!


老规矩–妹妹镇楼:

1. glance镜像服务的API使用

(1)image镜像的状态

       queued Image 服务为目录中的图像保留了一个图像 ID,但尚未上传任何图像数据。

       saving Image 服务正在将图像的原始数据保存到后备存储中。

       active 图像处于活动状态并准备好在 Image 服务中使用。

       killed 发生图像数据上传错误。

       deleted 图像服务保留有关图像的信息,但图像不再可用。

       pending_delete deleted状态类似。处于这种状态的图像是不可恢复的。

       deactivated 图像数据不可使用。

       uploading 数据已作为可互操作的图像导入过程的一部分进行暂存。它尚未可供使用。 (从图像 API 2.6 开始)

       importing 图像数据正在作为可互操作图像导入过程的一部分进行处理,但尚不可使用。 (从图像 API 2.6 开始)


(2)image镜像的可见性

       public 任何用户都可以读取图像及其数据负载。此外,该图像会出现在所有用户的默认图像列表中。

       community 任何用户都可以读取到的图像和数据的有效载荷,但图像也 不会出现在所有者以外的任何用户的默认图像列表。(此可见性值是在 Image API v2.5 中添加的)

       shared 图像必须具有此可见性才能将图像成员添加到其中。只有所有者和已添加到图像的特定图像成员可以读取图像或其数据负载。

       该图像出现在所有者的默认图像列表中。它还会出现在已接受该图像的成员的默认图像列表中。有关更多信息,请参阅本文档的图像共享部分。

       如果您在创建图像时未指定可见性值,则默认情况下会为其分配此可见性。但是,非所有者在被添加为图像成员之前将无权访问图像。(此可见性值是在 Image API v2.5 中添加的)

       private 只有所有者图像可以读取图像或其数据负载。此外,图像会出现在所有者的默认图像列表中。从 Image API v2.5 开始,具有私有可见性的图像不能添加成员。


(3)查询出所有的image

在这里插入图片描述

       可以通过该API查询出所有的image,如下的url能够直接查询出所有的image镜像,注意,要在request header中添加刚刚查询出来的用户token信息,设置为X-Auth-Token首部字段。
在这里插入图片描述

       结果如下所示,查询出了所有的image镜像:

{
    "images": [
        {
            "container_format": "bare",
            "min_ram": 0,
            "updated_at": "2021-10-04T06:17:51Z",
            "file": "/v2/images/0c04d636-815a-4750-8e14-7f2768030527/file",
            "owner": "a7d812868cb74f1a978035530f55f1d0",
            "id": "0c04d636-815a-4750-8e14-7f2768030527",
            "size": 2357547008,
            "self": "/v2/images/0c04d636-815a-4750-8e14-7f2768030527",
            "disk_format": "vhd",
            "os_hash_algo": "sha512",
            "schema": "/v2/schemas/image",
            "status": "active",
            "tags": [],
            "visibility": "public",
            "min_disk": 0,
            "virtual_size": null,
            "name": "chrome_vhd",
            "checksum": "2b35d15e5c5fa135267ab020cfeb994b",
            "created_at": "2021-10-04T06:17:29Z",
            "os_hidden": false,
            "protected": false,
            "os_hash_value": "b28a766c912a9f6a2d16d96b87dd03e46407a2433d6fe4d34d6d6a1ed63f31e28d33a4e49076d6c1c18d9fd80f782bd2d95780b03b51c24a49fe5432a151de48"
        },
        {
            "container_format": "bare",
            "min_ram": 0,
            "updated_at": "2021-10-04T05:37:46Z",
            "file": "/v2/images/1ff93663-5f1d-4e71-b2da-87603724db12/file",
            "owner": "a7d812868cb74f1a978035530f55f1d0",
            "id": "1ff93663-5f1d-4e71-b2da-87603724db12",
            "size": 7868645616,
            "self": "/v2/images/1ff93663-5f1d-4e71-b2da-87603724db12",
            "disk_format": "qcow2",
            "os_hash_algo": "sha512",
            "schema": "/v2/schemas/image",
            "status": "active",
            "tags": [],
            "visibility": "public",
            "min_disk": 0,
            "virtual_size": null,
            "name": "win7_xshell_qcow2",
            "checksum": "823c8e7c12708950e4cd6585537598eb",
            "created_at": "2021-10-04T05:36:44Z",
            "os_hidden": false,
            "protected": false,
            "os_hash_value": "5d6b695a1156d132d5a0b920066a1d77f00fcb47ce4733bdd0cf068590f4cd3dd0d24a284070483c6127a5634d7469ebdc5b22f1347e9a521d8fd04a72f17f26"
        },
        {
            "container_format": "bare",
            "min_ram": 0,
            "updated_at": "2021-06-22T08:35:19Z",
            "file": "/v2/images/f7cdcc6a-dbec-4d4a-82c4-4170a9cc1a19/file",
            "owner": "a7d812868cb74f1a978035530f55f1d0",
            "id": "f7cdcc6a-dbec-4d4a-82c4-4170a9cc1a19",
            "size": 12716032,
            "self": "/v2/images/f7cdcc6a-dbec-4d4a-82c4-4170a9cc1a19",
            "disk_format": "qcow2",
            "os_hash_algo": "sha512",
            "schema": "/v2/schemas/image",
            "status": "active",
            "tags": [],
            "visibility": "public",
            "min_disk": 0,
            "virtual_size": null,
            "name": "cirros",
            "checksum": "443b7623e27ecf03dc9e01ee93f67afe",
            "created_at": "2021-06-22T08:35:18Z",
            "os_hidden": false,
            "protected": false,
            "os_hash_value": "6513f21e44aa3da349f248188a44bc304a3653a04122d8fb4535423c8e1d14cd6a153f735bb0982e2161b5b5186106570c17a9e58b64dd39390617cd5a350f78"
        }
    ],
    "schema": "/v2/schemas/images",
    "first": "/v2/images"
}

(4)排序查询所有的image

       对查询出来的image进行排序后输出,如根据image的name进行降序排序,sort_key是排序的参数,sort_dir是排序的方向:

GET /v2/images?sort_key=name&sort_dir=asc

       可以根据如下的参数进行设置:

•	container_format
•	disk_format
•	id
•	name
•	status

(5)查询出所有与image镜像相关的task任务

在这里插入图片描述

       传入参数:
在这里插入图片描述


(6)停用某个image镜像

       停用图像。 (自 Image API v2.3 起)

       默认情况下,此操作仅限于管理员。

       如果您尝试下载已停用的图像,您将收到 403(禁止)响应代码。此外,只有管理用户才能查看停用图像的图像位置。

       如果图像状态不是active或 ,则停用操作将返回错误deactivated。
在这里插入图片描述

       传入参数:
在这里插入图片描述

       查看镜像情况,该镜像已被停用:
在这里插入图片描述


(7)激活某个image镜像

在这里插入图片描述

       重新激活图像。 (自 Image API v2.3 起)

       默认情况下,此操作仅限于管理员。

       如果图像状态不是active或 ,则重新激活操作将返回错误deactivated。

       传入参数:
在这里插入图片描述

       image镜像的状态已经改变了:
在这里插入图片描述


(8)创建一个image镜像

       为操作系统磁盘映像创建目录记录。
在这里插入图片描述

       传入参数:
在这里插入图片描述

       得到响应如下所示:

{
    "container_format": "bare",
    "min_ram": 0,
    "updated_at": "2021-10-07T09:38:49Z",
    "file": "/v2/images/f90e107d-a5de-41d6-ad9c-2acd443e4a47/file",
    "owner": "a7d812868cb74f1a978035530f55f1d0",
    "id": "f90e107d-a5de-41d6-ad9c-2acd443e4a47",
    "size": null,
    "self": "/v2/images/f90e107d-a5de-41d6-ad9c-2acd443e4a47",
    "disk_format": "qcow2",
    "os_hash_algo": null,
    "schema": "/v2/schemas/image",
    "status": "queued",
    "tags": [],
    "visibility": "shared",
    "min_disk": 0,
    "virtual_size": null,
    "name": "cirros_3",
    "checksum": null,
    "created_at": "2021-10-07T09:38:49Z",
    "os_hidden": false,
    "protected": false,
    "os_hash_value": null
}

       查看该镜像的状态,可以看到该镜像没有上传本地文件,处于queued状态:


(9)删除一个image镜像

在这里插入图片描述

(自 Image API v2.0 起)删除图像。
       您不能删除protected属性设置为 true(boolean) 的图像。

先决条件
       • 您可以删除除 之外的任何状态的图像deleted。

       • 图片的protected属性不能是true。

       • 您有权在配置的图像删除策略下执行图像删除。

同步后置条件
       • 响应为空并返回 HTTP204响应代码。

       • API 从图像索引中删除图像。

       • 如果镜像在存储后端有关联的二进制镜像数据,OpenStack Image 服务会删除该数据

       传入参数:

在这里插入图片描述

       可以看到,该image镜像被删除了。

### OpenStack 创建和上传镜像时无法获取 Glance 服务本的解决方案 在 OpenStack 中创建和上传镜像时遇到 `cannot retrieve glance service version` 的错误可能由多种原因引起。以下是对此问题的分析以及解决方法: #### 错误分析 该错误通常表明客户端尝试连接到 Glance API 并检索其支持的服务本失败。这可能是由于网络配置不当、API 地址不正确或认证信息有误引起的。 如果虚拟化环境中存在其他错误,例如 QEMU 设备初始化失败[^1] 或者未正确定义虚拟化类型[^3],也可能间接影响镜像的正常创建过程。 --- #### 解决方案 ##### 1. 验证 Keystone 和 Glance 的服务状态 确认 Glance 和 Keystone 服务是否运行正常,并验证它们之间的通信是否畅通。可以使用以下命令检查服务端口和服务进程的状态: ```bash systemctl status openstack-glance-api.service curl http://<glance-endpoint>:9292/v2/images ``` 如果返回的结果为空或者显示权限不足,则需要重新核对用户的 Token 是否有效并具有访问权限。 ##### 2. 更新 Nova 配置文件中的虚拟化驱动设置 对于基于 KVM/QEMU 的虚拟化环境,在 `/etc/nova/nova.conf` 文件中应确保设置了正确的虚拟化类型。如果没有正确指定虚拟化驱动程序,可能会引发兼容性问题。可以通过如下方式调整配置项: ```ini [libvirt] virt_type=qemu ``` 此更改适用于 Red Hat Enterprise Linux (RHEL) 及其衍生发行上的调试场景。 ##### 3. 排查重复设备 ID 导致的问题 当尝试向虚拟机实例附加磁盘或其他硬件资源时,若出现了类似于 “Duplicate ID ‘virtio-disk2’” 这样的提示消息,则说明当前定义中有冲突的情况发生。建议清理残留的数据记录后再重试操作流程。 ##### 4. 安装必要的 Debug 工具包 为了更深入地诊断潜在的技术难题,安装对应的操作系统的 debug 软件包是非常重要的一步。例如针对 RHEL 系统而言,可执行下面这条指令来完成相关依赖组件的部署工作[^2]: ```bash yum install kernel-debuginfo kernel-debuginfo-common-x86_64 ``` --- #### 总结 通过上述措施能够有效地定位并修复因未能成功调取到目标存储库元数据而产生的异常状况。同时也要注意保持软件栈始终处于最新稳定本之上以便获得更好的性能表现与安全性保障。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值