1.10. 使用镜像服务


采用 Glance 意味着应禁用 Glance 的现有 OpenStackControlPlane CR 补丁为启动服务,以使用源环境提供的配置参数启动。

当这个过程结束后,预期是查看 GlanceAPI 服务并运行:应更新 Keystone 端点,并且源云的同一后端可用。如果满足上述条件,则方法将被视为已结束。

本指南还假设:

  1. TripleO 环境(源云)在一个端运行;
  2. SNO / CodeReadyContainers 在另一端运行;
  3. (可选) crcTripleO都可以访问内部/外部 Ceph 集群

1.10.1. 先决条件

  • 以前的 Adoption 步骤已完成。值得注意的是,应已经采用 MariaDB 和 Keystone。

1.10.2. 流程 - Glance 采用

与已经为 Keystone 所做的一样,Glance Adoption 遵循相同的模式。

1.10.2.1. 使用本地存储后端

当 Glance 应使用本地存储后端(而非 Ceph)部署时,请修补 OpenStackControlPlane 来部署 Glance:

oc patch openstackcontrolplane openstack --type=merge --patch '
spec:
  glance:
    enabled: true
    apiOverride:
      route: {}
    template:
      databaseInstance: openstack
      storageClass: "local-storage"
      storageRequest: 10G
      glanceAPIs:
        default:
          replicas: 1
          type: single
          override:
            service:
              internal:
                metadata:
                  annotations:
                    metallb.universe.tf/address-pool: internalapi
                    metallb.universe.tf/allow-shared-ip: internalapi
                    metallb.universe.tf/loadBalancerIPs: 172.17.0.80
              spec:
                type: LoadBalancer
          networkAttachments:
          - storage
'
Copy to Clipboard Toggle word wrap

1.10.2.2. 使用 NFS 后端

当基于 TripleO 的源云使用带有 NFS 后端的 Glance 时,在修补 OpenStackControlPlane 以部署 Glance 之前,验证一些与网络相关的前提条件非常重要。在源云中,验证 overcloud 用来配置 Glance 后端的 NFS 参数。特别是,在 TripleO heat 模板中找到以下变量通常是覆盖 /usr/share/openstack-tripleo-heat-templates/environments/storage/glance-nfs.yaml[glance-nfs.yaml] 提供的默认内容:

GlanceBackend: file

GlanceNfsEnabled: true

GlanceNfsShare: 192.168.24.1:/var/nfs

在上例中,因为第一个变量显示,与 Cinder 不同,Glance 没有 NFS 后端:在这种情况下使用 File 驱动程序,在 scenes 后面,filesystem_store_datadir 通常指向 /var/lib/glance/images/ 被映射到 GlanceNfsShare 变量提供的导出值。如果 GlanceNfsShare 没有通过应当传播到采用的 OpenStack control plane 的网络导出,则人工管理员需要额外的操作,该操作必须停止 nfs-server 并将导出重新映射到 存储网络。当 Glance 服务在源控制器节点中停止时,通常会发生此操作。在 podified control plane 中,根据 (网络隔离图 )将 Glance 附加到存储网络,通过关联的 NetworkAttachmentsDefinition CR 传播,生成的 Pod 已经具有通过此网络处理镜像服务流量的适当权限。在部署的 OpenStack control plane 中,您可以使用以下命令检查 NodeNetworkConfigPolicy (nncp)和 NetworkAttachmentDefinition (net-attach-def)来验证网络映射是否与基于 TripleO 的环境中部署的内容匹配:

$ oc get nncp
NAME                        STATUS      REASON
enp6s0-crc-8cf2w-master-0   Available   SuccessfullyConfigured

$ oc get net-attach-def
NAME
ctlplane
internalapi
storage
tenant

$ oc get ipaddresspool -n metallb-system
NAME          AUTO ASSIGN   AVOID BUGGY IPS   ADDRESSES
ctlplane      true          false             ["192.168.122.80-192.168.122.90"]
internalapi   true          false             ["172.17.0.80-172.17.0.90"]
storage       true          false             ["172.18.0.80-172.18.0.90"]
tenant        true          false             ["172.19.0.80-172.19.0.90"]
Copy to Clipboard Toggle word wrap

以上代表了在 openshift 环境中应检查的输出示例,以确保传播的网络没有问题。

以下步骤假设:

  1. Storage 网络已传播到 openstack control plane
  2. Glance 能够访问存储网络,并通过端口 2049 连接到 nfs-server。

如果满足上述条件,可以采用 Glance 服务并创建与现有 NFS 共享连接的 新默认 GlanceAPI 实例。

cat << EOF > glance_nfs_patch.yaml

