Before you migrate your application workloads with the Migration Toolkit for Containers (MTC), review the following checklists.

Source cluster checklist

  • The cluster meets the minimum hardware requirements.

  • You have installed the correct legacy Migration Toolkit for Containers Operator version:

    • operator-3.7.yml on OpenShift Container Platform version 3.7.

    • operator.yml on OpenShift Container Platform versions 3.9 to 4.5.

  • All nodes have an active OpenShift Container Platform subscription.

  • All the run-once tasks have been performed.

  • All the environment health checks have been performed.

  • You have checked for persistent volumes (PVs) with abnormal configurations stuck in a Terminating state by running the following command:

    $ oc get pv
  • You have checked for pods whose status is other than Running or Completed by running the following command:

    $ oc get pods --all-namespaces | egrep -v 'Running | Completed'
  • You have checked for pods with a high restart count by running the following command:

    $ oc get pods --all-namespaces --field-selector=status.phase=Running \
      -o json | jq '.items[]|select(any( .status.containerStatuses[]; \
      .restartCount > 3))|.metadata.name'

    Even if the pods are in a Running state, a high restart count might indicate underlying problems.

  • You have deleted old images by running the following command:

    $ oc adm prune images
  • The internal registry uses a supported storage type.

  • Direct image migration only: The internal registry is exposed to external traffic.

  • You can read and write images to the registry.

  • The etcd cluster is healthy.

  • The average API server response time on the source cluster is less than 50 ms.

  • The cluster certificates are valid for the duration of the migration process.

  • You have checked for pending certificate-signing requests by running the following command:

    $ oc get csr -A | grep pending -i
  • The identity provider is working.

Target cluster checklist

  • You have installed Migration Toolkit for Containers Operator version 1.5.1.

  • All MTC prerequisites are met.

  • The cluster meets the minimum hardware requirements for the specific platform and installation method, for example, on bare metal.

  • The cluster has storage classes defined for the storage types used by the source cluster, for example, block volume, file system, or object storage.

    NFS does not require a defined storage class.

  • The cluster has the correct network configuration and permissions to access external services, for example, databases, source code repositories, container image registries, and CI/CD tools.

  • External applications and services that use services provided by the cluster have the correct network configuration and permissions to access the cluster.

  • Internal container image dependencies are met.

    If an application uses an internal image in the openshift namespace that is not supported by OpenShift Container Platform 4.8, you can manually update the OpenShift Container Platform 3 image stream tag with podman.

  • The target cluster and the replication repository have sufficient storage space.

  • The identity provider is working.

  • Set the value of the annotation.openshift.io/host.generated parameter to true for each OpenShift Container Platform route to update its host name for the target cluster. Otherwise, the migrated routes retain the source cluster host name.

Performance checklist

  • The migration network has a minimum throughput of 10 Gbps.

  • The clusters have sufficient resources for migration.

    Clusters require additional memory, CPUs, and storage in order to run a migration on top of normal workloads. Actual resource requirements depend on the number of Kubernetes resources being migrated in a single migration plan. You must test migrations in a non-production environment in order to estimate the resource requirements.

  • The memory and CPU usage of the nodes are healthy.

  • The etcd disk performance of the clusters has been checked with fio.