kubevirt: VM Stuck in Pending State on macOS M1 when Running Kubevirt Using Experimental Arm64 Build
What happened:
Attempting to run kubevirt using the experimental arm64 build, but the VM is stuck in a Pending state.
What you expected to happen:
Pod should have status Running.
How to reproduce it (as minimally and precisely as possible):
kind create cluster
LATEST=$(curl -L https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/latest-arm64)
kubectl apply -f https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/${LATEST}/kubevirt-operator-arm64.yaml
kubectl apply -f https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/${LATEST}/kubevirt-cr-arm64.yaml
❯ echo $LATEST
20230706
curl -L -o virtctl https://github.com/kubevirt/kubevirt/releases/download/v1.0.0-rc.1/virtctl-v1.0.0-rc.1-darwin-arm64
chmod +x virtctl
sudo install virtctl /usr/local/bin
❯ kubectl apply -f examples/vm-cirros.yaml
virtualmachine.kubevirt.io/vm-cirros created
❯ kubectl get vm
NAME AGE STATUS READY
vm-cirros 31m Stopped False
❯ virtctl start vm-cirros
VM vm-cirros was scheduled to start
❯ kubectl get pods
NAME READY STATUS RESTARTS AGE
virt-launcher-vm-cirros-b84rf 0/2 Pending 0 58s
vm/vm-cirros
apiVersion: kubevirt.io/v1
kind: VirtualMachine
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"kubevirt.io/v1","kind":"VirtualMachine","metadata":{"annotations":{},"labels":{"kubevirt.io/vm":"vm-cirros"},"name":"vm-cirros","namespace":"default"},"spec":{"running":false,"template":{"metadata":{"labels":{"kubevirt.io/vm":"vm-cirros"}},"spec":{"domain":{"devices":{"disks":[{"disk":{"bus":"virtio"},"name":"containerdisk"},{"disk":{"bus":"virtio"},"name":"cloudinitdisk"}]},"resources":{"requests":{"memory":"128Mi"}}},"terminationGracePeriodSeconds":0,"volumes":[{"containerDisk":{"image":"registry:5000/kubevirt/cirros-container-disk-demo:devel"},"name":"containerdisk"},{"cloudInitNoCloud":{"userData":"#!/bin/sh\n\necho 'printed from cloud-init userdata'\n"},"name":"cloudinitdisk"}]}}}}
kubevirt.io/latest-observed-api-version: v1
kubevirt.io/storage-observed-api-version: v1
creationTimestamp: "2023-07-06T16:44:14Z"
finalizers:
- kubevirt.io/virtualMachineControllerFinalize
generation: 2
labels:
kubevirt.io/vm: vm-cirros
name: vm-cirros
namespace: default
resourceVersion: "11554"
uid: e6e6339d-815e-4d47-8366-b68b83d79ea7
spec:
running: true
template:
metadata:
creationTimestamp: null
labels:
kubevirt.io/vm: vm-cirros
spec:
architecture: arm64
domain:
devices:
disks:
- disk:
bus: virtio
name: containerdisk
- disk:
bus: virtio
name: cloudinitdisk
machine:
type: virt
resources:
requests:
memory: 128Mi
terminationGracePeriodSeconds: 0
volumes:
- containerDisk:
image: registry:5000/kubevirt/cirros-container-disk-demo:devel
name: containerdisk
- cloudInitNoCloud:
userData: |
#!/bin/sh
echo 'printed from cloud-init userdata'
name: cloudinitdisk
status:
conditions:
- lastProbeTime: "2023-07-06T17:18:32Z"
lastTransitionTime: "2023-07-06T17:18:32Z"
message: Guest VM is not reported as running
reason: GuestNotRunning
status: "False"
type: Ready
- lastProbeTime: null
lastTransitionTime: "2023-07-06T17:18:32Z"
message: '0/1 nodes are available: 1 Insufficient devices.kubevirt.io/kvm. preemption:
0/1 nodes are available: 1 No preemption victims found for incoming pod..'
reason: Unschedulable
status: "False"
type: PodScheduled
created: true
desiredGeneration: 2
observedGeneration: 2
printableStatus: ErrorUnschedulable
volumeSnapshotStatuses:
- enabled: false
name: containerdisk
reason: Snapshot is not supported for this volumeSource type [containerdisk[]
- enabled: false
name: cloudinitdisk
reason: Snapshot is not supported for this volumeSource type [cloudinitdisk[]
vmi/vm-cirros
apiVersion: kubevirt.io/v1
kind: VirtualMachineInstance
metadata:
annotations:
kubevirt.io/latest-observed-api-version: v1
kubevirt.io/storage-observed-api-version: v1
kubevirt.io/vm-generation: "2"
creationTimestamp: "2023-07-06T17:18:32Z"
finalizers:
- kubevirt.io/virtualMachineControllerFinalize
- foregroundDeleteVirtualMachine
generation: 4
labels:
kubevirt.io/vm: vm-cirros
name: vm-cirros
namespace: default
ownerReferences:
- apiVersion: kubevirt.io/v1
blockOwnerDeletion: true
controller: true
kind: VirtualMachine
name: vm-cirros
uid: e6e6339d-815e-4d47-8366-b68b83d79ea7
resourceVersion: "11553"
uid: 896aa024-54ce-4653-9c98-fdfb7ec2cd5d
spec:
architecture: arm64
domain:
cpu:
cores: 1
model: host-passthrough
sockets: 1
threads: 1
devices:
disks:
- disk:
bus: virtio
name: containerdisk
- disk:
bus: virtio
name: cloudinitdisk
interfaces:
- bridge: {}
name: default
features:
acpi:
enabled: true
firmware:
bootloader:
efi:
secureBoot: false
uuid: 0d2a2043-41c0-59c3-9b17-025022203668
machine:
type: virt
resources:
requests:
memory: 128Mi
networks:
- name: default
pod: {}
terminationGracePeriodSeconds: 0
volumes:
- containerDisk:
image: registry:5000/kubevirt/cirros-container-disk-demo:devel
imagePullPolicy: IfNotPresent
name: containerdisk
- cloudInitNoCloud:
userData: |
#!/bin/sh
echo 'printed from cloud-init userdata'
name: cloudinitdisk
status:
activePods:
b39e0ecd-6fb5-4504-8ac4-dac9273c4566: ""
conditions:
- lastProbeTime: "2023-07-06T17:18:32Z"
lastTransitionTime: "2023-07-06T17:18:32Z"
message: Guest VM is not reported as running
reason: GuestNotRunning
status: "False"
type: Ready
- lastProbeTime: null
lastTransitionTime: "2023-07-06T17:18:32Z"
message: '0/1 nodes are available: 1 Insufficient devices.kubevirt.io/kvm. preemption:
0/1 nodes are available: 1 No preemption victims found for incoming pod..'
reason: Unschedulable
status: "False"
type: PodScheduled
currentCPUTopology:
cores: 1
sockets: 1
threads: 1
guestOSInfo: {}
launcherContainerImageVersion: quay.io/kubevirt/virt-launcher:20230706_534bda181-arm64
phase: Scheduling
phaseTransitionTimestamps:
- phase: Pending
phaseTransitionTimestamp: "2023-07-06T17:18:32Z"
- phase: Scheduling
phaseTransitionTimestamp: "2023-07-06T17:18:32Z"
qosClass: Burstable
runtimeUser: 107
virtualMachineRevisionName: revision-start-vm-e6e6339d-815e-4d47-8366-b68b83d79ea7-2
pod/virt-launcher-vm-cirros-b84rf
apiVersion: v1
kind: Pod
metadata:
annotations:
kubectl.kubernetes.io/default-container: compute
kubevirt.io/domain: vm-cirros
kubevirt.io/migrationTransportUnix: "true"
kubevirt.io/vm-generation: "2"
post.hook.backup.velero.io/command: '["/usr/bin/virt-freezer", "--unfreeze", "--name",
"vm-cirros", "--namespace", "default"]'
post.hook.backup.velero.io/container: compute
pre.hook.backup.velero.io/command: '["/usr/bin/virt-freezer", "--freeze", "--name",
"vm-cirros", "--namespace", "default"]'
pre.hook.backup.velero.io/container: compute
creationTimestamp: "2023-07-06T17:18:32Z"
generateName: virt-launcher-vm-cirros-
labels:
kubevirt.io: virt-launcher
kubevirt.io/created-by: 896aa024-54ce-4653-9c98-fdfb7ec2cd5d
kubevirt.io/vm: vm-cirros
vm.kubevirt.io/name: vm-cirros
name: virt-launcher-vm-cirros-b84rf
namespace: default
ownerReferences:
- apiVersion: kubevirt.io/v1
blockOwnerDeletion: true
controller: true
kind: VirtualMachineInstance
name: vm-cirros
uid: 896aa024-54ce-4653-9c98-fdfb7ec2cd5d
resourceVersion: "11550"
uid: b39e0ecd-6fb5-4504-8ac4-dac9273c4566
spec:
automountServiceAccountToken: false
containers:
- command:
- /usr/bin/virt-launcher-monitor
- --qemu-timeout
- 354s
- --name
- vm-cirros
- --uid
- 896aa024-54ce-4653-9c98-fdfb7ec2cd5d
- --namespace
- default
- --kubevirt-share-dir
- /var/run/kubevirt
- --ephemeral-disk-dir
- /var/run/kubevirt-ephemeral-disks
- --container-disk-dir
- /var/run/kubevirt/container-disks
- --grace-period-seconds
- "15"
- --hook-sidecars
- "0"
- --ovmf-path
- /usr/share/AAVMF
- --run-as-nonroot
env:
- name: XDG_CACHE_HOME
value: /var/run/kubevirt-private
- name: XDG_CONFIG_HOME
value: /var/run/kubevirt-private
- name: XDG_RUNTIME_DIR
value: /var/run
- name: POD_NAME
valueFrom:
fieldRef:
apiVersion: v1
fieldPath: metadata.name
image: quay.io/kubevirt/virt-launcher:20230706_534bda181-arm64
imagePullPolicy: IfNotPresent
name: compute
resources:
limits:
devices.kubevirt.io/kvm: "1"
devices.kubevirt.io/tun: "1"
devices.kubevirt.io/vhost-net: "1"
requests:
cpu: 100m
devices.kubevirt.io/kvm: "1"
devices.kubevirt.io/tun: "1"
devices.kubevirt.io/vhost-net: "1"
ephemeral-storage: 50M
memory: 510208Ki
securityContext:
allowPrivilegeEscalation: false
capabilities:
add:
- NET_BIND_SERVICE
drop:
- ALL
privileged: false
runAsGroup: 107
runAsNonRoot: true
runAsUser: 107
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/kubevirt-private
name: private
- mountPath: /var/run/kubevirt
name: public
- mountPath: /var/run/kubevirt-ephemeral-disks
name: ephemeral-disks
- mountPath: /var/run/kubevirt/container-disks
mountPropagation: HostToContainer
name: container-disks
- mountPath: /var/run/libvirt
name: libvirt-runtime
- mountPath: /var/run/kubevirt/sockets
name: sockets
- mountPath: /var/run/kubevirt/hotplug-disks
mountPropagation: HostToContainer
name: hotplug-disks
- args:
- --copy-path
- /var/run/kubevirt-ephemeral-disks/container-disk-data/896aa024-54ce-4653-9c98-fdfb7ec2cd5d/disk_0
command:
- /usr/bin/container-disk
image: registry:5000/kubevirt/cirros-container-disk-demo:devel
imagePullPolicy: IfNotPresent
name: volumecontainerdisk
resources:
limits:
cpu: 10m
memory: 40M
requests:
cpu: 1m
ephemeral-storage: 50M
memory: 1M
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
runAsUser: 107
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/kubevirt-ephemeral-disks/container-disk-data/896aa024-54ce-4653-9c98-fdfb7ec2cd5d
name: container-disks
- mountPath: /usr/bin
name: virt-bin-share-dir
dnsPolicy: ClusterFirst
enableServiceLinks: false
hostname: vm-cirros
initContainers:
- command:
- /usr/bin/cp
- /usr/bin/container-disk
- /init/usr/bin/container-disk
env:
- name: XDG_CACHE_HOME
value: /var/run/kubevirt-private
- name: XDG_CONFIG_HOME
value: /var/run/kubevirt-private
- name: XDG_RUNTIME_DIR
value: /var/run
image: quay.io/kubevirt/virt-launcher:20230706_534bda181-arm64
imagePullPolicy: IfNotPresent
name: container-disk-binary
resources:
limits:
cpu: 100m
memory: 40M
requests:
cpu: 10m
memory: 1M
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
privileged: false
runAsGroup: 107
runAsNonRoot: true
runAsUser: 107
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /init/usr/bin
name: virt-bin-share-dir
- args:
- --no-op
command:
- /usr/bin/container-disk
image: registry:5000/kubevirt/cirros-container-disk-demo:devel
imagePullPolicy: IfNotPresent
name: volumecontainerdisk-init
resources:
limits:
cpu: 10m
memory: 40M
requests:
cpu: 1m
ephemeral-storage: 50M
memory: 1M
securityContext:
allowPrivilegeEscalation: false
capabilities:
drop:
- ALL
runAsNonRoot: true
runAsUser: 107
terminationMessagePath: /dev/termination-log
terminationMessagePolicy: File
volumeMounts:
- mountPath: /var/run/kubevirt-ephemeral-disks/container-disk-data/896aa024-54ce-4653-9c98-fdfb7ec2cd5d
name: container-disks
- mountPath: /usr/bin
name: virt-bin-share-dir
nodeSelector:
kubernetes.io/arch: arm64
kubevirt.io/schedulable: "true"
preemptionPolicy: PreemptLowerPriority
priority: 0
readinessGates:
- conditionType: kubevirt.io/virtual-machine-unpaused
restartPolicy: Never
schedulerName: default-scheduler
securityContext:
fsGroup: 107
runAsGroup: 107
runAsNonRoot: true
runAsUser: 107
serviceAccount: default
serviceAccountName: default
terminationGracePeriodSeconds: 30
tolerations:
- effect: NoExecute
key: node.kubernetes.io/not-ready
operator: Exists
tolerationSeconds: 300
- effect: NoExecute
key: node.kubernetes.io/unreachable
operator: Exists
tolerationSeconds: 300
volumes:
- emptyDir: {}
name: private
- emptyDir: {}
name: public
- emptyDir: {}
name: sockets
- emptyDir: {}
name: virt-bin-share-dir
- emptyDir: {}
name: libvirt-runtime
- emptyDir: {}
name: ephemeral-disks
- emptyDir: {}
name: container-disks
- emptyDir: {}
name: hotplug-disks
status:
conditions:
- lastProbeTime: null
lastTransitionTime: "2023-07-06T17:18:32Z"
message: '0/1 nodes are available: 1 Insufficient devices.kubevirt.io/kvm. preemption:
0/1 nodes are available: 1 No preemption victims found for incoming pod..'
reason: Unschedulable
status: "False"
type: PodScheduled
- lastProbeTime: "2023-07-06T17:18:32Z"
lastTransitionTime: "2023-07-06T17:18:32Z"
message: the virtual machine is not paused
reason: NotPaused
status: "True"
type: kubevirt.io/virtual-machine-unpaused
phase: Pending
qosClass: Burstable
Additional context:
- https://kubevirt.io/user-guide/operations/installation/#experimental-arm64-developer-builds
- https://github.com/kubevirt/kubevirt/pull/3415#issuecomment-628569863
- https://github.com/kubevirt/kubevirt/issues/7305
- https://github.com/kubevirt/kubevirt/pull/9832
Environment:
- KubeVirt version (use
virtctl version):Server Version: version.Info{GitVersion:"v1.0.0-beta.0.525+534bda181a078a", GitCommit:"534bda181a078a90215763f849eb4eabcb8d8da2", GitTreeState:"clean", BuildDate:"2023-07-06T01:08:35Z", GoVersion:"go1.19.9", Compiler:"gc", Platform:"linux/arm64"} - Kubernetes version (use
kubectl version):Client Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.2", GitCommit:"7f6f68fdabc4df88cfea2dcf9a19b2b830f1e647", GitTreeState:"clean", BuildDate:"2023-05-17T14:20:07Z", GoVersion:"go1.20.4", Compiler:"gc", Platform:"darwin/arm64"} Kustomize Version: v5.0.1 Server Version: version.Info{Major:"1", Minor:"27", GitVersion:"v1.27.3", GitCommit:"25b4e43193bcda6c7328a6d147b1fb73a33f1598", GitTreeState:"clean", BuildDate:"2023-06-15T00:38:14Z", GoVersion:"go1.20.5", Compiler:"gc", Platform:"linux/arm64"} - VM or VMI specifications: https://github.com/kubevirt/kubevirt/blob/main/examples/vm-cirros.yaml
- Cloud provider or hardware configuration: N/A
- OS (e.g. from /etc/os-release): macOS Ventura 13.2.1 (22D68)
- Kernel (e.g.
uname -a): N/A - Install tools: N/A
- Others: N/A
About this issue
- Original URL
- State: open
- Created a year ago
- Comments: 15 (2 by maintainers)
Hey @hugeps ,Kubevirt doesn’t have a special scheduler. You need to check your default scheduler for more info.
@ByteFlyCoding in this case you need to enable emulation, please see https://github.com/kubevirt/kubevirt/blob/main/docs/software-emulation.md