Node Pool Manifest Reference
A node pool manifest is a Kubernetes manifest applied to a set of worker nodes.
Node Pool Manifest
To create a node pool manifest, you need to create a YAML file following this structure:
apiVersion: oks.dev/v1beta2
kind: NodePool
metadata:
name: application-pool2-a
spec:
desiredNodes: 2
nodeType: tinav6.c2r4p2
zones:
- eu-west-2a
- eu-west-2b
volumes:
- device: xvdl
size: 2
type: "standard"
dir: /var/spool/filebeat
snapshot: snap-87654321
upgradeStrategy:
maxUnavailable: 1
maxSurge: 0
autoUpgradeEnabled: true
autoUpgradeMaintenance:
durationHours: 1
startHour: 12
weekDay: Tue
autoHealing: true
Volumes Manifest
You can specify volumes for your worker nodes, under the volumes section of the node pool manifest.
If the volumes are valid, they will be created with the VM for each worker node managed by the node pool, and mounted in the system. A filesystem will be created on the volumes. If the volumes are not valid, an error occurs, and no VM will be created.
|
This setting is limited by your current OKS plan and OUTSCALE account quotas. |
In this example, we are adding a dedicated 300 GiB gp2 volume to use as a Longhorn volume. This volume synchronizes the data distributed between the nodes of the cluster, regardless of their Subregion, and stores the application data:
...
spec:
volumes:
- size: 300
type: "gp2"
dir: "/var/lib/longhorn"
snapshot: snap-87654321
You can use a dedicated small standard volume for Filebeat:
...
spec:
volumes:
- device: xvdl
size: 2
type: "standard"
dir: /var/spool/filebeat
snapshot: snap-87654321
You can boost the booting performance of your pods by switching the disk of the worker node to io1 3000 IOPS:
...
spec:
volumes:
- device: root
size: 100
iops: 3000
type: "io1"
dir: /
snapshot: snap-87654321
Or place the Kubernetes related data on a dedicated fast volume:
...
spec:
volumes:
- device: xvdl
size: 100
iops: 3000
type: "io1"
dir: /var/lib/kubelet
snapshot: snap-87654321
This sample contains the following options that you need to specify:
-
(optional)
device: The/dev/XXXdevice in which you want to locate the volume. It can be eitherroot,xvdXorxvdXY, whereXis a letter betweenbandz, andYis a letter betweenaandz. If not specified, it is generated automatically. -
type: The type of volume, among the volume types supported by 3DS OUTSCALE. It can either bestandard(the default type),gp2orio1. -
size: The size of the volume, in gibibytes (GiB). This parameter is required and is set by default to 100 for therootvolume. -
(optional)
iops: The number of I/O operations per second (IOPS). This parameter only needs to be specified if you create an io1 volume. The maximum number of IOPS allowed for io1 volumes is 13000 with a maximum performance ratio of 300 IOPS per gibibyte. -
dir: The mount path for the volume. It should always be/for the root volumes, and may point to any directory for other volumes. -
(optional)
snapshot: The ID of the snapshot from which you want to create the volume.
For more information about volume types and parameters, see About Volumes > Volume Types and IOPS.
Zones Manifest
You can specify multiple worker node zones for higher availability, under the zones section of the node pool manifest.
In the case where multiple zones have been specified, the desiredNodes parameter controls VM creation in each specified zone.
...
spec:
zones:
- eu-west-2a
- eu-west-2b
...
Physical Placement Manifest
Node pools support physical placement options. These options are not strict and are mutually exclusive. They are listed in the table below.
| Option | Description |
|---|---|
|
Places nodes with the same value on different servers. |
|
Places nodes with the same value on the same server. |
|
Places nodes with the same value on different Cisco UCS clusters. |
|
Places nodes with the same value on the same Cisco UCS cluster. |
The placement portion of the manifest must follow this structure:
...
spec:
physicalPlacement:
nodeRepulseServer: application_2
...
Autohealing Manifest
Autohealing (autoHealing option) controls the management of NotReady nodes.
-
When set to
true, the VM is forced to reboot 5 minutes after the last heartbeat time of the node. If the node is not in thereadystate 5 minutes after reboot, it is replaced. -
When set to
false, no automatic actions are taken. This allows you to manually decide how to recover nodes that host workloads requiring controlled intervention (long-running machine learning (ML) processes, databases, load test environments, or legacy applications requiring consistency checks before restart).
...
spec:
autoHealing: true
Upgrade Strategy Manifest
You can control the behavior of worker nodes in case of setting changes that influence type, volumes, and placement of the VMs, under the upgradeStrategy section of the node pool manifest.
The upgradeStrategy parameter serves the same function as in the ReplicaSet resource. The default value for both parameters is 25%.
...
spec:
upgradeStrategy:
maxUnavailable: 1
maxSurge: 0
Upgrade Triggers
Nodes are automatically upgraded when:
-
The Kubernetes version on the nodes differs from the cluster version.
-
The OMI ID on the nodes is different from the one configured in the node pool.
Automatic Node Upgrades
You can use the upgradeStrategy section to control whether nodes in a node pool are automatically recreated during cluster upgrade operations.
...
upgradeStrategy:
autoUpgradeEnabled: false
This sample contains the following options that you need to specify:
-
upgradeStrategy: Defines how nodes in the node pool are managed during upgrade operations. -
autoUpgradeEnabled: Controls whether nodes are automatically recreated during cluster upgrades.-
When set to
true, nodes can be automatically recreated during upgrade operations, according to the configured upgrade strategy and maintenance window. -
When set to
false, nodes are not automatically recreated during cluster upgrades. This lets you manually control node recreation for workloads that require controlled intervention, such as long-running ML processes, databases, or applications that must not be interrupted automatically.
-
|
Disabling automatic node upgrades does not disable autohealing. To prevent automatic recovery actions on |
Maintenance Window
When autoUpgradeEnabled is set to true, you can restrict automatic upgrade operations to specific time windows. Two mutually exclusive scheduling modes are available: a simple weekly schedule using weekDay and startHour, or an RFC 5545–based recurrence rule.
...
upgradeStrategy:
autoUpgradeEnabled: true
autoUpgradeMaintenance:
durationHours: 1
startHour: 12
weekDay: Tue
This sample contains the following options that you need to specify:
-
autoUpgradeMaintenance: Defines the maintenance window during which automatic upgrade operations are allowed to proceed. -
durationHours: Duration of the maintenance window, in hours. During this time, upgrades are allowed to proceed. -
startHour: Start time of the window, in 24-hour format (0–23). -
weekDay: Day of the week when the window applies. Valid values are:Mon,Tue,Wed,Thu,Fri,Sat, andSun.
...
upgradeStrategy:
autoUpgradeEnabled: true
autoUpgradeMaintenance:
durationHours: 1
rrule: FREQ=DAILY;WKST=TU;BYHOUR=12
This sample contains the following options that you need to specify:
-
autoUpgradeMaintenance: Defines the maintenance window during which automatic upgrade operations are allowed to proceed. -
durationHours: Duration of the maintenance window, in hours. During this time, upgrades are allowed to proceed. -
rrule: A recurrence rule (in RFC 5545 format) to define more advanced upgrade windows. For example,FREQ=DAILY;WKST=TU;BYHOUR=12defines an upgrade window that occurs every day at 12:00, with Tuesday set as the start of the week.
|
If no maintenance window is specified, nodes may be upgraded at any time. |
Maintenance and Downscaling Annotations
Nodes with attached local volumes (e.g., via hostPath) are excluded from maintenance operations to prevent data loss. To allow their removal, you can manually annotate them under the nodeAnnotations section of your manifest.
...
spec:
nodeAnnotations:
cluster-autoscaler.kubernetes.io/safe-to-evict: "true"
nplc.oks.outscale.com/safe-to-delete: "true"
This sample contains the following annotations that you may need to specify:
-
nplc.oks.outscale.com/safe-to-delete: Bypasses maintenance upgrade limitations. Required when more than one custom volume is defined in the node pool spec (only the root volume is allowed) or when pods withhostPathvolumes (not daemonsets/static pods) are present. Can be applied at the node pool level (nodeAnnotations), directly on nodes, or on affected pods. -
cluster-autoscaler.kubernetes.io/safe-to-evict: Applied to pods withhostPathvolumes to allow eviction during upgrades. Has the same effect as settingnplc.oks.outscale.com/safe-to-delete: "true".
GPU Support Manifest
Node pools allow worker nodes to allocate, attach, and use flexible GPUs in OKS clusters. For more information about GPUs, see About Flexible GPUs and Using fGPUs With OKS.
You can configure GPU support under the fgpu section of the node pool manifest.
spec:
fgpu:
model: "nvidia-p6"
k8s-operator: true
This sample contains the following parameters that you need to specify:
-
model: The GPU model to allocate. -
k8s-operator: Whether the official NVIDIA GPU operator in thegpu-operatornamespace is installed on the cluster (true|false). Deleting the node pool does not uninstall the operator.
Autoscaling Manifest (Beta)
You can enable autoscaling by adding the following options to your node pool manifest:
|
This feature is currently in beta. For more information about beta services, see the Glossary and our General Terms and Conditions of Sale. |
spec:
minNodes: X
maxNodes: Y
autoscaling: true
This sample contains the following parameters that you need to specify:
-
minNodes: The minimum number of nodes the autoscaler is allowed to maintain. -
maxNodes: The maximum number of nodes the autoscaler can scale up to. -
autoscaling: Whether the node pool should be managed by the autoscaler. Must be set totrueto enable autoscaling.
For more information, see Tutorial: Autoscaling Your Node Pools (Beta).
Related Pages