Purpose: For operators, shows how to deploy a Windows worker node when full Hyper-V features are unavailable (e.g., running inside a VM without nested virtualization).
Task summary
When Windows Server runs as a VM on hypervisors that don’t expose nested virtualization, the standard Hyper-V feature installation fails. The skip_hypervisor_support_check variable tells the win-containerd role to use DISM to enable a minimal Hyper-V configuration instead.
Prerequisites
-
Completed the ../tutorial/getting-started.md[Getting Started tutorial] or have the collection installed
-
A Windows Server VM without nested virtualization support
Steps
-
Set
skip_hypervisor_support_check: truein your playbook variables:
---
- name: Setup Windows Worker (VM without nested virt)
hosts: windows_workers
vars:
skip_hypervisor_support_check: true
containerd_version: "1.7.13"
crictl_version: "1.29.0"
kube_version: "1.29.0"
k8s_internal_ip: "10.0.0.10"
roles:
- opencenter-cloud.opencenter_windows_workers.win-containerd
- opencenter-cloud.opencenter_windows_workers.win-kubeadm
-
Run the playbook:
ansible-playbook -i inventory.ini windows-workers.yml
When skip_hypervisor_support_check is true, the role:
- Skips the standard Hyper-V and Hyper-V-PowerShell Windows features
- Enables Microsoft-Hyper-V via DISM instead
- Disables Microsoft-Hyper-V-Online (not needed for container workloads)
- Still installs the Containers feature normally
Verification
Confirm ContainerD is running:
Get-Service containerd | Select-Object Name, Status
Confirm the node joined the cluster:
kubectl get nodes -o wide
Troubleshooting
If the DISM command fails with an error about the feature not being available, the Windows Server edition may not support Hyper-V at all. Check:
Get-WindowsOptionalFeature -FeatureName "Microsoft-Hyper-V" -Online
If the feature doesn’t exist, you may need Windows Server 2019 Standard/Datacenter or later.