第 4 章 为 OpenShift Container Platform 服务配置存储
您可以使用 OpenShift Data Foundation 为 OpenShift Container Platform 服务(如镜像 registry、监控和日志记录)提供存储。
为这些服务配置存储的过程取决于 OpenShift Data Foundation 部署中使用的基础架构。
始终确保您具有适用于这些服务的大量存储容量。如果这些关键服务的存储空间不足,集群就会变得不可用,且很难恢复。
红帽建议为这些服务配置较短的策展和保留间隔。详情请参阅 OpenShift Container Platform 文档中的为 Prometheus 指标数据配置 Curator 调度和修改保留时间。
如果您确实耗尽这些服务的存储空间,请联系红帽客户支持。
4.1. 将镜像 registry 配置为使用 OpenShift Data Foundation
OpenShift Container Platform 提供了一个内建的容器镜像 Registry,它作为一个标准的工作负载在集群中运行。registry 通常用作集群中构建的镜像的发布目标,以及在集群中运行的工作负载的镜像源。
从 OpenShift Container Plaform 4.11 开始,对象存储是配置镜像 registry 的建议后端存储。
按照本节中的说明,将 OpenShift Data Foundation 配置为 Container Image Registry 的存储。在 AWS 中,不需要更改 registry 的存储。但是,建议将存储更改为 vSphere 和裸机平台的 OpenShift Data Foundation 持久卷。
此过程不会将数据从现有镜像 registry 迁移到新镜像 registry。如果您在现有 registry 中已有容器镜像,请在完成此过程前备份 registry,并在这个过程完成后重新注册您的镜像。
4.1.1. 将 Multicloud 对象网关配置为 OpenShift 镜像 registry 的后端存储
从 OpenShift Container Platform 版本 4.11 开始,您可以在一个 on-prem OpenShift 部署中使用 Multicloud Object Gateway (MCG)作为 OpenShift 镜像 registry 后端存储。
先决条件
- OpenShift Web 控制台的管理访问权限.
- 使用 MCG 运行 OpenShift Data Foundation 集群。
流程
-
按照 Creating Object Bucket Claim 中的步骤创建
ObjectBucketClaim
。 创建
image-registry-private-configuration-user
secret。- 进入 OpenShift web-console。
- 点 ObjectBucketClaim -→ ObjectBucketClaim Data。
-
在 ObjectBucketClaim 数据 中,在
openshift-image-registry namespace
中查找MCG access key
和MCG secret key
。 使用以下命令创建 secret:
$ oc create secret generic image-registry-private-configuration-user --from-literal=REGISTRY_STORAGE_S3_ACCESSKEY=<MCG Accesskey> --from-literal=REGISTRY_STORAGE_S3_SECRETKEY=<MCG Secretkey> --namespace openshift-image-registry
将 Image Registry Operator 的
managementState
改为 Managed。$ oc patch configs.imageregistry.operator.openshift.io/cluster --type merge -p '{"spec": {"managementState": "Managed"}}'
编辑 Image Registry Operator 配置文件的
spec.storage
部分:从 Web 控制台获取 Object Bucket Claim Data 部分下的
unique-bucket-name
和regionEndpoint
,或者也可以使用以下命令获取 regionEndpoint 和 unique-bucket-name 的信息:$ oc describe noobaa
将
regionEndpoint
添加为 http://<Endpoint-name>:<port> 如果-
StorageClass 是
ceph-rgw
存储类, - 端点指向来自 openshift-storage 命名空间中的内部 SVC。
-
StorageClass 是
在对 Operator registry 配置文件进行更改后,
image-registry
pod 会生成。$ oc edit configs.imageregistry.operator.openshift.io -n openshift-image-registry apiVersion: imageregistry.operator.openshift.io/v1 kind: Config metadata: [..] name: cluster spec: [..] storage: s3: bucket: <Unique-bucket-name> region: us-east-1 (Use this region as default) regionEndpoint: https://<Endpoint-name>:<port> virtualHostedStyle: false
将镜像 registry 设置重置为默认值。
$ oc get pods -n openshift-image-registry
验证步骤
运行以下命令检查是否成功将 MCG 配置为 OpenShift Image Registry 后端存储。
$ oc get pods -n openshift-image-registry
输出示例
$ oc get pods -n openshift-image-registry NAME READY STATUS RESTARTS AGE cluster-image-registry-operator-56d78bc5fb-bxcgv 2/2 Running 0 44d image-pruner-1605830400-29r7k 0/1 Completed 0 10h image-registry-b6c8f4596-ln88h 1/1 Running 0 17d node-ca-2nxvz 1/1 Running 0 44d node-ca-dtwjd 1/1 Running 0 44d node-ca-h92rj 1/1 Running 0 44d node-ca-k9bkd 1/1 Running 0 44d node-ca-stkzc 1/1 Running 0 44d node-ca-xn8h4 1/1 Running 0 44d
(可选)您也可以运行以下命令来验证是否将 MCG 配置为 OpenShift Image Registry 后端存储。
$ oc describe pod <image-registry-name>
输出示例
$ oc describe pod image-registry-b6c8f4596-ln88h Environment: REGISTRY_STORAGE_S3_REGIONENDPOINT: http://s3.openshift-storage.svc REGISTRY_STORAGE: s3 REGISTRY_STORAGE_S3_BUCKET: bucket-registry-mcg REGISTRY_STORAGE_S3_REGION: us-east-1 REGISTRY_STORAGE_S3_ENCRYPT: true REGISTRY_STORAGE_S3_VIRTUALHOSTEDSTYLE: false REGISTRY_STORAGE_S3_USEDUALSTACK: true REGISTRY_STORAGE_S3_ACCESSKEY: <set to the key 'REGISTRY_STORAGE_S3_ACCESSKEY' in secret 'image-registry-private-configuration'> Optional: false REGISTRY_STORAGE_S3_SECRETKEY: <set to the key 'REGISTRY_STORAGE_S3_SECRETKEY' in secret 'image-registry-private-configuration'> Optional: false REGISTRY_HTTP_ADDR: :5000 REGISTRY_HTTP_NET: tcp REGISTRY_HTTP_SECRET: 57b943f691c878e342bac34e657b702bd6ca5488d51f839fecafa918a79a5fc6ed70184cab047601403c1f383e54d458744062dcaaa483816d82408bb56e686f REGISTRY_LOG_LEVEL: info REGISTRY_OPENSHIFT_QUOTA_ENABLED: true REGISTRY_STORAGE_CACHE_BLOBDESCRIPTOR: inmemory REGISTRY_STORAGE_DELETE_ENABLED: true REGISTRY_OPENSHIFT_METRICS_ENABLED: true REGISTRY_OPENSHIFT_SERVER_ADDR: image-registry.openshift-image-registry.svc:5000 REGISTRY_HTTP_TLS_CERTIFICATE: /etc/secrets/tls.crt REGISTRY_HTTP_TLS_KEY: /etc/secrets/tls.key
4.1.2. 将 OpenShift Data Foundation CephFS 配置为 OpenShift 镜像 registry 的后端存储
先决条件
- 具有 OpenShift Web 控制台的管理访问权限。
-
OpenShift Data Foundation Operator 在
openshift-storage
命名空间上安装并运行。在 OpenShift Web 控制台中,点 OperatorsInstalled Operators 查看已安装的 Operator。 -
Image Registry Operator 在
openshift-image-registry
命名空间中安装并运行。在 OpenShift Web 控制台中,点 AdministrationCluster Settings Cluster Operators 查看集群操作器。 -
带有 provisioner
openshift-storage.cephfs.csi.ceph.com
的存储类可用。在 OpenShift Web 控制台中,点 StorageStorageClasses 查看可用的存储类。
流程
为镜像 Registry 创建一个持久性卷声明。
-
在 OpenShift Web 控制台中,点击 Storage
Persistent Volume Claims。 -
将 Project 设置为
openshift-image-registry
。 单击 Create Persistent Volume Claim。
-
在上方检索的可用存储类列表中,使用置备程序
openshift-storage.cephfs.csi.ceph.com
指定存储类。 -
指定持久性卷声明 名称,如
ocs4registry
。 -
指定
Shared Access (RWX)
访问模式。 - 将 Size 指定为最少 100 GB。
点击 Create。
等待新持久卷声明的状态变为
Bound
。
-
在上方检索的可用存储类列表中,使用置备程序
-
在 OpenShift Web 控制台中,点击 Storage
将集群的 Image Registry 配置为使用新的持久卷声明。
-
点 Administration
Custom Resource Definitions。 -
点与
imageregistry.operator.openshift.io
组关联的Config
自定义资源定义。 - 点 实例 选项卡。
-
在集群实例外,点 Action Menu(⋮)
Edit Config。 添加新的持久性卷声明作为镜像 Registry 的持久性存储。
在
spec:
下添加以下内容,并替换现有的storage:
部分(如有必要)。storage: pvc: claim: <new-pvc-name>
例如:
storage: pvc: claim: ocs4registry
- 点击 Save。
-
点 Administration
验证新配置是否正在使用。
-
点击 Workloads
Pods。 -
将 Project 设置为
openshift-image-registry
。 -
验证新的
image-registry-*
pod 的状态是否为Running
,并且以前的image-registry-*
pod 已终止。 -
点击新
image-registry-*
Pod 查看 pod 详情。 -
向下滚动到 Volumes,再验证
registry-storage
卷是否具有与您的新持久性卷声明匹配的 Type,如ocs4registry
。
-
点击 Workloads