Uploaded image for project: 'Migration Toolkit for Virtualization'
  1. Migration Toolkit for Virtualization
  2. MTV-3908

Storage-Offload Migration Fails During Conversion Step (v2v Pod ImagePullBackOff)

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major Major
    • None
    • 2.10.1
    • Operator
    • Quality / Stability / Reliability
    • False
    • Hide

      None

      Show
      None
    • False

      Storage-Offload migration fails during the conversion phase because the virt-v2v and pvcinit pods cannot pull the required image from registry.redhat.io.
      Both pods remain in ImagePullBackOff, and the migration never progresses past the conversion step.

      the populate pod completed successfully    

      Environment

      • MTV Version tested: 2.10.1-2
      • single VM 50GB  ISCSI DS VMware 7.0.3 
      • Platform: OpenShift 4.18.2
      • Migration type: Storage-Offload
      • Storage backend: NetApp iSCSI (ONTAP)
      • ESXi source: vSphere environment (lab)
      {
        "feature_copy_offload": "true",
        "feature_ui_plugin": "true",
        "feature_validation": "true",
        "feature_volume_populator": "true"
      } 
      [kni@f01-h07-000-r640 ~]$ oc get pods -noffload
      NAME                                            READY   STATUS             RESTARTS   AGE
      offload-vm-37005-8fhss                          0/1     ImagePullBackOff   0          9m15s
      offload-vm-37005-pvcinit-g8hwq                  0/1     ImagePullBackOff   0          11m
      populate-03314288-5441-4d15-8315-a51c8f87beae   0/1     Completed          0          11m
       

       

      [kni@f01-h07-000-r640 ~]$ oc describe  pods/offload-vm-37005-8fhss -noffload
      Name:             offload-vm-37005-8fhss
      Namespace:        offload
      Priority:         0
      Service Account:  default
      Node:             worker000-r640/10.1.60.13
      Start Time:       Tue, 25 Nov 2025 09:04:10 +0000
      Labels:           forklift.app=virt-v2v
                        migration=820025b2-8f6d-40f8-ae61-868254c8d188
                        plan=7f1a9860-4bf8-4cfb-849b-f80ec2676f74
                        resource=vm-config
                        vmID=vm-37005
      Annotations:      k8s.ovn.org/pod-networks:
                          {"default":{"ip_addresses":["10.130.0.182/23"],"mac_address":"0a:58:0a:82:00:b6","gateway_ips":["10.130.0.1"],"routes":[{"dest":"10.128.0....
                        k8s.v1.cni.cncf.io/network-status:
                          [{
                              "name": "ovn-kubernetes",
                              "interface": "eth0",
                              "ips": [
                                  "10.130.0.182"
                              ],
                              "mac": "0a:58:0a:82:00:b6",
                              "default": true,
                              "dns": {}
                          }]
                        openshift.io/scc: forklift-controller-scc
                        seccomp.security.alpha.kubernetes.io/pod: localhost/profiles/unshare.json
      Status:           Pending
      IP:               10.130.0.182
      IPs:
        IP:  10.130.0.182
      Containers:
        virt-v2v:
          Container ID:
          Image:          registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505
          Image ID:
          Port:           2112/TCP
          Host Port:      0/TCP
          State:          Waiting
            Reason:       ImagePullBackOff
          Ready:          False
          Restart Count:  0
          Limits:
            cpu:                      4
            devices.kubevirt.io/kvm:  1
            memory:                   8Gi
          Requests:
            cpu:                      1
            devices.kubevirt.io/kvm:  1
            memory:                   1Gi
          Environment Variables from:
            offload-vm-37005-frn97  Secret with prefix 'V2V_'  Optional: false
          Environment:
            V2V_preserveStaticIPs:  true
            V2V_vmName:             offload-50gb-iscsi
            V2V_libvirtURL:         esx://root@172.16.11.3?no_verify=1
            V2V_source:             vSphere
            V2V_fingerprint:        29:DD:F6:1E:E5:9F:DA:98:44:FA:18:72:60:39:22:E6:8D:C0:5B:22
            V2V_extra_args:         []
            V2V_inPlace:            1
            LOCAL_MIGRATION:        true
          Mounts:
            /mnt/v2v from libvirt-domain-xml (rw)
            /opt from vddk-vol-mount (rw)
            /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-wt9sq (ro)
          Devices:
            /dev/block0 from offl-offl-disk-0-bf0790a9
      Conditions:
        Type                        Status
        PodReadyToStartContainers   True
        Initialized                 True
        Ready                       False
        ContainersReady             False
        PodScheduled                True
      Volumes:
        offl-offl-disk-0-bf0790a9:
          Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
          ClaimName:  offl-offl-disk-0-bf0790a9
          ReadOnly:   false
        libvirt-domain-xml:
          Type:      ConfigMap (a volume populated by a ConfigMap)
          Name:      offload-vm-37005-cpkxm
          Optional:  false
        vddk-vol-mount:
          Type:       EmptyDir (a temporary directory that shares a pod's lifetime)
          Medium:
          SizeLimit:  <unset>
        kube-api-access-wt9sq:
          Type:                    Projected (a volume that contains injected data from multiple sources)
          TokenExpirationSeconds:  3607
          ConfigMapName:           kube-root-ca.crt
          ConfigMapOptional:       <nil>
          DownwardAPI:             true
          ConfigMapName:           openshift-service-ca.crt
          ConfigMapOptional:       <nil>
      QoS Class:                   Burstable
      Node-Selectors:              kubevirt.io/schedulable=true
      Tolerations:                 node.kubernetes.io/memory-pressure:NoSchedule op=Exists
                                   node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                                   node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
      Events:
        Type     Reason                  Age                    From                     Message
        ----     ------                  ----                   ----                     -------
        Normal   Scheduled               95m                    default-scheduler        Successfully assigned offload/offload-vm-37005-8fhss to worker000-r640
        Normal   SuccessfulAttachVolume  95m                    attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-2d62457b-526e-483f-bfc1-f72f074a762c"
        Normal   SuccessfulMountVolume   95m                    kubelet                  MapVolume.MapPodDevice succeeded for volume "pvc-2d62457b-526e-483f-bfc1-f72f074a762c" globalMapPath "/var/lib/kubelet/plugins/kubernetes.io/csi/volumeDevices/pvc-2d62457b-526e-483f-bfc1-f72f074a762c/dev"
        Normal   SuccessfulMountVolume   95m                    kubelet                  MapVolume.MapPodDevice succeeded for volume "pvc-2d62457b-526e-483f-bfc1-f72f074a762c" volumeMapPath "/var/lib/kubelet/pods/e7b806bb-5ce7-4cb9-b199-453aa97730d1/volumeDevices/kubernetes.io~csi"
        Normal   AddedInterface          95m                    multus                   Add eth0 [10.130.0.182/23] from ovn-kubernetes
        Normal   Pulling                 93m (x4 over 95m)      kubelet                  Pulling image "registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505"
        Warning  Failed                  93m (x4 over 95m)      kubelet                  Failed to pull image "registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505": initializing source docker://registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505: (Mirrors also failed: [brew.registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505: reading manifest sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505 in brew.registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10: name unknown: Digest not found]): registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505: reading manifest sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505 in registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10: unauthorized: access to the requested resource is not authorized
        Warning  Failed                  93m (x4 over 95m)      kubelet                  Error: ErrImagePull
        Warning  Failed                  93m (x5 over 94m)      kubelet                  Error: ImagePullBackOff
        Normal   BackOff                 4m52s (x394 over 94m)  kubelet                  Back-off pulling image "registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505" 
       [kni@f01-h07-000-r640 ~]$ oc describe  pods/offload-vm-37005-pvcinit-g8hwq -noffload
      Name:             offload-vm-37005-pvcinit-g8hwq
      Namespace:        offload
      Priority:         0
      Service Account:  default
      Node:             worker004-r640/10.1.60.17
      Start Time:       Tue, 25 Nov 2025 09:04:14 +0000
      Labels:           forklift.app=consumer
                        migration=820025b2-8f6d-40f8-ae61-868254c8d188
                        plan=7f1a9860-4bf8-4cfb-849b-f80ec2676f74
                        resource=vm-config
                        vmID=vm-37005
      Annotations:      k8s.ovn.org/pod-networks:
                          {"default":{"ip_addresses":["10.129.0.193/23"],"mac_address":"0a:58:0a:81:00:c1","gateway_ips":["10.129.0.1"],"routes":[{"dest":"10.128.0....
                        k8s.v1.cni.cncf.io/network-status:
                          [{
                              "name": "ovn-kubernetes",
                              "interface": "eth0",
                              "ips": [
                                  "10.129.0.193"
                              ],
                              "mac": "0a:58:0a:81:00:c1",
                              "default": true,
                              "dns": {}
                          }]
                        openshift.io/scc: forklift-controller-scc
                        seccomp.security.alpha.kubernetes.io/pod: runtime/default
      Status:           Pending
      IP:               10.129.0.193
      IPs:
        IP:  10.129.0.193
      Containers:
        main:
          Container ID:
          Image:         registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505
          Image ID:
          Port:          <none>
          Host Port:     <none>
          Command:
            /bin/sh
          State:          Waiting
            Reason:       ImagePullBackOff
          Ready:          False
          Restart Count:  0
          Limits:
            cpu:                      4
            devices.kubevirt.io/kvm:  1
            memory:                   8Gi
          Requests:
            cpu:                      1
            devices.kubevirt.io/kvm:  1
            memory:                   1Gi
          Environment:                <none>
          Mounts:
            /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-qmjxv (ro)
      Conditions:
        Type                        Status
        PodReadyToStartContainers   True
        Initialized                 True
        Ready                       False
        ContainersReady             False
        PodScheduled                True
      Volumes:
        offl-offl-disk-0-bf0790a9:
          Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
          ClaimName:  offl-offl-disk-0-bf0790a9
          ReadOnly:   false
        kube-api-access-qmjxv:
          Type:                    Projected (a volume that contains injected data from multiple sources)
          TokenExpirationSeconds:  3607
          ConfigMapName:           kube-root-ca.crt
          ConfigMapOptional:       <nil>
          DownwardAPI:             true
          ConfigMapName:           openshift-service-ca.crt
          ConfigMapOptional:       <nil>
      QoS Class:                   Burstable
      Node-Selectors:              kubevirt.io/schedulable=true
      Tolerations:                 node.kubernetes.io/memory-pressure:NoSchedule op=Exists
                                   node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                                   node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
      Events:
        Type     Reason                  Age                  From                     Message
        ----     ------                  ----                 ----                     -------
        Warning  FailedScheduling        95m (x5 over 98m)    default-scheduler        0/9 nodes are available: pod has unbound immediate PersistentVolumeClaims. preemption: 0/9 nodes are available: 9 Preemption is not helpful for scheduling.
        Normal   Scheduled               95m                  default-scheduler        Successfully assigned offload/offload-vm-37005-pvcinit-g8hwq to worker004-r640
        Normal   AddedInterface          95m                  multus                   Add eth0 [10.129.0.193/23] from ovn-kubernetes
        Normal   SuccessfulAttachVolume  95m                  attachdetach-controller  AttachVolume.Attach succeeded for volume "pvc-2d62457b-526e-483f-bfc1-f72f074a762c"
        Normal   Pulling                 94m (x4 over 95m)    kubelet                  Pulling image "registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505"
        Warning  Failed                  94m (x4 over 95m)    kubelet                  Failed to pull image "registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505": initializing source docker://registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505: (Mirrors also failed: [brew.registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505: reading manifest sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505 in brew.registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10: name unknown: Digest not found]): registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505: reading manifest sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505 in registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10: unauthorized: access to the requested resource is not authorized
        Warning  Failed                  94m (x4 over 95m)    kubelet                  Error: ErrImagePull
        Warning  Failed                  93m (x6 over 95m)    kubelet                  Error: ImagePullBackOff
        Normal   BackOff                 20s (x416 over 95m)  kubelet                  Back-off pulling image "registry.redhat.io/migration-toolkit-virtualization/mtv-virt-v2v-rhel10@sha256:f666469d0d39368c743ab5410a87b6fed4a48280d6510f47501cde1e6c83a505"

       

      [kni@f01-h07-000-r640 ~]$ oc get pvc -noffload
      NAME                                         STATUS        VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS              VOLUMEATTRIBUTESCLASS   AGE
      offl-offl-disk-0-bf0790a9                    Bound         pvc-2d62457b-526e-483f-bfc1-f72f074a762c   50Gi       RWX            netapp-ontap-perf-iscsi   <unset>                 98m
      prime-03314288-5441-4d15-8315-a51c8f87beae   Terminating   pvc-2d62457b-526e-483f-bfc1-f72f074a762c   0                         netapp-ontap-perf-iscsi   <unset>                 98m
       

        1. offload.png
          123 kB
          Tzahi Ashkenazi

              gcheresh@redhat.com Genadi Chereshnya
              tzahia Tzahi Ashkenazi
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Created:
                Updated:
                Resolved: