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 |
|
Ongoing monitoring and proactive instance type adjustments — continuously updated. |
|
Event |
|
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 |
|
|
The name of the instance type. |
|
|
The zone where the instance type resides. |
|
|
Inventory status of the instance type in the zone. See the table below for valid values. |
`State` values
|
Value |
Meaning |
Action |
|
|
Resources are in sufficient stock. |
No action needed. |
|
|
Resources are low on stock and may not be available for purchase. |
We recommend that you use instance types with |
|
|
Resources are out of stock and will be replenished. |
We recommend that you use instance types with |
|
|
Resources are out of stock and will not be replenished. |
We recommend that you use instance types with |
Conditions fields
|
Field |
Description |
|
|
Only one type is specified in this field ( |
|
|
Whether any instance type is out of stock. |
|
|
Overall inventory health reason. |
|
|
Detailed description of the current condition. |
|
|
Timestamp of the most recent change to the |
Top-level fields
|
Field |
Description |
|
|
Overall inventory health. |
|
|
Timestamp of the most recent change to the |
What's next
View pod and node details and scaling activity history on the node scaling dashboard. See Node scaling dashboard.