From f2502ccc79f2af6c406f3fc48374624722a1df22 Mon Sep 17 00:00:00 2001 From: Jim Rollenhagen Date: Wed, 2 May 2018 08:28:23 -0400 Subject: [PATCH] Update install guide to require resource classes This removes some nova config recommendations for property-based scheduling, as they shouldn't be used any longer. It also updates the flavor creation document to only focus on resource classes. Last, update the nova commands in the flavor creation document to be openstackclient commands. Change-Id: Ib4512ad707964a2d06b7a8428b89020b05cff0b2 --- doc/source/install/configure-compute.rst | 39 +---------- doc/source/install/configure-nova-flavors.rst | 69 +++++++------------ doc/source/install/enrollment.rst | 15 +--- 3 files changed, 28 insertions(+), 95 deletions(-) diff --git a/doc/source/install/configure-compute.rst b/doc/source/install/configure-compute.rst index 573a7c5db1..23a617334e 100644 --- a/doc/source/install/configure-compute.rst +++ b/doc/source/install/configure-compute.rst @@ -66,44 +66,7 @@ service's controller nodes and compute nodes. option is to run the following command on any Compute controller node after each node is enrolled:: - nova-manage cell_v2 discover_hosts - -#. If you have not switched to make use of :ref:`scheduling-resource-classes`, - then the following options should be set as well. They must be removed from - the configuration file after switching to resource classes. - - .. code-block:: ini - - [scheduler] - - # Use the ironic scheduler host manager. This host manager will consume - # all CPUs, disk space, and RAM from a host as bare metal hosts, can not - # be subdivided into multiple instances. Scheduling based on resource - # classes does not use CPU/disk/RAM, so the default host manager can be - # used in such cases. - host_manager=ironic_host_manager - - [filter_scheduler] - - # Size of subset of best hosts selected by scheduler. - # New instances will be scheduled on a host chosen randomly from a - # subset of the 999 hosts. The big value is used to avoid race - # conditions, when several instances are scheduled on the same bare - # metal nodes. This is not a problem when resource classes are used. - # You should carefully consider increasing this option from its - # default value of 1 in mixed hypervisor case, as placement - # of virtual instances will become less optimal. - host_subset_size=999 - - # This flag enables a different set of scheduler filters, which is more - # suitable for bare metals. CPU, disk and memory filters are replaced - # with their exact counterparts, to make sure only nodes strictly - # matching the flavor are picked. These filters do not work with - # scheduling based on resource classes only. - # You must not enable this option if you have compute hosts - # with other than 'ironic' drivers as enabling it will make scheduling - # of virtual instances problematic. - use_baremetal_filters=True + nova-manage cell_v2 discover_hosts --by-service #. Consider enabling the following option on controller nodes: diff --git a/doc/source/install/configure-nova-flavors.rst b/doc/source/install/configure-nova-flavors.rst index 2310b46e65..f553a8e2cd 100644 --- a/doc/source/install/configure-nova-flavors.rst +++ b/doc/source/install/configure-nova-flavors.rst @@ -3,11 +3,15 @@ Create flavors for use with the Bare Metal service ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -Scheduling based on properties -============================== - You'll need to create a special bare metal flavor in the Compute service. -The flavor is mapped to the bare metal node through the hardware specifications. +The flavor is mapped to the bare metal node through the node's +``resource_class`` field (available starting with Bare Metal API version 1.21). +A flavor can request *exactly one* instance of a bare metal resource class. + +Note that when creating the flavor, it's useful to add the ``RAM_MB`` and +``CPU`` properties as a convenience to users, although they are not used for +scheduling. The ``DISK_GB`` property is also not used for scheduling, but is +still used to determine the root partition size. #. Change these to match your hardware: @@ -16,38 +20,19 @@ The flavor is mapped to the bare metal node through the hardware specifications. $ RAM_MB=1024 $ CPU=2 $ DISK_GB=100 - $ ARCH={i686|x86_64} #. Create the bare metal flavor by executing the following command: .. code-block:: console - $ nova flavor-create my-baremetal-flavor auto $RAM_MB $DISK_GB $CPU + $ openstack flavor create --ram $RAM_MB --vcpus $CPU --disk $DISK_GB \ + my-baremetal-flavor - .. note:: You can replace ``auto`` with your own flavor id. + .. note:: You can add ``--id `` to specify an ID for the flavor. -#. Set the architecture as extra_specs information of the flavor. This - will be used to match against the properties of bare metal nodes: - - .. code-block:: console - - $ nova flavor-key my-baremetal-flavor set cpu_arch=$ARCH - -.. _scheduling-resource-classes: - -Scheduling based on resource classes -==================================== - -As of the Pike release, a Compute service flavor is able to use the node's -``resource_class`` field (available starting with Bare Metal API version 1.21) -for scheduling, instead of the CPU, RAM, and disk properties defined in -the flavor. A flavor can request *exactly one* instance of a bare metal -resource class. - -Start with creating the flavor in the same way as described in -`Scheduling based on properties`_. The ``CPU``, ``RAM_MB`` and ``DISK_GB`` -values are not going to be used for scheduling, but the ``DISK_GB`` -value will still be used to determine the root partition size. +See the `docs on this command +`_ +for other options that may be specified. After creation, associate each flavor with one custom resource class. The name of a custom resource class that corresponds to a node's resource class (in the @@ -62,20 +47,16 @@ the flavor with this custom resource class via: .. code-block:: console - $ nova flavor-key my-baremetal-flavor set resources:CUSTOM_BAREMETAL_SMALL=1 + $ openstack flavor set --property resources:CUSTOM_BAREMETAL_SMALL=1 my-baremetal-flavor -Another set of flavor properties should be used to disable scheduling +Another set of flavor properties must be used to disable scheduling based on standard properties for a bare metal flavor: .. code-block:: console - $ nova flavor-key my-baremetal-flavor set resources:VCPU=0 - $ nova flavor-key my-baremetal-flavor set resources:MEMORY_MB=0 - $ nova flavor-key my-baremetal-flavor set resources:DISK_GB=0 - -.. warning:: - The last step will be mandatory in the Queens release, as the Compute - service will stop providing standard resources for bare metal nodes. + $ openstack flavor set --property resources:VCPU=0 my-baremetal-flavor + $ openstack flavor set --property resources:MEMORY_MB=0 my-baremetal-flavor + $ openstack flavor set --property resources:DISK_GB=0 my-baremetal-flavor Example ------- @@ -97,10 +78,10 @@ the standard properties: .. code-block:: console - $ nova flavor-key my-baremetal-flavor set resources:CUSTOM_BAREMETAL_WITH_GPU=1 - $ nova flavor-key my-baremetal-flavor set resources:VCPU=0 - $ nova flavor-key my-baremetal-flavor set resources:MEMORY_MB=0 - $ nova flavor-key my-baremetal-flavor set resources:DISK_GB=0 + $ openstack flavor set --property resources:CUSTOM_BAREMETAL_WITH_GPU=1 my-baremetal-flavor + $ openstack flavor set --property resources:VCPU=0 my-baremetal-flavor + $ openstack flavor set --property resources:MEMORY_MB=0 my-baremetal-flavor + $ openstack flavor set --property resources:DISK_GB=0 my-baremetal-flavor Note how ``baremetal.with-GPU`` in the node's ``resource_class`` field becomes ``CUSTOM_BAREMETAL_WITH_GPU`` in the flavor's properties. @@ -145,5 +126,5 @@ Then, update the flavor to require these traits: .. code-block:: console - $ nova flavor-key my-baremetal-flavor set trait:CUSTOM_TRAIT1=required - $ nova flavor-key my-baremetal-flavor set trait:HW_CPU_X86_VMX=required + $ openstack flavor set --property trait:CUSTOM_TRAIT1=required my-baremetal-flavor + $ openstack flavor set --property trait:HW_CPU_X86_VMX=required my-baremetal-flavor diff --git a/doc/source/install/enrollment.rst b/doc/source/install/enrollment.rst index 89eb3150f4..3dfd5bcb06 100644 --- a/doc/source/install/enrollment.rst +++ b/doc/source/install/enrollment.rst @@ -307,10 +307,6 @@ Adding scheduling information To use resource classes for scheduling you need to update your flavors as described in :doc:`configure-nova-flavors`. - .. warning:: - Scheduling based on resource classes will replace scheduling based on - properties in the Queens release. - .. note:: This is not required for standalone deployments, only for those using the Compute service for provisioning bare metal instances. @@ -322,8 +318,7 @@ Adding scheduling information $ openstack baremetal node set $NODE_UUID \ --property cpus=$CPU_COUNT \ --property memory_mb=$RAM_MB \ - --property local_gb=$DISK_GB \ - --property cpu_arch=$ARCH + --property local_gb=$DISK_GB As above, these can also be specified at node creation by passing the **--property** option to ``node create`` multiple times: @@ -336,16 +331,10 @@ Adding scheduling information --driver-info ipmi_address=$ADDRESS \ --property cpus=$CPU_COUNT \ --property memory_mb=$RAM_MB \ - --property local_gb=$DISK_GB \ - --property cpu_arch=$ARCH + --property local_gb=$DISK_GB These values can also be discovered during `Hardware Inspection`_. - .. warning:: - If scheduling based on resource classes is not used, the three properties - ``cpus``, ``memory_mb`` and ``local_gb`` must match ones defined on the - flavor created when :doc:`configure-nova-flavors`. - .. warning:: The value provided for the ``local_gb`` property must match the size of the root device you're going to deploy on. By default