### CI Link

https://gradle-enterprise.elastic.co/s/7dleq35dp5stm

### Repro line

./gradlew ':x-pack:plugin:core:test' --tests "org.elasticsearch.xpack.core.ilm.SetSingleNodeAllocateStepTests.testPerformActionAttrsRequestFails" -Dtests.seed=6B438F3C3DADE5D2 -Dtests.locale=nl -Dtests.timezone=Asia/Chongqin

### Does it reproduce?

Yes

### Applicable branches

8.1, 8.0

### Failure history

Seems to fail rarely, but has failed before. Example: https://gradle-enterprise.elastic.co/s/d33b4fzn7yoh6

### Failure excerpt

```
org.elasticsearch.xpack.core.ilm.SetSingleNodeAllocateStepTests > testPerformActionAttrsRequestFails FAILED
    java.lang.AssertionError: Node roles must not be provided as attributes but saw attributes {ml=K}
        at __randomizedtesting.SeedInfo.seed([C679BACC1DA27FA7:CB16887322D9C088]:0)
        at org.elasticsearch.cluster.node.DiscoveryNode.<init>(DiscoveryNode.java:233)
        at org.elasticsearch.cluster.node.DiscoveryNode.<init>(DiscoveryNode.java:175)
```
x-pack/plugin/core/src/test/java/org/elasticsearch/xpack/core/ilm/SetSingleNodeAllocateStepTests.java
@Override
    protected SetSingleNodeAllocateStep createRandomInstance() {
        return new SetSingleNodeAllocateStep(randomStepKey(), randomStepKey(), client);
    }
    @Override
    protected SetSingleNodeAllocateStep mutateInstance(SetSingleNodeAllocateStep instance) {
        StepKey key = instance.getKey();
        StepKey nextKey = instance.getNextStepKey();
        switch (between(0, 1)) {
            case 0 -> key = new StepKey(key.getPhase(), key.getAction(), key.getName() + randomAlphaOfLength(5));
            case 1 -> nextKey = new StepKey(key.getPhase(), key.getAction(), key.getName() + randomAlphaOfLength(5));
            default -> throw new AssertionError("Illegal randomisation branch");
        }
        return new SetSingleNodeAllocateStep(key, nextKey, instance.getClient());
    }
    @Override
    protected SetSingleNodeAllocateStep copyInstance(SetSingleNodeAllocateStep instance) {
        return new SetSingleNodeAllocateStep(instance.getKey(), instance.getNextStepKey(), client);
    }
    public static void assertSettingsRequestContainsValueFrom(
        UpdateSettingsRequest request,
        String settingsKey,
        Set<String> acceptableValues,
        boolean assertOnlyKeyInSettings,