Skip to main content
Use subnet runtime policy when a subnet should accept only specific workload isolation classes, such as secure-container for untrusted code. 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: Runtime policy names isolation classes only. It never names a runtime or a virtual machine monitor, so a subnet’s policy stays valid as provider nodes change their runtime installations. An isolation class is not a cryptographic attestation claim. It means IDYL schedules the workload onto a node that reports a runtime serving that class.

Choose a policy

Create a subnet with runtime policy

Create a subnet with no runtime policy:
Create a secure-container subnet with defaulting. Workloads that omit --isolation-class inherit secure-container:
Create a strict secure-container subnet. Workloads must explicitly request --isolation-class secure-container:
Create a microvm subnet with defaulting. microvm is in preview: no provider host has completed IDYL’s validation for it, so use it for evaluation rather than production workloads:
Create a subnet that allows both container and secure-container workloads:
You can also pass allowed classes as a comma-separated list:

Update an existing subnet

Set or replace runtime policy:
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.

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 secure-container subnet:
This workload is accepted only when the subnet has defaultIsolationClass: secure-container:
This workload is rejected by a secure-container-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 a runtime that serves the classes the policy allows. Provider nodes serve classes through their runtime configuration: Join a node that serves secure-container through a Fleet:
A node can be admitted to a subnet but still fail to contribute compatible capacity for a workload. For example, a Docker Engine node, or a containerd node without the gVisor runtime configured, does not satisfy secure-container 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 the isolation classes each node reports. A workload is placed only on a node that reports its isolation class. IDYL does not place a secure-container or microvm workload with a weaker class. Runtime selection belongs to node configuration; a workload never names a runtime. 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