How to set up cluster groups¶
Cluster members can be assigned to Cluster groups.
By default, all cluster members belong to the default
group.
To create a cluster group, use the incus cluster group create
command.
For example:
incus cluster group create gpu
To assign a cluster member to one or more groups, use the incus cluster group assign
command.
This command removes the specified cluster member from all the cluster groups it currently is a member of and then adds it to the specified group or groups.
For example, to assign server1
to only the gpu
group, use the following command:
incus cluster group assign server1 gpu
To assign server1
to the gpu
group and also keep it in the default
group, use the following command:
incus cluster group assign server1 default,gpu
To add a cluster member to a specific group without removing it from other groups, use the incus cluster group add
command.
For example, to add server1
to the gpu
group and also keep it in the default
group, use the following command:
incus cluster group add server1 gpu
Configuration options¶
The following configuration options are available for cluster groups:
Key: | instances.vm.cpu.ARCHITECTURE.baseline |
Type: | string |
The CPU base architecture name as can be found through qemu -cpu ?
.
This can be a generic definition like qemu64
or kvm64
, or it can be a specific hardware architecture like EPYC-v2
.
It’s important to ensure that all servers in the group match that baseline.
Key: | instances.vm.cpu.ARCHITECTURE.flags |
Type: | string |
A comma separated list of CPU flags to add on top of CPU baseline or a list of flags to remove from it.
To remove a flag, use -flag
.
Launch an instance on a cluster group member¶
With cluster groups, you can target an instance to run on one of the members of the cluster group, instead of targeting it to run on a specific member.
Note
scheduler.instance
must be set to either all
(the default) or group
to allow instances to be targeted to a cluster group.
See Automatic placement of instances for more information.
To launch an instance on a member of a cluster group, follow the instructions in Launch an instance on a specific cluster member, but use the group name prefixed with @
for the --target
flag.
For example:
incus launch images:ubuntu/22.04 c1 --target=@gpu
Use with restricted projects¶
A project can be configured to only have access to servers that are part of specific cluster groups.
This is done by setting both restricted=true
and restricted.cluster.groups
to a comma separated list of group names.
Note
If the cluster group is renamed, the project restrictions will need to be updated for the new group name.