1.7. 镜像预缓存


Red Hat OpenStack Platform (RHOSP) director 可以预缓存镜像作为 glance-api 服务的一部分。

使用 Image 服务(glance)命令行客户端进行镜像管理。

1.7.1. 为定期镜像预缓存配置默认间隔

Red Hat OpenStack Platform (RHOSP) director 可以预缓存镜像作为 glance-api 服务的一部分。

预缓存定期作业在每个运行 glance-api 服务的控制器节点上每 300 秒(5 分钟默认时间)运行一次。要更改默认时间,您可以在 glance-api.conf 的 Default 部分下设置 cache_prefetcher_interval 参数。

流程

  1. 根据您的要求, undercloud 的环境文件中添加新间隔:

    Copy to Clipboard Toggle word wrap
    parameter_defaults:
      ControllerExtraConfig:
        glance::config::glance_api_config:
          DEFAULT/cache_prefetcher_interval:
            value: '<300>'

    将 <300> 替换为您要作为预缓存镜像间隔的秒数。

  2. 在调整了 /home/stack/templates/ 中的环境文件中的间隔后,以 stack 用户身份登录并部署配置:

    Copy to Clipboard Toggle word wrap
    $ openstack overcloud deploy --templates \
    -e /home/stack/templates/<env_file>.yaml

    将 <env_file> 替换为包含您添加的 ExtraConfig 设置的环境文件名称。

    重要

    如果您在创建 overcloud 时传递任何额外的环境文件,请使用 -e 选项再次传递这些文件,以避免对 overcloud 进行不必要的更改。

有关 openstack overcloud deploy 命令的更多信息,请参阅 Director 安装和使用 指南中的 部署命令https://access.redhat.com/documentation/zh-cn/red_hat_openstack_platform/17.0/html-single/director_installation_and_usage/index#deployment-command

1.7.2. 使用定期作业预缓存镜像

使用定期作业来预缓存镜像。

先决条件

要使用定期作业来预缓存镜像,您必须使用直接连接到运行 glance_api 服务的节点的 glance-cache-manage 命令。不要使用代理,这会隐藏回答服务请求的节点。由于 undercloud 可能无法访问运行 glance_api 服务的网络,因此在第一个 overcloud 节点上运行命令,这默认称为 controller-0

完成以下先决条件流程,以确保从正确的主机运行命令、具有必要的凭据,也从 glance-api 容器内运行 glance-cache-manage 命令。

