Edit

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

  1. Set skip_hypervisor_support_check: true in 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
  1. 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.