3.5. 为 vSphere 配置 registry

3.5.1. 安装过程中删除的镜像 registry

在不提供可共享对象存储的平台上,OpenShift Image Registry Operator bootstraps 本身的状态是 Removed。这允许 openshift-installer 在这些平台类型上完成安装。

ManagementState Image Registry Operator 配置从 Removed 改为 Managed

注意

Prometheus 控制台提供了一个 ImageRegistryRemoved 警报,例如:

"Image Registry has been removed.ImageStreamTags, BuildConfigs and DeploymentConfigs which reference ImageStreamTags may not work as expected.Please configure storage and update the config to Managed state by editing configs.imageregistry.operator.openshift.io."

3.5.2. 更改镜像 registry 的管理状态

要启动镜像 registry,需要把 Image Registry Operator 配置的 managementStateRemoved 改为 Managed

流程

  • managementState Image Registry Operator 配置从 Removed 改为 Managed。例如:

    $ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"managementState":"Managed"}}'

3.5.2.1. 镜像 registry 存储配置

对于不提供默认存储的平台,Image Registry Operator 最初将不可用。安装后,您必须配置 registry 使用的存储,这样 Registry Operator 才可用。

提供了配置持久性卷的说明,这是生产集群所需要的;也提供了将空目录配置为存储位置的说明,这仅适用于非生产集群。

3.5.3. 为 VMware vSphere 配置 registry 存储

作为集群管理员,在安装后需要配置 registry 来使用存储。

先决条件

  • 具有 Cluster Administrator 权限
  • VMware vSphere上有一个集群。
  • 为集群置备的持久性存储,如 Red Hat OpenShift Container Storage。

    重要

    如果您只有一个副本,OpenShift Container Platform 支持对镜像 registry 存储的 ReadWriteOnce 访问。要部署支持高可用性的、带有两个或多个副本的镜像 registry,需要 ReadWriteMany 访问设置。

  • 必须有“ 100Gi”容量。
重要

测试显示,在 RHEL 中使用 NFS 服务器作为核心服务的存储后端可能会出现问题。这包括 OpenShift Container Registry 和 Quay,Prometheus 用于监控存储,以及 Elasticsearch 用于日志存储。因此,不推荐使用 RHEL NFS 作为 PV 后端用于核心服务。

市场上的其他 NFS 实现可能没有这些问题。如需了解更多与此问题相关的信息,请联络相关的 NFS 厂商。

流程

  1. 为了配置 registry 使用存储,需要修改 configs.imageregistry/cluster 资源中的 spec.storage.pvc

    注意

    使用共享存储时,请查看您的安全设置以防止被外部访问。

  2. 验证您没有 registry pod:

    $ oc get pod -n openshift-image-registry
    注意

    如果存储类型为 emptyDIR,则副本数不能超过 1

  3. 检查 registry 配置:

    $ oc edit configs.imageregistry.operator.openshift.io

    输出示例

    storage:
      pvc:
        claim: 1

    1
    claim 字段留空以允许自动创建一个 image-registry-storage PVC。
  4. 检查 clusteroperator 的状态:

    $ oc get clusteroperator image-registry

3.5.4. 在非生产集群中配置镜像 registry 存储

您必须为 Image Registry Operator 配置存储。对于非生产集群,您可以将镜像 registry 设置为空目录。如果您这样做,重启 registry 后会丢失所有镜像。

流程

  • 将镜像 registry 存储设置为空目录:

    $ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"storage":{"emptyDir":{}}}}'
    警告

    仅可为非生产集群配置这个选项。

    如果在 Image Registry Operator 初始化其组件前运行此命令,oc patch 命令会失败并显示以下错误:

    Error from server (NotFound): configs.imageregistry.operator.openshift.io "cluster" not found

    等待几分钟,然后再次运行该命令。

3.5.5. 为 VMware vSphere 配置块 registry 存储

在作为集群管理员升级时,要允许镜像 registry 使用块存储类型,如 vSphere Virtual Machine Disk(VMDK),您可以使用 Recreate rollout 策略。

重要

支持块存储卷,但不建议将其用于生产环境中的镜像 registry。在块存储上配置 registry 的安装不具有高可用性,因为 registry 无法拥有多个副本。

流程

  1. 要将镜像 registry 存储设置为块存储类型,对 registry 进行补丁,使其使用 Recreate rollout 策略,且仅使用 1 个副本运行:

    $ oc patch config.imageregistry.operator.openshift.io/cluster --type=merge -p '{"spec":{"rolloutStrategy":"Recreate","replicas":1}}'
  2. 为块存储设备置备 PV,并为该卷创建 PVC。请求的块卷使用 ReadWriteOnce(RWO)访问模式。

    1. 创建包含以下内容的 pvc.yaml 文件以定义 VMware vSphere PersistentVolumeClaim :

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: image-registry-storage 1
      spec:
        accessModes:
        - ReadWriteOnce 2
        resources:
          requests:
            storage: 100Gi 3
      1
      代表 PersistentVolumeClaim 对象的唯一名称。
      2
      PersistentVolumeClaim 的访问模式。使用 ReadWriteOnce 时,单个节点可以通过读写权限挂载这个卷。
      3
      PersistentVolumeClaim 的大小。
    2. 从文件创建 PersistentVolumeClaim 对象:

      $ oc create -f pvc.yaml
  3. 编辑 registry 配置,使其可以正确引用 PVC:

    $ oc edit config.imageregistry.operator.openshift.io -o yaml

    输出示例

    storage:
      pvc:
        claim: 1

    1
    通过创建自定义 PVC,您可以将 claim 字段留空以用于默认自动创建 image-registry-storage PVC。

有关配置 registry 存储以便引用正确的 PVC 的说明,请参阅为 vSphere 配置 registry

3.5.6. 其他资源

有关为 vSphere 配置 registry 存储的详情,请参考推荐的可配置存储技术