流程

  1. 以 stack 用户身份登录 undercloud,并识别 controller-0 的调配 IP 地址:

    Copy to Clipboard Toggle word wrap
    (undercloud) [stack@site-undercloud-0 ~]$ openstack server list -f value -c Name -c Networks | grep controller
    overcloud-controller-1 ctlplane=192.168.24.40
    overcloud-controller-2 ctlplane=192.168.24.13
    overcloud-controller-0 ctlplane=192.168.24.71
    (undercloud) [stack@site-undercloud-0 ~]$
  2. 要向 overcloud 进行身份验证,将存储在 /home/stack/overcloudrc 中的凭证复制到 controller-0

    Copy to Clipboard Toggle word wrap
    $ scp ~/overcloudrc tripleo-admin@192.168.24.71:/home/tripleo-admin/
  3. 连接到 controller-0

    Copy to Clipboard Toggle word wrap
    $ ssh tripleo-admin@192.168.24.71
  4. controller-0 上,以 tripleo-admin 用户身份,识别 glance_api 服务的 IP 地址。在以下示例中,IP 地址为 172.25.1.105:

    Copy to Clipboard Toggle word wrap
    (overcloud) [root@controller-0 ~]# grep -A 10 '^listen glance_api' /var/lib/config-data/puppet-generated/haproxy/etc/haproxy/haproxy.cfg
    listen glance_api
     server central-controller0-0.internalapi.redhat.local 172.25.1.105:9292 check fall 5 inter 2000 rise 2
  5. 由于 glance-cache-manage 命令仅在 glance_api 容器中可用,因此要执行的脚本来执行到该容器,其中已设置了向 overcloud 进行身份验证的环境变量。在 controller-0 上的 /home/tripleo-admin 中创建一个名为 glance_pod.sh 的脚本,其内容如下:

    Copy to Clipboard Toggle word wrap
    sudo podman exec -ti \
     -e NOVA_VERSION=$NOVA_VERSION \
     -e COMPUTE_API_VERSION=$COMPUTE_API_VERSION \
     -e OS_USERNAME=$OS_USERNAME \
     -e OS_PROJECT_NAME=$OS_PROJECT_NAME \
     -e OS_USER_DOMAIN_NAME=$OS_USER_DOMAIN_NAME \
     -e OS_PROJECT_DOMAIN_NAME=$OS_PROJECT_DOMAIN_NAME \
     -e OS_NO_CACHE=$OS_NO_CACHE \
     -e OS_CLOUDNAME=$OS_CLOUDNAME \
     -e no_proxy=$no_proxy \
     -e OS_AUTH_TYPE=$OS_AUTH_TYPE \
     -e OS_PASSWORD=$OS_PASSWORD \
     -e OS_AUTH_URL=$OS_AUTH_URL \
     -e OS_IDENTITY_API_VERSION=$OS_IDENTITY_API_VERSION \
     -e OS_COMPUTE_API_VERSION=$OS_COMPUTE_API_VERSION \
     -e OS_IMAGE_API_VERSION=$OS_IMAGE_API_VERSION \
     -e OS_VOLUME_API_VERSION=$OS_VOLUME_API_VERSION \
     -e OS_REGION_NAME=$OS_REGION_NAME \
    glance_api /bin/bash
  6. Source overcloudrc 文件,运行 glance_pod.sh 脚本,以使用必要的环境变量在 glance_api 中执行以在 overcloud Controller 节点中进行身份验证。

    Copy to Clipboard Toggle word wrap
    [tripleo-admin@controller-0 ~]$ source overcloudrc
    (overcloudrc) [tripleo-admin@central-controller-0 ~]$ bash glance_pod.sh
    ()[glance@controller-0 /]$
  7. 使用 glance image-list 等命令来验证容器是否可以针对 overcloud 运行经过身份验证的命令。

    Copy to Clipboard Toggle word wrap
    ()[glance@controller-0 /]$ glance image-list
    +--------------------------------------+----------------------------------+
    | ID                                   | Name                             |
    +--------------------------------------+----------------------------------+
    | ad2f8daf-56f3-4e10-b5dc-d28d3a81f659 | cirros-0.4.0-x86_64-disk.img       |
    +--------------------------------------+----------------------------------+
    ()[glance@controller-0 /]$

流程

  1. 以 admin 用户身份,将镜像排队到缓存:

    Copy to Clipboard Toggle word wrap
    $ glance-cache-manage --host=<host_ip> queue-image <image_id>
    • 将 <host_ip> 替换为运行 glance-api 容器的 Controller 节点的 IP 地址。
    • 将 <image_id> 替换为您要队列的镜像 ID。

      当您排队了您要预缓存的镜像时,cache_images 会同时抓取所有排队的镜像。

      注意

      由于镜像缓存对每个节点是本地的,因此如果您的 Red Hat OpenStack Platform 部署有 HA (3、5 或 7 控制器),那么在运行 glance-cache-manage 命令时必须使用-- host 选项指定主机地址。

  2. 运行以下命令,以查看镜像缓存中的镜像:

    Copy to Clipboard Toggle word wrap
    $ glance-cache-manage --host=<host_ip> list-cached

    将 <host_ip> 替换为环境中主机的 IP 地址。

相关信息

您可以对以下目的使用额外的 glance-cache-manage 命令:

  • list-cached,以列出当前缓存的所有镜像。
  • list-queued,列出当前排队以缓存的所有镜像。
  • queue-image,为镜像排队以进行缓存。
  • delete-cached-image 从缓存中清除镜像。
  • delete-all-cached-images,从缓存中删除所有镜像。
  • delete-queued-image 从缓存队列中删除镜像。
  • delete-all-queued-images,以从缓存队列中删除所有镜像。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat, Inc.