Bug 1746427 - CDI with hostpath-provisioner does not support scratch pvc
Summary: CDI with hostpath-provisioner does not support scratch pvc
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Container Native Virtualization (CNV)
Classification: Red Hat
Component: Storage
Version: 2.1.0
Hardware: All
OS: All
high
high
Target Milestone: ---
: 2.2.0
Assignee: Alexander Wels
QA Contact: Natalie Gavrielov
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2019-08-28 12:51 UTC by Asher Shoshan
Modified: 2020-01-30 16:27 UTC (History)
3 users (show)

Fixed In Version: hostpath-provisioner-operator-container-v2.2.0-1
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2020-01-30 16:27:13 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHEA-2020:0307 0 None None None 2020-01-30 16:27:23 UTC

Description Asher Shoshan 2019-08-28 12:51:44 UTC
Description of problem:

Created a Datavolume with storageclass "kubevirt-hostpath-provisioner".
DV has proper annotation: kubevirt.io/provisionOnNode: <some-node>
CDIConfig/config has "kubevirt-hostpath-provisioner" in scartchSpaceStorageClass field.

Importer pod is in 'pending' stats - because the pvc "xxx-scratch" doesn't have the annotation: kubevirt.io/provisionOnNode : <some-node-as-above>




Version-Release number of selected component (if applicable):
2.1.0

How reproducible:


Steps to Reproduce:
1. Create a datavolume with storageclass: "kubevirt-hostpath-provisioner", and annotated with kubevirt.io/provisionOnNode 
2.
3.

Actual results:


Expected results:

When scratch space pvc <pvc-name-scratch> is created, then 
annotation  kubevirt.io/provisionOnNode+value of pvc <pvc-name> should be copied to <pvc-name-scratch> annotations.


Additional info:

dv.yaml:
apiVersion: cdi.kubevirt.io/v1alpha1
kind: DataVolume
metadata:
  name: dv-rhel2
  annotations:
    kubevirt.io/provisionOnNode: host-172-16-0-18
spec:
  source:
      http:
         #url: "http://cnv-qe-server.scl.lab.tlv.redhat.com/files/rhel-images/rhel-76/rhel-76.qcow2"
         #url: "https://dl.fedoraproject.org/pub/fedora/linux/releases/29/Cloud/x86_64/images/Fedora-Cloud-Base-29-1.2.x86_64.qcow2"
         url: "http://cnv-qe-server.scl.lab.tlv.redhat.com/files/cdi-test-images/cirros_images/cirros-0.4.0-x86_64-disk.qcow2.xz"
  pvc:
    storageClassName: "kubevirt-hostpath-provisioner"
    accessModes:
      - ReadWriteOnce
    resources:
      requests:
        storage: 20Gi
--------------------------

$ oc describe pvc dv-rhel2
Name:          dv-rhel2
Namespace:     default
StorageClass:  kubevirt-hostpath-provisioner
Status:        Bound
Volume:        pvc-0e9a1ef0-c984-11e9-b5a4-fa163e99e52a
Labels:        app=containerized-data-importer
               cdi-controller=dv-rhel2
Annotations:   cdi.kubevirt.io/storage.contentType: kubevirt
               cdi.kubevirt.io/storage.import.endpoint:
                 http://cnv-qe-server.scl.lab.tlv.redhat.com/files/cdi-test-images/cirros_images/cirros-0.4.0-x86_64-disk.qcow2.xz
               cdi.kubevirt.io/storage.import.importPodName: importer-dv-rhel2-bpxzz
               cdi.kubevirt.io/storage.import.requiresScratch: true
               cdi.kubevirt.io/storage.import.source: http
               cdi.kubevirt.io/storage.pod.phase: Pending
               kubevirt.io/provisionOnNode: host-172-16-0-18
               pv.kubernetes.io/bind-completed: yes
               pv.kubernetes.io/bound-by-controller: yes
               volume.beta.kubernetes.io/storage-provisioner: kubevirt.io/hostpath-provisioner
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      20Gi
Access Modes:  RWO
VolumeMode:    Filesystem
Events:
  Type       Reason                 Age   From                                                                                                       Message
  ----       ------                 ----  ----                                                                                                       -------
  Normal     Provisioning           100m  kubevirt.io/hostpath-provisioner_kubevirt-hostpath-provisioner-998x6_4be0f02b-69a9-46bf-a11c-e47637c90c54  External provisioner is provisioning volume for claim "default/dv-rhel2"
  Normal     Provisioning           100m  kubevirt.io/hostpath-provisioner_kubevirt-hostpath-provisioner-9mrhd_3b866f57-6067-48aa-ab11-9c4793cf9f13  External provisioner is provisioning volume for claim "default/dv-rhel2"
  Normal     Provisioning           100m  kubevirt.io/hostpath-provisioner_kubevirt-hostpath-provisioner-qzfwt_2b2ec1b1-ac91-4a46-a31b-39ce0c5da590  External provisioner is provisioning volume for claim "default/dv-rhel2"
  Normal     ProvisioningSucceeded  100m  kubevirt.io/hostpath-provisioner_kubevirt-hostpath-provisioner-qzfwt_2b2ec1b1-ac91-4a46-a31b-39ce0c5da590  Successfully provisioned volume pvc-0e9a1ef0-c984-11e9-b5a4-fa163e99e52a
  Normal     Provisioning           100m  kubevirt.io/hostpath-provisioner_kubevirt-hostpath-provisioner-tdg99_a2d02a2c-f582-40dc-b4a4-6716184a6a3a  External provisioner is provisioning volume for claim "default/dv-rhel2"
  Normal     ExternalProvisioning   100m  persistentvolume-controller                                                                                waiting for a volume to be created, either by external provisioner "kubevirt.io/hostpath-provisioner" or manually created by system administrator
  Normal     Provisioning           100m  kubevirt.io/hostpath-provisioner_kubevirt-hostpath-provisioner-xdqtw_c3268134-8c98-4b29-bd9d-96f90a3a2c24  External provisioner is provisioning volume for claim "default/dv-rhel2"
Mounted By:  importer-dv-rhel2-bpxzz

---------------------------

$ oc describe pvc dv-rhel2-scratch 
Name:          dv-rhel2-scratch
Namespace:     default
StorageClass:  kubevirt-hostpath-provisioner
Status:        Pending
Volume:        
Labels:        app=containerized-data-importer
               cdi-controller=importer-dv-rhel2-bpxzz
               cdi.kubevirt.io/storage.import.importPvcName=dv-rhel2
Annotations:   volume.beta.kubernetes.io/storage-provisioner: kubevirt.io/hostpath-provisioner
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      
Access Modes:  
VolumeMode:    Filesystem
Events:
  Type       Reason                Age                   From                                                                                                       Message
  ----       ------                ----                  ----                                                                                                       -------
  Normal     Provisioning          97s (x8 over 101m)    kubevirt.io/hostpath-provisioner_kubevirt-hostpath-provisioner-998x6_4be0f02b-69a9-46bf-a11c-e47637c90c54  External provisioner is provisioning volume for claim "default/dv-rhel2-scratch"
  Normal     Provisioning          97s (x8 over 101m)    kubevirt.io/hostpath-provisioner_kubevirt-hostpath-provisioner-9mrhd_3b866f57-6067-48aa-ab11-9c4793cf9f13  External provisioner is provisioning volume for claim "default/dv-rhel2-scratch"
  Normal     Provisioning          91s (x8 over 101m)    kubevirt.io/hostpath-provisioner_kubevirt-hostpath-provisioner-tdg99_a2d02a2c-f582-40dc-b4a4-6716184a6a3a  External provisioner is provisioning volume for claim "default/dv-rhel2-scratch"
  Normal     Provisioning          90s (x8 over 101m)    kubevirt.io/hostpath-provisioner_kubevirt-hostpath-provisioner-xdqtw_c3268134-8c98-4b29-bd9d-96f90a3a2c24  External provisioner is provisioning volume for claim "default/dv-rhel2-scratch"
  Normal     Provisioning          84s (x8 over 101m)    kubevirt.io/hostpath-provisioner_kubevirt-hostpath-provisioner-h7rmt_c112ad1a-6576-446c-8d8b-2534e711dde4  External provisioner is provisioning volume for claim "default/dv-rhel2-scratch"
  Normal     ExternalProvisioning  81s (x413 over 101m)  persistentvolume-controller                                                                                waiting for a volume to be created, either by external provisioner "kubevirt.io/hostpath-provisioner" or manually created by system administrator
  Normal     Provisioning          4s (x8 over 101m)     kubevirt.io/hostpath-provisioner_kubevirt-hostpath-provisioner-qzfwt_2b2ec1b1-ac91-4a46-a31b-39ce0c5da590  External provisioner is provisioning volume for claim "default/dv-rhel2-scratch"
Mounted By:  importer-dv-rhel2-bpxzz
---------------------------------------------------------

$ oc describe pod importer-dv-rhel2-bpxzz
Name:               importer-dv-rhel2-bpxzz
Namespace:          default
Priority:           0
PriorityClassName:  <none>
Node:               <none>
Labels:             app=containerized-data-importer
                    cdi.kubevirt.io=importer
                    cdi.kubevirt.io/storage.import.importPvcName=dv-rhel2
                    prometheus.cdi.kubevirt.io=
Annotations:        cdi.kubevirt.io/storage.createdByController: yes
Status:             Pending
IP:                 
Controlled By:      PersistentVolumeClaim/dv-rhel2
Containers:
  importer:
    Image:      brew-pulp-docker01.web.prod.ext.phx2.redhat.com:8888/container-native-virtualization/virt-cdi-importer:v2.1.0-11
    Port:       8443/TCP
    Host Port:  0/TCP
    Args:
      -v=1
    Environment:
      IMPORTER_SOURCE:       http
      IMPORTER_ENDPOINT:     http://cnv-qe-server.scl.lab.tlv.redhat.com/files/cdi-test-images/cirros_images/cirros-0.4.0-x86_64-disk.qcow2.xz
      IMPORTER_CONTENTTYPE:  kubevirt
      IMPORTER_IMAGE_SIZE:   20Gi
      OWNER_UID:             0e681fcc-c984-11e9-9c9d-fa163eecd1a4
      INSECURE_TLS:          false
    Mounts:
      /data from cdi-data-vol (rw)
      /scratch from cdi-scratch-vol (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-wg7lr (ro)
Conditions:
  Type           Status
  PodScheduled   False 
Volumes:
  cdi-data-vol:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  dv-rhel2
    ReadOnly:   false
  cdi-scratch-vol:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  dv-rhel2-scratch
    ReadOnly:   false
  default-token-wg7lr:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  default-token-wg7lr
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:
  Type     Reason            Age                    From               Message
  ----     ------            ----                   ----               -------
  Warning  FailedScheduling  102m (x2 over 102m)    default-scheduler  persistentvolumeclaim "dv-rhel2-scratch" not found
  Warning  FailedScheduling  2m38s (x68 over 102m)  default-scheduler  pod has unbound immediate PersistentVolumeClaims (repeated 3 times)

Comment 1 Adam Litke 2019-09-03 18:59:56 UTC
This is a known issue but we're no longer shipping the hostpath-provisioner with 2.1.0.  Pushing out.

Comment 2 Adam Litke 2019-10-07 20:53:54 UTC
We will fix this properly in cnv-2.2.

Comment 3 Ying Cui 2019-11-25 05:59:58 UTC
Pending on the d/s test environment, so we can not verify this bug now.

Comment 4 Natalie Gavrielov 2020-01-08 13:13:47 UTC
Verified CNV 2.2

Comment 6 errata-xmlrpc 2020-01-30 16:27:13 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2020:0307


Note You need to log in before you can comment on or make changes to this bug.