> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nebius.com/llms.txt
> Use this file to discover all available pages before exploring further.

# nebius_mk8s_v1_node_group resource

NodeGroup represents Kubernetes node pool - set of worker machines having the same configuration.
A Node is a Nebius Compute Instance created in Cluster.metadata.parent\_id container, running kubelet
that registers in Kubernetes API and a Node object created.

## Schema

### Required

* `parent_id` (String) Identifier of the parent resource to which the resource belongs.
* `template` (Attributes) :

  Parameters for Kubernetes Node object and Nebius Compute Instance
  If not written opposite a NodeTemplate field update will cause NodeGroup roll-out according NodeGroupDeploymentStrategy. (see [below for nested schema](#nestedatt--template))

### Optional

* `auto_repair` (Attributes) Parameters for nodes auto repair. (see [below for nested schema](#nestedatt--auto_repair))
* `autoscaling` (Attributes) :

  Enables [Kubernetes Cluster Autoscaler](https://github.com/kubernetes/autoscaler/tree/master/cluster-autoscaler)
  for that NodeGroup, and defines autoscaling parameters.

  *Cannot be set alongside fixed\_node\_count.* (see [below for nested schema](#nestedatt--autoscaling))
* `fixed_node_count` (Number) :

  Number of nodes in the group. Can be changed manually at any time.

  *Cannot be set alongside autoscaling.*
* `labels` (Map of String) Labels associated with the resource.
* `metadata` (Attributes) :

  #### Inner value description

  Common resource metadata. (see [below for nested schema](#nestedatt--metadata))
* `name` (String) Human readable name for the resource.
* `strategy` (Attributes) :

  Defines deployment - roll-out, or nodes re-creation during configuration change.
  Allows to setup compromise in roll-out speed, extra resources consumption and workloads disruption. (see [below for nested schema](#nestedatt--strategy))
* `version` (String) :

  Version is desired Kubernetes version of the cluster. For now only acceptable format is
  `<major>.<minor>` like "1.31". Option for patch version update will be added later.
  By default the cluster control plane `<major>.<minor>` version will be used.

### Read-Only

* `created_at` (String) :

  Timestamp indicating when the resource was created.

  A string representing a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ` or `YYYY-MM-DDTHH:MM:SS.SSS±HH:MM`
* `id` (String) Identifier for the resource, unique for its resource type.
* `resource_version` (Number) :

  Version of the resource for safe concurrent modifications and consistent reads.
  Positive and monotonically increases on each resource spec change (but *not* on each change of the
  resource's container(s) or status).
  Service allows zero value or current.
* `status` (Attributes) (see [below for nested schema](#nestedatt--status))
* `updated_at` (String) :

  Timestamp indicating when the resource was last updated.

  A string representing a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ` or `YYYY-MM-DDTHH:MM:SS.SSS±HH:MM`

<a id="nestedatt--template" />

### Nested Schema for `template`

Required:

* `resources` (Attributes) Resources that will have Nebius Compute Instance where Node kubelet will run. (see [below for nested schema](#nestedatt--template--resources))

Optional:

* `boot_disk` (Attributes) Parameters of a Node Nebius Compute Instance boot disk. (see [below for nested schema](#nestedatt--template--boot_disk))
* `cloud_init_user_data` (String, Sensitive) :

  cloud-init user-data
  Should contain at least one SSH key.
* `filesystems` (Attributes List) :

  Static attachments of Compute Filesystem.
  Can be used as a workaround, until CSI for Compute Disk and Filesystem will be available. (see [below for nested schema](#nestedatt--template--filesystems))
* `gpu_cluster` (Attributes) Nebius Compute GPUCluster ID that will be attached to node. (see [below for nested schema](#nestedatt--template--gpu_cluster))
* `gpu_settings` (Attributes) :

  GPU-related settings.

  #### Inner value description

  GPU-related settings. (see [below for nested schema](#nestedatt--template--gpu_settings))
* `local_disks` (Attributes) :

  local\_disks enables the provisioning of fast local drives.
  This type of storage is strictly ephemeral: on node restart, all data is erased, similar to RAM. (see [below for nested schema](#nestedatt--template--local_disks))
* `max_pods` (Number) :

  The maximum number of Pods per node for your cluster. If omitted, MK8S assigns the default value of 110. When you
  configure the maximum number of Pods per node for the cluster, MK8S uses this value to allocate a CIDR range for every node
  in group. The node CIDR prefix is calculated as `32 - ceil(log2(2 * max_pods))`, i.e. the smallest IPv4 subnet whose total address
  count is at least `2 * max_pods`. Not all IPs are usable for workload Pods because some of them are consumed by system Pods.
* `metadata` (Attributes) (see [below for nested schema](#nestedatt--template--metadata))
* `network_interfaces` (Attributes List) (see [below for nested schema](#nestedatt--template--network_interfaces))
* `nvlink` (Attributes) NVLinkSpec configures NVLink settings for the NodeGroup. (see [below for nested schema](#nestedatt--template--nvlink))
* `os` (String) :

  OS version that will be used to create the boot disk of Compute Instances in the NodeGroup.
  Supported platform / Kubernetes version / OS / driver presets combinations

  * `gpu-l40s-a`, `gpu-l40s-d`, `gpu-h100-sxm`, `gpu-h200-sxm`, `cpu-e1`, `cpu-e2`, `cpu-d3`:
    * `drivers_preset`: `""`
      * `version`: 1.30 → `"ubuntu22.04"`
      * `version`: 1.31 → `"ubuntu22.04"` (default), `"ubuntu24.04"`
  * `gpu-l40s-a`, `gpu-l40s-d`, `gpu-h100-sxm`, `gpu-h200-sxm`:
    * `drivers_preset`: `"cuda12"` (CUDA 12.4)
      * `version`: 1.30, 1.31 → `"ubuntu22.04"`
    * `drivers_preset`: `"cuda12.4"`
      * `version`: 1.31 → `"ubuntu22.04"`
    * `drivers_preset`: `"cuda12.8"`
      * `version`: 1.31 → `"ubuntu24.04"`
  * `gpu-b200-sxm`:
    * `drivers_preset`: `""`
      * `version`: 1.30, 1.31 → `"ubuntu24.04"`
    * `drivers_preset`: `"cuda12"` (CUDA 12.8)
      * `version`: 1.30, 1.31 → `"ubuntu24.04"`
    * `drivers_preset`: `"cuda12.8"`
      * `version`: 1.31 → `"ubuntu24.04"`
  * `gpu-b200-sxm-a`:
    * `drivers_preset`: `""`
      * `version`: 1.31 → `"ubuntu24.04"`
    * `drivers_preset`: `"cuda12.8"`
      * `version`: 1.31 → `"ubuntu24.04"`
* `preemptible` (Attributes) :

  Configures whether the nodes in the group are preemptible.
  Set to empty value to enable preemptible nodes. (see [below for nested schema](#nestedatt--template--preemptible))
* `reservation_policy` (Attributes) :

  reservation\_policy is an interface of the "capacity block" (or "capacity block group") mechanism of Nebius Compute.

  #### Inner value description

  ReservationPolicy is copied as-is from NebiusAPI `compute/v1/instance.proto`. (see [below for nested schema](#nestedatt--template--reservation_policy))
* `service_account_id` (String) :

  the Nebius service account whose credentials will be available on the nodes of the group.
  With these credentials, it is possible to make `nebius` CLI or public API requests from the nodes
  without the need for extra authentication.
  This service account is also used to make requests to container registry.

  `resource.serviceaccount.issueAccessToken` permission is required to use this field.
* `taints` (Attributes List) :

  Kubernetes Node taints.
  For now change will not be propagated to existing nodes, so will be applied only to Kubernetes Nodes created after the field change.
  That behaviour may change later.
  So, for now you will need to manually set them to existing nodes, if that is needed.
  Field change will NOT trigger NodeGroup roll out.

  #### Inner value description

  See [https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/](https://kubernetes.io/docs/concepts/scheduling-eviction/taint-and-toleration/) (see [below for nested schema](#nestedatt--template--taints))

<a id="nestedatt--template--resources" />

### Nested Schema for `template.resources`

Required:

* `platform` (String)

Optional:

* `preset` (String)

<a id="nestedatt--template--boot_disk" />

### Nested Schema for `template.boot_disk`

Optional:

* `block_size_bytes` (Number)
* `size_bytes` (Number) *Cannot be set alongside size\_kibibytes, size\_mebibytes or size\_gibibytes.*
* `size_gibibytes` (Number) *Cannot be set alongside size\_bytes, size\_kibibytes or size\_mebibytes.*
* `size_kibibytes` (Number) *Cannot be set alongside size\_bytes, size\_mebibytes or size\_gibibytes.*
* `size_mebibytes` (Number) *Cannot be set alongside size\_bytes, size\_kibibytes or size\_gibibytes.*
* `type` (String) :

  #### Supported values

  Possible values:

  * `UNSPECIFIED`
  * `NETWORK_SSD`
  * `NETWORK_HDD`
  * `NETWORK_SSD_IO_M3`
  * `NETWORK_SSD_NON_REPLICATED`

<a id="nestedatt--template--filesystems" />

### Nested Schema for `template.filesystems`

Required:

* `attach_mode` (String) :

  #### Supported values

  Possible values:

  * `UNSPECIFIED`
  * `READ_ONLY`
  * `READ_WRITE`
* `mount_tag` (String) Specifies the user-defined identifier, allowing to use it as a device in mount command.

Optional:

* `existing_filesystem` (Attributes) (see [below for nested schema](#nestedatt--template--filesystems--existing_filesystem))

<a id="nestedatt--template--filesystems--existing_filesystem" />

### Nested Schema for `template.filesystems.existing_filesystem`

Required:

* `id` (String)

<a id="nestedatt--template--gpu_cluster" />

### Nested Schema for `template.gpu_cluster`

Optional:

* `id` (String)

<a id="nestedatt--template--gpu_settings" />

### Nested Schema for `template.gpu_settings`

Required:

* `drivers_preset` (String) :

  Identifier of the predefined set of drivers included in the ComputeImage deployed on ComputeInstances that are part of the NodeGroup.
  Supported presets for different platform / Kubernetes version combinations:

  * `gpu-l40s-a`, `gpu-l40s-d`, `gpu-h100-sxm`, `gpu-h200-sxm`:
    * `version`: 1.30 → `"cuda12"` (CUDA 12.4)
    * `version`: 1.31 → `"cuda12"` (CUDA 12.4), `"cuda12.4"`, `"cuda12.8"`
  * `gpu-b200-sxm`:
    * `version`: 1.31 → `"cuda12"` (CUDA 12.8), `"cuda12.8"`
  * `gpu-b200-sxm-a`:
    * `version`: 1.31 → `"cuda12.8"`

<a id="nestedatt--template--local_disks" />

### Nested Schema for `template.local_disks`

Optional:

* `config` (Attributes) :

  config defines actions that managed Kubernetes service performs on mounted local disks
  to provide them inside Kubernetes cluster with a convenient interface.

  When omitted, a default value is generated.

  #### Inner value description

  LocalDisksSpecConfig defines actions that managed Kubernetes service performs on mounted local disks
  to provide them inside Kubernetes cluster with a convenient interface. (see [below for nested schema](#nestedatt--template--local_disks--config))
* `passthrough_group` (Attributes) :

  Requests passthrough local disks from the host.
  Topology of the provided disks is preserved during stop and start
  for every instance of a specific platform and preset in the region. (see [below for nested schema](#nestedatt--template--local_disks--passthrough_group))

<a id="nestedatt--template--local_disks--config" />

### Nested Schema for `template.local_disks.config`

Optional:

* `kubelet_ephemeral` (Boolean) :

  kubelet\_ephemeral: combine all local disks into a single storage volume and use it as kubelet's local ephemeral storage on the node
  See also [https://kubernetes.io/docs/concepts/storage/ephemeral-storage/](https://kubernetes.io/docs/concepts/storage/ephemeral-storage/)

  The default when LocalDisksSpecConfig is not set.

  *Cannot be set alongside none.*
* `none` (Boolean) :

  none: "do nothing" - local disks will be provisioned as on a regular compute instance.

  *Cannot be set alongside kubelet\_ephemeral.*

<a id="nestedatt--template--local_disks--passthrough_group" />

### Nested Schema for `template.local_disks.passthrough_group`

Optional:

* `requested` (Boolean) :

  Passthrough local disks from the underlying host.

  Devices are expected to appear in the guest as NVMe devices (nvme0, nvme1, ...),
  but the exact number depends on the preset.
  Enabled only when this field is explicitly set.

<a id="nestedatt--template--metadata" />

### Nested Schema for `template.metadata`

Optional:

* `labels` (Map of String) :

  Kubernetes Node labels.

  Keys and values must follow Kubernetes label syntax:
  [https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/](https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/)

  For now change will not be propagated to existing nodes, so will be applied only to Kubernetes Nodes created after the field change.
  That behavior may change later.
  So, for now you will need to manually set them to existing nodes, if that is needed.

  System labels containing "kubernetes.io" and "k8s.io" will be ignored.
  Field change will NOT trigger NodeGroup roll out.

<a id="nestedatt--template--network_interfaces" />

### Nested Schema for `template.network_interfaces`

Optional:

* `public_ip_address` (Attributes) :

  Parameters for Public IPv4 address associated with the interface.
  Set to empty value, to enable it.

  #### Inner value description

  Describes a public IP address. (see [below for nested schema](#nestedatt--template--network_interfaces--public_ip_address))
* `security_groups` (Attributes List) User provided VPC Security Groups which will be assigned to all nodes of this NodeGroup. (see [below for nested schema](#nestedatt--template--network_interfaces--security_groups))
* `subnet_id` (String) :

  Nebius VPC Subnet ID that will be attached to a node cloud instance network interface.
  By default Cluster control plane subnet\_id used.
  Subnet should be located in the same network with control plane.

<a id="nestedatt--template--network_interfaces--public_ip_address" />

### Nested Schema for `template.network_interfaces.public_ip_address`

<a id="nestedatt--template--network_interfaces--security_groups" />

### Nested Schema for `template.network_interfaces.security_groups`

Optional:

* `id` (String)

<a id="nestedatt--template--nvlink" />

### Nested Schema for `template.nvlink`

Optional:

* `nvl_instance_group_id` (String) Existing NVLInstanceGroup ID to use.

<a id="nestedatt--template--preemptible" />

### Nested Schema for `template.preemptible`

<a id="nestedatt--template--reservation_policy" />

### Nested Schema for `template.reservation_policy`

Optional:

* `policy` (String) :

  #### Supported values

  Possible values:

  * `AUTO`:
    1. Will try to launch instance in any reservation\_ids if provided.
    2. Will try to launch instance in any of the available capacity block.
    3. Will try to launch instance in PAYG if 1 & 2 are not satisfied.

  * `FORBID`:
    The instance is launched only using on-demand (PAYG) capacity.
    No attempt is made to find or use a Capacity Block.
    It's an error to provide reservation\_ids with policy = FORBID

  * `STRICT`:
    1. Will try to launch the instance in Capacity Blocks from reservation\_ids if provided.
    2. If reservation\_ids are not provided will try to launch instance in suitable & available Capacity Block.
    3. Fail otherwise.
* `reservation_ids` (List of String) Capacity block groups, order matters

<a id="nestedatt--template--taints" />

### Nested Schema for `template.taints`

Required:

* `effect` (String) :

  #### Supported values

  Possible values:

  * `EFFECT_UNSPECIFIED`
  * `NO_EXECUTE`
  * `NO_SCHEDULE`
  * `PREFER_NO_SCHEDULE`
* `key` (String)
* `value` (String)

<a id="nestedatt--auto_repair" />

### Nested Schema for `auto_repair`

Optional:

* `conditions` (Attributes List) Conditions that determine whether a node should be auto repaired. (see [below for nested schema](#nestedatt--auto_repair--conditions))

<a id="nestedatt--auto_repair--conditions" />

### Nested Schema for `auto_repair.conditions`

Required:

* `type` (String) Node condition type.

Optional:

* `disabled` (Boolean) :

  When true, disables the default auto-repair condition rules.

  *Cannot be set alongside timeout.*
* `status` (String) :

  Node condition status.

  #### Supported values

  Possible values:

  * `CONDITION_STATUS_UNSPECIFIED`
  * `TRUE`
  * `FALSE`
  * `UNKNOWN`
* `timeout` (String) :

  The duration after which the node is automatically repaired if the condition remains in the specified status.

  Duration as a string: possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as `300ms`, `-1.5h` or `2h45m`. Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`, `d`.

  *Cannot be set alongside disabled.*

<a id="nestedatt--autoscaling" />

### Nested Schema for `autoscaling`

Optional:

* `max_node_count` (Number)
* `min_node_count` (Number)

<a id="nestedatt--metadata" />

### Nested Schema for `metadata`

<a id="nestedatt--strategy" />

### Nested Schema for `strategy`

Optional:

* `drain_timeout` (String) :

  Maximum amount of time that the service will spend attempting to gracefully drain a node
  (evicting its pods) before falling back to pod deletion.
  A value of 0 means no timeout: the node can be drained for an unlimited time.
  Important consequence of that is if PodDisruptionBudget doesn't allow evicting a pod,
  then NodeGroup update with node re-creation will hang on that pod eviction.
  Note that this is different from `kubectl drain --timeout`, which gives up and returns an error.

  On 2026-08-01, defaults to 0.
  IMPORTANT: starting from Q3 2026 new default is 10m;
  for new clusters it will default to 10m,
  node groups in existing clusters will be gradually migrated during Q3 to the default of 10m as well.
  To get the actual value for your node group, please see 'strategy' in its status.

  Duration as a string: possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as `300ms`, `-1.5h` or `2h45m`. Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`, `d`.
* `max_surge` (Attributes) :

  The maximum number of additional nodes that can be provisioned above the desired number of nodes during the update process.

  This value can be specified either as an absolute number (for example 3) or as a percentage of the desired
  number of nodes (for example 5%).

  When specified as a percentage, the actual number is calculated by rounding up to the nearest whole number.
  This value cannot be 0 if `max_unavailable` is also set to 0.

  On 2026-08-01, defaults to 1.
  IMPORTANT: starting from Q3 2026 new default is 0;
  for new clusters it will default to 0,
  node groups in existing clusters will be gradually migrated during Q3 to the default of 0 as well.
  To get the actual value for your node group, please see 'strategy' in its status.

  Example: If set to 25%, the node group can scale up by an additional 25% during the update,
  allowing new nodes to be added before old nodes are removed, which helps minimize workload disruption.

  NOTE:

  it is user responsibility to ensure that there are enough quota for provision nodes above the desired number.
  Available quota effectively limits `max_surge`.
  In case of not enough quota even for one extra node, update operation will hung because of quota exhausted error.
  Such error will be visible in Operation.progress\_data. (see [below for nested schema](#nestedatt--strategy--max_surge))
* `max_unavailable` (Attributes) :

  The maximum number of nodes that can be simultaneously unavailable during the update process.

  This value can be specified either as an absolute number (for example 3) or as a percentage of the desired
  number of nodes (for example 5%).

  When specified as a percentage, the actual number is calculated by rounding down to the nearest whole number.
  This value cannot be 0 if `max_surge` is also set to 0.

  On 2026-08-01, defaults to 0.
  IMPORTANT: starting from Q3 2026 new default is 1;
  for new clusters it will default to 1,
  node groups in existing clusters will be gradually migrated during Q3 to the default of 1 as well.
  To get the actual value for your node group, please see 'strategy' in its status.

  Example: If set to 20%, up to 20% of the nodes can be taken offline at once during the update,
  ensuring that at least 80% of the desired nodes remain operational. (see [below for nested schema](#nestedatt--strategy--max_unavailable))

<a id="nestedatt--strategy--max_surge" />

### Nested Schema for `strategy.max_surge`

Optional:

* `count` (Number) *Cannot be set alongside percent.*
* `percent` (Number) *Cannot be set alongside count.*

<a id="nestedatt--strategy--max_unavailable" />

### Nested Schema for `strategy.max_unavailable`

Optional:

* `count` (Number) *Cannot be set alongside percent.*
* `percent` (Number) *Cannot be set alongside count.*

<a id="nestedatt--status" />

### Nested Schema for `status`

Read-Only:

* `events` (Attributes List) :

  #### Inner value description

  A resource event that has occurred (more or less in the same way) multiple times across a service-defined aggregation interval (see [below for nested schema](#nestedatt--status--events))
* `node_count` (Number) :

  Total number of nodes that are currently in the node group.
  Both ready and not ready nodes are counted.
* `outdated_node_count` (Number) :

  Total number of nodes that has outdated node configuration.
  These nodes will be replaced by new nodes with up-to-date configuration.
* `ready_node_count` (Number) :

  Total number of nodes that successfully joined the cluster and are ready to serve workloads.
  Both outdated and up-to-date nodes are counted.
* `reconciling` (Boolean) Show that there are changes are in flight.
* `state` (String) :

  #### Supported values

  Possible values:

  * `STATE_UNSPECIFIED`
  * `PROVISIONING`
  * `RUNNING`
  * `DELETING`
* `strategy` (Attributes) :

  Deployment strategy used by the service for node group rollouts and node deletions.
  It includes default values applied by the service. A drain\_timeout value of 0 means
  that node draining is not time-limited. (see [below for nested schema](#nestedatt--status--strategy))
* `target_node_count` (Number) :

  Desired total number of nodes that should be in the node group.
  It is either `NodeGroupSpec.fixed_node_count` or arbitrary number between
  `NodeGroupAutoscalingSpec.min_node_count` and `NodeGroupAutoscalingSpec.max_node_count` decided by autoscaler.
* `version` (String) :

  Actual version of NodeGroup. Have format `<major>.<minor>.<patch>-nebius-node.<infra_version>` like "1.30.0-nebius-node.10".
  Where `<major>.<minor>.<patch>` is Kubernetes version and `<infra_version>` is version of Node infrastructure and configuration,
  which update may include bug fixes, security updates and new features depending on worker node configuration.

<a id="nestedatt--status--events" />

### Nested Schema for `status.events`

Read-Only:

* `first_occurred_at` (String) :

  Time of the first occurrence of a recurrent event

  A string representing a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ` or `YYYY-MM-DDTHH:MM:SS.SSS±HH:MM`
* `last_occurrence` (Attributes) :

  Last occurrence of a recurrent event

  #### Inner value description

  Represents an API Resource-related event which is potentially important to the end-user. What exactly constitutes an *event* to be
  reported is service-dependent (see [below for nested schema](#nestedatt--status--events--last_occurrence))
* `occurrence_count` (Number) The number of times this event has occurred between `first_occurred_at` and `last_occurrence.occurred_at`. Must be > 0

<a id="nestedatt--status--events--last_occurrence" />

### Nested Schema for `status.events.last_occurrence`

Read-Only:

* `code` (String) Event code (unique within the API service), in UpperCamelCase, e.g. `"DiskAttached"`
* `level` (String) :

  Severity level for the event

  #### Supported values

  Possible values:

  * `UNSPECIFIED` - Unspecified event severity level

  * `DEBUG` - A debug event providing detailed insight. Such events are used to debug problems with specific resource(s) and process(es)

  * `INFO` - A normal event or state change. Informs what is happening with the API resource. Does not require user attention or interaction

  * `WARN`:
    Warning event. Indicates a potential or minor problem with the API resource and/or the corresponding processes. Needs user attention,
    but requires no immediate action (yet)

  * `ERROR` - Error event. Indicates a serious problem with the API resource and/or the corresponding processes. Requires immediate user action
* `message` (String) :

  A human-readable message describing what has happened
  (and suggested actions for the user, if this is a `WARN` or `ERROR` level event)
* `occurred_at` (String) :

  Time at which the event has occurred

  A string representing a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ` or `YYYY-MM-DDTHH:MM:SS.SSS±HH:MM`

<a id="nestedatt--status--strategy" />

### Nested Schema for `status.strategy`

Read-Only:

* `drain_timeout` (String) :

  Maximum amount of time that the service will spend attempting to gracefully drain a node
  (evicting its pods) before falling back to pod deletion.
  A value of 0 means no timeout: the node can be drained for an unlimited time.
  Important consequence of that is if PodDisruptionBudget doesn't allow evicting a pod,
  then NodeGroup update with node re-creation will hang on that pod eviction.
  Note that this is different from `kubectl drain --timeout`, which gives up and returns an error.

  On 2026-08-01, defaults to 0.
  IMPORTANT: starting from Q3 2026 new default is 10m;
  for new clusters it will default to 10m,
  node groups in existing clusters will be gradually migrated during Q3 to the default of 10m as well.
  To get the actual value for your node group, please see 'strategy' in its status.

  Duration as a string: possibly signed sequence of decimal numbers, each with optional fraction and a unit suffix, such as `300ms`, `-1.5h` or `2h45m`. Valid time units are `ns`, `us` (or `µs`), `ms`, `s`, `m`, `h`, `d`.
* `max_surge` (Attributes) :

  The maximum number of additional nodes that can be provisioned above the desired number of nodes during the update process.

  This value can be specified either as an absolute number (for example 3) or as a percentage of the desired
  number of nodes (for example 5%).

  When specified as a percentage, the actual number is calculated by rounding up to the nearest whole number.
  This value cannot be 0 if `max_unavailable` is also set to 0.

  On 2026-08-01, defaults to 1.
  IMPORTANT: starting from Q3 2026 new default is 0;
  for new clusters it will default to 0,
  node groups in existing clusters will be gradually migrated during Q3 to the default of 0 as well.
  To get the actual value for your node group, please see 'strategy' in its status.

  Example: If set to 25%, the node group can scale up by an additional 25% during the update,
  allowing new nodes to be added before old nodes are removed, which helps minimize workload disruption.

  NOTE:

  it is user responsibility to ensure that there are enough quota for provision nodes above the desired number.
  Available quota effectively limits `max_surge`.
  In case of not enough quota even for one extra node, update operation will hung because of quota exhausted error.
  Such error will be visible in Operation.progress\_data. (see [below for nested schema](#nestedatt--status--strategy--max_surge))
* `max_unavailable` (Attributes) :

  The maximum number of nodes that can be simultaneously unavailable during the update process.

  This value can be specified either as an absolute number (for example 3) or as a percentage of the desired
  number of nodes (for example 5%).

  When specified as a percentage, the actual number is calculated by rounding down to the nearest whole number.
  This value cannot be 0 if `max_surge` is also set to 0.

  On 2026-08-01, defaults to 0.
  IMPORTANT: starting from Q3 2026 new default is 1;
  for new clusters it will default to 1,
  node groups in existing clusters will be gradually migrated during Q3 to the default of 1 as well.
  To get the actual value for your node group, please see 'strategy' in its status.

  Example: If set to 20%, up to 20% of the nodes can be taken offline at once during the update,
  ensuring that at least 80% of the desired nodes remain operational. (see [below for nested schema](#nestedatt--status--strategy--max_unavailable))

<a id="nestedatt--status--strategy--max_surge" />

### Nested Schema for `status.strategy.max_surge`

Read-Only:

* `count` (Number) *Cannot be set alongside percent.*
* `percent` (Number) *Cannot be set alongside count.*

<a id="nestedatt--status--strategy--max_unavailable" />

### Nested Schema for `status.strategy.max_unavailable`

Read-Only:

* `count` (Number) *Cannot be set alongside percent.*
* `percent` (Number) *Cannot be set alongside count.*
