$ oc get is <imagestream> -n openshift -o json | jq .spec.tags[].from.name | grep registry.redhat.io
您可以通过替换当前的拉取密钥或附加新的拉取密钥来更新集群的全局拉取密钥。当用户使用与安装期间使用的注册表不同的注册表来存储镜像时,需要此过程。更多信息,请参见 使用镜像拉取密钥。
有关镜像以及配置镜像流或镜像注册表的信息,请参见以下文档
在断开连接的环境中安装 OpenShift Container Platform 后,请为集群样本操作器和must-gather
镜像流配置镜像流。
安装期间,OpenShift Container Platform 在openshift-cluster-samples-operator
命名空间中创建一个名为imagestreamtag-to-image
的配置映射。imagestreamtag-to-image
配置映射包含一个条目(填充镜像),用于每个镜像流标签。
配置映射数据字段中每个条目的键的格式为<image_stream_name>_<image_stream_tag_name>
。
在断开连接安装 OpenShift Container Platform 期间,集群示例运算符的状态设置为已移除
。如果您选择将其更改为已管理
,它将安装示例。
在网络受限或断开连接的环境中使用示例可能需要访问网络外部的服务。一些示例服务包括:Github、Maven Central、npm、RubyGems、PyPi 等。可能需要采取其他步骤才能使集群示例运算符的对象访问其所需的服务。 |
您可以使用此 ConfigMap 作为参考,了解哪些镜像需要镜像才能导入您的镜像流。
当集群示例运算符设置为已移除
时,您可以创建镜像注册表,或确定要使用哪个现有的镜像注册表。
使用新的 ConfigMap 作为指南,将您想要的示例镜像到镜像注册表。
将您未镜像的任何镜像流添加到集群示例运算符配置对象的skippedImagestreams
列表中。
将集群示例运算符配置对象的samplesRegistry
设置为镜像注册表。
然后将集群示例运算符设置为已管理
以安装您已镜像的镜像流。
集群示例运算符管理的openshift
命名空间中的大多数镜像流指向位于 Red Hat 注册表 registry.redhat.io 中的镜像。
|
在断开连接的环境中,必须将集群示例运算符设置为 |
以具有cluster-admin
角色的用户身份访问集群。
为您的镜像注册表创建一个拉取密钥。
访问要镜像的特定镜像流的镜像,例如
$ oc get is <imagestream> -n openshift -o json | jq .spec.tags[].from.name | grep registry.redhat.io
镜像来自 registry.redhat.io 的与您需要的任何镜像流关联的镜像
$ oc image mirror registry.redhat.io/rhscl/ruby-25-rhel7:latest ${MIRROR_ADDR}/rhscl/ruby-25-rhel7:latest
创建集群的镜像配置对象
$ oc create configmap registry-config --from-file=${MIRROR_ADDR_HOSTNAME}..5000=$path/ca.crt -n openshift-config
在集群的镜像配置对象中添加镜像所需的受信任 CA。
$ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-config"}}}' --type=merge
更新集群示例运算符配置对象中的samplesRegistry
字段,使其包含镜像配置中定义的镜像位置的主机名
部分。
$ oc edit configs.samples.operator.openshift.io -n openshift-cluster-samples-operator
这是必需的,因为镜像流导入过程目前不使用镜像或搜索机制。 |
将任何未镜像的镜像流添加到集群示例运算符配置对象的skippedImagestreams
字段中。或者,如果您不想支持任何示例镜像流,请在集群示例运算符配置对象中将集群示例运算符设置为已移除
。
如果镜像流导入失败,但集群示例运算符正在定期重试或似乎没有重试,则集群示例运算符会发出警报。 |
openshift
命名空间中的许多模板都引用了镜像流。因此,使用已移除
来清除镜像流和模板,将消除在缺少任何镜像流的情况下它们无法正常工作时尝试使用它们的可能性。
使用受限网络的集群必须导入默认的 must-gather 镜像才能为 Red Hat 支持收集调试数据。must-gather 镜像不会默认导入,并且受限网络上的集群无法访问互联网以从远程存储库拉取最新的镜像。
如果您尚未将镜像注册表的受信任 CA 添加到集群的镜像配置对象(作为集群示例运算符配置的一部分),请执行以下步骤
创建集群的镜像配置对象
$ oc create configmap registry-config --from-file=${MIRROR_ADDR_HOSTNAME}..5000=$path/ca.crt -n openshift-config
在集群的镜像配置对象中添加镜像所需的受信任 CA。
$ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"registry-config"}}}' --type=merge
从您的安装负载导入默认的 must-gather 镜像
$ oc import-image is/must-gather -n openshift
运行oc adm must-gather
命令时,使用--image
标志并指向负载镜像,如下例所示
$ oc adm must-gather --image=$(oc adm release info --image-for must-gather)
您可以通过在出现新版本时定期导入镜像流标签来确保始终可以访问集群示例运算符镜像的最新版本。
通过运行以下命令获取openshift
命名空间中的所有镜像流
oc get imagestreams -nopenshift
通过运行以下命令获取openshift
命名空间中每个镜像流的标签
$ oc get is <image-stream-name> -o jsonpath="{range .spec.tags[*]}{.name}{'\t'}{.from.name}{'\n'}{end}" -nopenshift
例如
$ oc get is ubi8-openjdk-17 -o jsonpath="{range .spec.tags[*]}{.name}{'\t'}{.from.name}{'\n'}{end}" -nopenshift
1.11 registry.access.redhat.com/ubi8/openjdk-17:1.11
1.12 registry.access.redhat.com/ubi8/openjdk-17:1.12
通过运行以下命令安排对镜像流中每个标签的镜像进行定期导入
$ oc tag <repository/image> <image-stream-name:tag> --scheduled -nopenshift
例如
$ oc tag registry.access.redhat.com/ubi8/openjdk-17:1.11 ubi8-openjdk-17:1.11 --scheduled -nopenshift
$ oc tag registry.access.redhat.com/ubi8/openjdk-17:1.12 ubi8-openjdk-17:1.12 --scheduled -nopenshift
此命令使 OpenShift Container Platform 定期更新此特定的镜像流标签。此周期是集群范围的设置,默认为 15 分钟。
通过运行以下命令验证定期导入的调度状态
oc get imagestream <image-stream-name> -o jsonpath="{range .spec.tags[*]}Tag: {.name}{'\t'}Scheduled: {.importPolicy.scheduled}{'\n'}{end}" -nopenshift
例如
oc get imagestream ubi8-openjdk-17 -o jsonpath="{range .spec.tags[*]}Tag: {.name}{'\t'}Scheduled: {.importPolicy.scheduled}{'\n'}{end}" -nopenshift
Tag: 1.11 Scheduled: true
Tag: 1.12 Scheduled: true