Skip to main content
Use subnet runtime policy when a subnet should accept only specific workload isolation classes, such as standard containers or microVM-backed workloads. For the builder, operator, and provider model, see Workload isolation. Runtime policy is enforced at the subnet boundary. It controls workload admission and node eligibility for scheduling. It does not grant provider admission by itself, and it is separate from deploy approval.

How runtime policy works

IDYL keeps three concepts separate: The supported isolation classes are: For microvm policy, a subnet can also restrict compatible Kata VMM backends: microvm is not a cryptographic attestation claim. It means IDYL schedules the workload for a node that reports a compatible microVM runtime path. It does not prove confidential-computing execution.

Choose a policy

Create a subnet with runtime policy

Create a subnet with no runtime policy:
Create a microvm subnet with defaulting. Workloads that omit --isolation-class inherit microvm:
Create a strict microvm subnet. Workloads must explicitly request --isolation-class microvm:
Create a microvm subnet that accepts only Kata + Firecracker nodes:
Create a microvm subnet that accepts either Kata + QEMU or Kata + Firecracker nodes:
Create a subnet that allows both container and microvm workloads:
You can also pass allowed classes as a comma-separated list:

Update an existing subnet

Set or replace runtime policy:
Restrict a microvm subnet to a specific Kata backend:
Clear runtime policy:
When you set a policy, --allowed-isolation-class is required. --default-isolation-class is optional, but when present it must be one of the allowed isolation classes. --allowed-vmm-backend is optional and only applies when microvm is an allowed isolation class.

Verify the policy

Inspect the subnet:
Output similar to:
List subnets:
When a subnet has a runtime policy, table output includes a runtime policy summary. Structured output includes the runtimePolicy object.

Workload admission behavior

When a workload is created in a subnet with runtime policy, IDYL resolves the effective isolation class in this order:
  1. If the workload sets --isolation-class, IDYL uses that explicit value.
  2. Otherwise, if the subnet sets defaultIsolationClass, IDYL uses the subnet default.
  3. Otherwise, if the subnet has runtime policy but no default, IDYL rejects the workload because an isolation class is required.
The effective isolation class must be listed in allowedIsolationClasses. This workload is accepted by a microvm subnet:
This workload is accepted only when the subnet has defaultIsolationClass: microvm:
This workload is rejected by a microvm-only subnet:
The error message includes:
When a subnet has runtime policy but no default, a workload that omits --isolation-class is rejected with a message that includes:

Coordinate compatible capacity

Runtime policy does not install runtimes or approve provider capacity. Provider nodes must still be admitted to the subnet, and each node must report runtime metadata that can satisfy the policy. --runtime-profile selects a named preset. The preset writes the provider, runtime type, and default local runtime settings. Use --runtime-provider only when you are not using a preset and need to provide raw runtime settings. Use containerd-kata-* as shorthand for the family of explicit Kata backend profiles. It is not a runtime profile value accepted by the CLI. Join a Kata-capable node to a subnet:
A node can be admitted to a subnet but still fail to contribute compatible capacity for a workload. For example, Docker and containerd/runc nodes do not satisfy microvm policy. Inspect connected nodes:
On the provider node, inspect local runtime readiness:

Scheduling behavior

After a workload passes admission, the scheduler uses the effective isolation class and node runtime metadata. For microvm, the node must report a compatible microVM runtime path. Docker and containerd/runc are not compatible with microvm, and IDYL does not downgrade microvm workloads to container. Backend selection is controlled by node configuration and subnet runtime policy, not by a workload-level runtime-profile flag. If no compatible node is available, the workload remains unplaced until compatible capacity is available. Runtime compatibility errors include the requested isolation class, for example:
Resource shortage errors do not include an isolation class compatibility reason:

Troubleshooting