spec:
  extraMounts:
  - extraVol:
    - extraVolType: Nfs
      mounts:
      - mountPath: /var/lib/glance/images
        name: nfs
      propagation:
      - Glance
      volumes:
      - name: nfs
        nfs:
          path: /var/nfs
          server: 172.17.3.20
    name: r1
    region: r1
  glance:
    enabled: true
    template:
      databaseInstance: openstack
      customServiceConfig: |
         [DEFAULT]
         enabled_backends = default_backend:file
         [glance_store]
         default_backend = default_backend
         [default_backend]
         filesystem_store_datadir = /var/lib/glance/images/
      storageClass: "local-storage"
      storageRequest: 10G
      glanceAPIs:
        default:
          replicas: 1
          type: single
          override:
            service:
              internal:
                metadata:
                  annotations:
                    metallb.universe.tf/address-pool: internalapi
                    metallb.universe.tf/allow-shared-ip: internalapi
                    metallb.universe.tf/loadBalancerIPs: 172.17.0.80
              spec:
                type: LoadBalancer
          networkAttachments:
          - storage
EOF
Copy to Clipboard Toggle word wrap

:

glance_nfs_patch.yaml 中的 nfs/server ip 地址替换为用于访问 nfs-server 的 IP,并确保 nfs/path 指向 nfs-server 中的导出路径。

修补 OpenStackControlPlane 以使用 NFS 后端部署 Glance:

oc patch openstackcontrolplane openstack --type=merge --patch-file glance_nfs_patch.yaml
Copy to Clipboard Toggle word wrap

当 GlanceAPI 处于活跃状态时,您可以看到单个 API 实例:

$ oc get pods -l service=glance
NAME                      READY   STATUS    RESTARTS
glance-default-single-0   3/3     Running   0
Copy to Clipboard Toggle word wrap

pod 的描述必须报告:

Mounts:
...
  nfs:
    Type:      NFS (an NFS mount that lasts the lifetime of a pod)
    Server:    {{ server ip address }}
    Path:      {{ nfs export path }}
    ReadOnly:  false
...
Copy to Clipboard Toggle word wrap

也可以通过运行以下命令来重复检查挂载点:

oc rsh -c glance-api glance-default-single-0

sh-5.1# mount
...
...
{{ ip address }}:/var/nfs on /var/lib/glance/images type nfs4 (rw,relatime,vers=4.2,rsize=1048576,wsize=1048576,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=172.18.0.5,local_lock=none,addr=172.18.0.5)
...
...
Copy to Clipboard Toggle word wrap

您可以在 NFS 节点上运行 openstack image create 命令,并在 NFS 节点上运行 uuid 已在导出的目录中创建。

例如:

$ oc rsh openstackclient
$ openstack image list

sh-5.1$  curl -L -o /tmp/cirros-0.5.2-x86_64-disk.img http://download.cirros-cloud.net/0.5.2/cirros-0.5.2-x86_64-disk.img
...
...

sh-5.1$ openstack image create --container-format bare --disk-format raw --file /tmp/cirros-0.5.2-x86_64-disk.img cirros
...
...

sh-5.1$ openstack image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 634482ca-4002-4a6d-b1d5-64502ad02630 | cirros | active |
+--------------------------------------+--------+--------+
Copy to Clipboard Toggle word wrap

在 nfs-server 节点上,相同的 uuid 位于导出的 /var/nfs 中:

$ ls /var/nfs/
634482ca-4002-4a6d-b1d5-64502ad02630
Copy to Clipboard Toggle word wrap

1.10.2.3. 使用 Ceph 存储后端

如果使用 Ceph 后端,则应使用 customServiceConfig 参数将正确的配置注入 GlanceAPI 实例。

确保 openstack 命名空间中创建了与 Ceph 相关的 secret (ceph-conf-files),并且 OpenStackControlPlane CR 的 extraMounts 属性已正确配置。这些任务在配置 Ceph 后端的早期采用步骤中 进行了描述。

cat << EOF > glance_patch.yaml
spec:
  glance:
    enabled: true
    template:
      databaseInstance: openstack
      customServiceConfig: |
        [DEFAULT]
        enabled_backends=default_backend:rbd
        [glance_store]
        default_backend=default_backend
        [default_backend]
        rbd_store_ceph_conf=/etc/ceph/ceph.conf
        rbd_store_user=openstack
        rbd_store_pool=images
        store_description=Ceph glance store backend.
      storageClass: "local-storage"
      storageRequest: 10G
      glanceAPIs:
        default:
          replicas: 1
          override:
            service:
              internal:
                metadata:
                  annotations:
                    metallb.universe.tf/address-pool: internalapi
                    metallb.universe.tf/allow-shared-ip: internalapi
                    metallb.universe.tf/loadBalancerIPs: 172.17.0.80
              spec:
                type: LoadBalancer
          networkAttachments:
          - storage
EOF
Copy to Clipboard Toggle word wrap

修补 OpenStackControlPlane 以使用 Ceph 后端部署 Glance:

oc patch openstackcontrolplane openstack --type=merge --patch-file glance_patch.yaml
Copy to Clipboard Toggle word wrap

1.10.3. post-checks

1.10.3.1. 从 OpenStack CLI 测试 glance 服务

检查生成的 glance pod:

