View the status of node instant elastic
When a node pool runs out of a specific instance type in a zone, scaling requests fail silently. The node instant scaling add-on monitors inventory levels across all configured zones and writes real-time status to a ConfigMap in the kube-system namespace. Check this ConfigMap to catch low-stock conditions before they block scale-out.
Two signals are available:
| Signal | Name | When to use |
|---|---|---|
| ConfigMap | {node pool id}-inventory-status |
Ongoing monitoring and proactive instance type adjustments — continuously updated. |
| Event | InstanceInventoryStatusChanged |
Reacting to inventory shifts as they happen — fired each time supply status changes for an instance type in a zone. |
Prerequisites
Before you begin, make sure you have:
-
A node pool with auto scaling enabled and node instant scaling turned on. See Enable Node Instant Elasticity.
-
Node instant scaling add-on version 0.2.1 or later. To upgrade, see Manage add-ons.
How it works
After you enable instant scaling for a node pool, the node instant scaling add-on:
-
Retrieves all instance types configured for the node pool.
-
Polls real-time inventory status for each instance type in each configured zone.
-
Writes the results to a ConfigMap named
{node pool id}-inventory-statusin thekube-systemnamespace.
When supply status changes for any instance type in a configured zone, the add-on also emits an InstanceInventoryStatusChanged event on the ACKNodePool object, in the format:
{InstanceType}/{Zone} inventory status changed from {OldInventoryStatus} to {NewInventoryStatus}
Check inventory health status
-
Log on to the ACK console. In the left navigation pane, click Clusters.
-
On the Clusters page, click the name of the cluster.
-
In the left-side navigation pane, choose Configurations > ConfigMaps.
-
In the Namespace drop-down list, select kube-system. Find the ConfigMap named
{node pool id}-inventory-status. -
View the
data.statusfield for real-time inventory health.
Understand the ConfigMap fields
The data.status field contains a JSON object. The examples below show a healthy and a degraded inventory state side by side so you can identify anomalies quickly.
Example: healthy inventory
{
"SupplySeqs": [
{
"InstanceType": "ecs.g6.8xlarge",
"Zone": "cn-hongkong-c",
"State": "WithStock"
},
{
"InstanceType": "ecs.g6.8xlarge",
"Zone": "cn-hongkong-b",
"State": "WithStock"
},
{
"InstanceType": "ecs.g5ne.4xlarge",
"Zone": "cn-hongkong-c",
"State": "WithStock"
},
{
"InstanceType": "ecs.g5ne.4xlarge",
"Zone": "cn-hongkong-b",
"State": "WithStock"
}
],
"Conditions": [
{
"Type": "InventoryNoStock",
"Status": "False",
"Reason": "NoInterruption",
"Message": "all instanceTypes are with stock",
"LastTransitionTime": "2024-08-01T08:20:49Z"
}
],
"Phase": "Healthy",
"LastTransitionTime": "2024-08-01T08:20:49Z"
}
Example: degraded inventory
{
"SupplySeqs": [
{
"InstanceType": "ecs.g6.8xlarge",
"Zone": "cn-hongkong-c",
"State": "WithoutStock"
},
{
"InstanceType": "ecs.g6.8xlarge",
"Zone": "cn-hongkong-b",
"State": "WithStock"
},
{
"InstanceType": "ecs.g5ne.4xlarge",
"Zone": "cn-hongkong-c",
"State": "ClosedWithoutStock"
},
{
"InstanceType": "ecs.g5ne.4xlarge",
"Zone": "cn-hongkong-b",
"State": "WithStock"
}
],
"Conditions": [
{
"Type": "InventoryNoStock",
"Status": "True",
"Reason": "PartialInterruption",
"Message": "some instanceTypes are out of stock",
"LastTransitionTime": "2024-08-01T09:15:00Z"
}
],
"Phase": "UnHealthy",
"LastTransitionTime": "2024-08-01T09:15:00Z"
}
SupplySeqs fields
| Field | Description |
|---|---|
InstanceType |
The name of the instance type. |
Zone |
The zone where the instance type resides. |
State |
Inventory status of the instance type in the zone. See the table below for valid values. |
`State` values
| Value | Meaning | Action |
|---|---|---|
WithStock |
Resources are in sufficient stock. | No action needed. |
ClosedWithStock |
Resources are low on stock and may not be available for purchase. | We recommend that you use instance types with WithStock state. |
WithoutStock |
Resources are out of stock and will be replenished. | We recommend that you use instance types with WithStock state. |
ClosedWithoutStock |
Resources are out of stock and will not be replenished. | We recommend that you use instance types with WithStock state. |
Conditions fields
| Field | Description |
|---|---|
Type |
Only one type is specified in this field (InventoryNoStock), which means the instance type configured for the node pool is currently out of stock. |
Status |
Whether any instance type is out of stock. True means out of stock; False means inventory is normal. |
Reason |
Overall inventory health reason. NoInterruption means all instance types are healthy. PartialInterruption means some instance types are unhealthy. AllInterruption means all instance types are unhealthy. |
Message |
Detailed description of the current condition. |
LastTransitionTime |
Timestamp of the most recent change to the Conditions field. |
Top-level fields
| Field | Description |
|---|---|
Phase |
Overall inventory health. Healthy or UnHealthy. |
LastTransitionTime |
Timestamp of the most recent change to the data.status field. |
What's next
View pod and node details and scaling activity history on the node scaling dashboard. See Node scaling dashboard.