Unable to transition to Ironic Node Resource Classes in Pike
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
Fix Released
|
High
|
John Garbutt | ||
Pike |
Fix Committed
|
High
|
Matt Riedemann |
Bug Description
So the scenario is:
* upgraded to pike
* have ironic with a multiple flavor
* attempting to transition to resource class based scheduling, now pike is installed
In Pike we ask people to:
* Update Ironic Node with a Resource Class
* Update flavors to request the new Resource Class (and not request VCPU, RAM, DISK), using the docs: https:/
Consider this case:
* some old instances are running from before the updates
* some new instances are created after the updates
In placement:
* all inventory is correct, new resource class and legacy resource classes are both present
* old instance allocations: only request
In nova db:
* old instances and new instances correctly request the new resource class in their flavor
* new instances also include the anti-request for VCPU, DISK and RAM
Now this is the flow that shows the problem:
* get list of candidate allocations
* this includes nodes that already have instances on (they only claim part of the inventory, but the new instance is only requesting the bit of the inventory the old instance isn't using)
* boom, scheduling new instances fails after you hit the retry count, unless you got lucky and found a free slot by accident
Possible reason for this:
* Pike no longer updated instance allocations, if we updated the allocations of old instances to request the new custom resource class allocations, we would fix the above issue.
Possible work around:
* in the new flavor, keep requesting VCPU, RAM and CPU resources for pike, fix that up in queens?
tags: | added: ironic placement |
Changed in nova: | |
importance: | Undecided → High |
Changed in nova: | |
assignee: | nobody → John Garbutt (johngarbutt) |
status: | New → In Progress |
description: | updated |
Changed in nova: | |
assignee: | John Garbutt (johngarbutt) → Dan Smith (danms) |
Changed in nova: | |
assignee: | Dan Smith (danms) → John Garbutt (johngarbutt) |
From IRC, my way of describing the problem:
(9:24:05 AM) mriedem: do you mean the custom resource class allocatoin isn't showing up for the instance?
(9:24:37 AM) johnthetubaguy: I mean old instances don't have allocations for the new resource, which breaks the scheduling of new flavors that use the resource class
(9:24:50 AM) mriedem: so instance A had vcpu/ram/disk allocations before the node.resource_class was set, then you set node.resource_class = baremetal and now you expect to see a 'baremetal' allocation for instance A in placement
(9:25:17 AM) johnthetubaguy: that is what I expected, yes
(9:25:24 AM) johnthetubaguy: (clearly incorrectly)
(9:25:31 AM) mriedem: that's probably because the RT isn't reporting allocations anymore once all of your computes are pike
(9:27:48 AM) mriedem: johnthetubaguy: ok so the scheduling issue is a new instance request can try to claim the 'baremetal' resource on node A even though instance A is already using it
(9:27:52 AM) mriedem: which causes a scheduler failure yes?
(9:28:00 AM) johnthetubaguy: mriedem: yes
We made a similar sounding fix in Pike https:/ /review. openstack. org/#/c/ 492964/ but that was for reporting inventory with the new node.resource_ class, not for updating instance allocations for a migrated flavor/instance.