12.4. 常见问题和关注

本节介绍在迁移过程中可能导致问题的常见问题。

12.4.1. 更新已弃用的内部镜像

如果应用程序使用 openshift 命名空间中的镜像,则目标集群中必须有所需的镜像版本。

如果 OpenShift Container Platform 4.7 中已弃用 OpenShift Container Platform 3 镜像,您可以使用 podman 手动更新镜像流标签。

先决条件

  • 必须安装 podman
  • 您必须以具有 cluster-admin 权限的用户身份登录。
  • 如果您使用不安全的 registry,请将 registry 主机值添加到 /etc/container/registries.conf[registries.insecure] 部分,以确保 Podman 不会遇到 TLS 验证错误。
  • 内部 registry 必须在源和目标集群上公开。

流程

  1. 确保内部 registry 在 OpenShift Container Platform 3 和 4 集群中公开。

    默认情况下,内部 registry 在 OpenShift Container Platform 4 中公开。

  2. 如果您使用不安全的 registry,请将 registry 主机值添加到 /etc/container/registries.conf[registries.insecure] 部分,以确保 Podman 不会遇到 TLS 验证错误。
  3. 登录到 OpenShift Container Platform 3 registry:

    $ podman login -u $(oc whoami) -p $(oc whoami -t) --tls-verify=false <registry_url>:<port>
  4. 登录到 OpenShift Container Platform 4 registry:

    $ podman login -u $(oc whoami) -p $(oc whoami -t) --tls-verify=false <registry_url>:<port>
  5. 拉取 OpenShift Container Platform 3 镜像:

    $ podman pull <registry_url>:<port>/openshift/<image>
  6. 为 OpenShift Container Platform 4 registry 标记 OpenShift Container Platform 3 镜像:

    $ podman tag <registry_url>:<port>/openshift/<image> \ 1
      <registry_url>:<port>/openshift/<image> 2
    1
    指定 OpenShift Container Platform 3 集群的 registry URL 和端口。
    2
    指定 OpenShift Container Platform 4 集群的 registry URL 和端口。
  7. 将镜像推送到 OpenShift Container Platform 4 registry:

    $ podman push <registry_url>:<port>/openshift/<image> 1
    1
    指定 OpenShift Container Platform 4 集群。
  8. 验证镜像是否具有有效的镜像流:

    $ oc get imagestream -n openshift | grep <image>

    输出示例

    NAME      IMAGE REPOSITORY                                                      TAGS    UPDATED
    my_image  image-registry.openshift-image-registry.svc:5000/openshift/my_image  latest  32 seconds ago