GLANCE_POD=`oc get pod |grep glance-default-external-0 | cut -f 1 -d' '`
oc exec -t $GLANCE_POD -c glance-api -- cat /etc/glance/glance.conf.d/02-config.conf

[DEFAULT]
enabled_backends=default_backend:rbd
[glance_store]
default_backend=default_backend
[default_backend]
rbd_store_ceph_conf=/etc/ceph/ceph.conf
rbd_store_user=openstack
rbd_store_pool=images
store_description=Ceph glance store backend.

oc exec -t $GLANCE_POD -c glance-api -- ls /etc/ceph
ceph.client.openstack.keyring
ceph.conf
Copy to Clipboard Toggle word wrap

Ceph 机密已正确挂载,此时,我们来转到 OpenStack CLI,并检查服务是否处于活动状态,并且端点已正确更新。

(openstack)$ service list | grep image

| fc52dbffef36434d906eeb99adfc6186 | glance    | image        |

(openstack)$ endpoint list | grep image

| 569ed81064f84d4a91e0d2d807e4c1f1 | regionOne | glance       | image        | True    | internal  | http://glance-internal-openstack.apps-crc.testing   |
| 5843fae70cba4e73b29d4aff3e8b616c | regionOne | glance       | image        | True    | public    | http://glance-public-openstack.apps-crc.testing     |
| 709859219bc24ab9ac548eab74ad4dd5 | regionOne | glance       | image        | True    | admin     | http://glance-admin-openstack.apps-crc.testing      |
Copy to Clipboard Toggle word wrap

检查您之前在源云中列出的镜像是否在 Aded 服务中可用:

(openstack)$ image list
+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| c3158cad-d50b-452f-bec1-f250562f5c1f | cirros | active |
+--------------------------------------+--------+--------+
Copy to Clipboard Toggle word wrap

1.10.3.2. 镜像上传

您可以测试可以在采用的服务上创建镜像。

(openstack)$ alias openstack="oc exec -t openstackclient -- openstack"
(openstack)$ curl -L -o /tmp/cirros-0.5.2-x86_64-disk.img http://download.cirros-cloud.net/0.5.2/cirros-0.5.2-x86_64-disk.img
    qemu-img convert -O raw /tmp/cirros-0.5.2-x86_64-disk.img /tmp/cirros-0.5.2-x86_64-disk.img.raw
    openstack image create --container-format bare --disk-format raw --file /tmp/cirros-0.5.2-x86_64-disk.img.raw cirros2
    openstack image list
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   273  100   273    0     0   1525      0 --:--:-- --:--:-- --:--:--  1533
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 15.5M  100 15.5M    0     0  17.4M      0 --:--:-- --:--:-- --:--:-- 17.4M

+------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| Field            | Value                                                                                                                                      |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------+
| container_format | bare                                                                                                                                       |
| created_at       | 2023-01-31T21:12:56Z                                                                                                                       |
| disk_format      | raw                                                                                                                                        |
| file             | /v2/images/46a3eac1-7224-40bc-9083-f2f0cd122ba4/file                                                                                       |
| id               | 46a3eac1-7224-40bc-9083-f2f0cd122ba4                                                                                                       |
| min_disk         | 0                                                                                                                                          |
| min_ram          | 0                                                                                                                                          |
| name             | cirros                                                                                                                                     |
| owner            | 9f7e8fdc50f34b658cfaee9c48e5e12d                                                                                                           |
| properties       | os_hidden='False', owner_specified.openstack.md5='', owner_specified.openstack.object='images/cirros', owner_specified.openstack.sha256='' |
| protected        | False                                                                                                                                      |
| schema           | /v2/schemas/image                                                                                                                          |
| status           | queued                                                                                                                                     |
| tags             |                                                                                                                                            |
| updated_at       | 2023-01-31T21:12:56Z                                                                                                                       |
| visibility       | shared                                                                                                                                     |
+------------------+--------------------------------------------------------------------------------------------------------------------------------------------+

+--------------------------------------+--------+--------+
| ID                                   | Name   | Status |
+--------------------------------------+--------+--------+
| 46a3eac1-7224-40bc-9083-f2f0cd122ba4 | cirros2| active |
| c3158cad-d50b-452f-bec1-f250562f5c1f | cirros | active |
+--------------------------------------+--------+--------+


(openstack)$ oc rsh ceph
sh-4.4$ ceph -s
r  cluster:
    id:     432d9a34-9cee-4109-b705-0c59e8973983
    health: HEALTH_OK

  services:
    mon: 1 daemons, quorum a (age 4h)
    mgr: a(active, since 4h)
    osd: 1 osds: 1 up (since 4h), 1 in (since 4h)

  data:
    pools:   5 pools, 160 pgs
    objects: 46 objects, 224 MiB
    usage:   247 MiB used, 6.8 GiB / 7.0 GiB avail
    pgs:     160 active+clean

sh-4.4$ rbd -p images ls
46a3eac1-7224-40bc-9083-f2f0cd122ba4
c3158cad-d50b-452f-bec1-f250562f5c1f
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat