DEV Community

Cover image for 5 Gotchas from Building an OpenShift Virtualization Lab
Gaganpreet Singh
Gaganpreet Singh

Posted on

5 Gotchas from Building an OpenShift Virtualization Lab

Every chapter of The Lab Manual has GOTCHA boxes: problems I actually hit while building the lab, with the real error and the fix. These five cost me the most time.

1. Public DNS can't see your cluster

The bastion started out with public DNS servers. Public DNS can't resolve your internal cluster names, so openshift-install wait-for and oc couldn't find api.<cluster>.<domain>.

Fix: point the bastion at the internal DNS servers that hold the cluster records.

nmcli connection modify <nic> ipv4.dns "<dns1> <dns2>"
nmcli connection up <nic>
dig +short api.<cluster>.<domain>
Enter fullscreen mode Exit fullscreen mode

2. No VDDK = slow

Without VDDK, MTV reads disks over HTTPS through vCenter. My 10 GiB test VM took 61 minutes to copy. The log line that gives it away is nbdkit: curl.

Fix: build a VDDK image and set vddkInitImage on the provider. Full walkthrough in part 3 of this series, "VDDK vs No VDDK".

3. NFS disks defaulted to RWO

OpenShift Virtualization didn't recognise my NFS StorageClass, so new VM disks would have been ReadWriteOnce, and live migration would have been impossible.

Fix: tell CDI the right access mode through the StorageProfile.

oc patch storageprofile nfs-csi --type merge \
  -p '{"spec":{"claimPropertySets":[{"accessModes":["ReadWriteMany"],"volumeMode":"Filesystem"}],"cloneStrategy":"copy"}}'
Enter fullscreen mode Exit fullscreen mode

4. A deleted project broke oc debug

I'd deleted a scratch project, but my oc context still pointed at it. Then oc debug node/... failed with:

error: unable to get namespace namespaces "nfs-test" not found
Enter fullscreen mode Exit fullscreen mode

oc debug creates its temporary Pod in the current project.

Fix: oc project default, or oc debug node/<node> --to-namespace=default. Rule: after deleting a project, run oc project and move off it.

5. MTV rejected the vCenter Secret

The first provider attempt failed in MTV's admission webhook. The Secret had createdForResourceType=providers but not createdForProviderType=vsphere, and MTV rejects one without the other. Both labels must arrive in the same request.

Fix: add both labels before applying.

oc create secret generic vcenter-lab -n openshift-mtv --dry-run=client -o yaml \
  --from-literal=user=<user> --from-literal=password=<password> \
  --from-literal=url=https://<vcenter>/sdk --from-literal=insecureSkipVerify=true \
  | oc label -f - --local -o yaml createdForResourceType=providers createdForProviderType=vsphere \
  | oc apply -f -
Enter fullscreen mode Exit fullscreen mode

What's your #6?

Each of these is in the free Lab Manual with the full capture. If you've hit something I haven't, open an issue or leave a comment. I'm collecting them for v2.

Top comments (0)