Hosted control planes is a Technology Preview feature only. Technology Preview features
are not supported with Red Hat production service level agreements (SLAs) and
might not be functionally complete. Red Hat does not recommend using them
in production. These features provide early access to upcoming product
features, enabling customers to test functionality and provide feedback during
the development process.
To set node-level tuning on the nodes in your hosted cluster, you can use the Node Tuning Operator. In hosted control planes, you can configure node tuning by creating config maps that contain
Tuned objects and referencing those config maps in your node pools.
Create a config map that contains a valid tuned manifest, and reference the manifest in a node pool. In the following example, a
Tuned manifest defines a profile that sets
vm.dirty_ratio to 55 on nodes that contain the
tuned-1-node-label node label with any value. Save the following
ConfigMap manifest in a file named
- data: |
summary=Custom OpenShift profile
- priority: 20
If you do not add any labels to an entry in the
spec.recommend section of the Tuned spec, node-pool-based matching is assumed, so the highest priority profile in the
spec.recommend section is applied to nodes in the pool. Although you can achieve more fine-grained node-label-based matching by setting a label value in the Tuned
.spec.recommend.match section, node labels will not persist during an upgrade unless you set the
.spec.management.upgradeType value of the node pool to
ConfigMap object in the management cluster:
$ oc --kubeconfig="$MGMT_KUBECONFIG" create -f tuned-1.yaml
ConfigMap object in the
spec.tuningConfig field of the node pool, either by editing a node pool or creating one. In this example, assume that you have only one
nodepool-1, which contains 2 nodes.
- name: tuned-1
You can reference the same config map in multiple node pools. In hosted control planes, the Node Tuning Operator appends a hash of the node pool name and namespace to the name of the Tuned CRs to distinguish them. Outside of this case, do not create multiple TuneD profiles of the same name in different Tuned CRs for the same hosted cluster.
Now that you have created the
ConfigMap object that contains a
Tuned manifest and referenced it in a
NodePool, the Node Tuning Operator syncs the
Tuned objects into the hosted cluster. You can verify which
Tuned objects are defined and which TuneD profiles are applied to each node.
Tuned objects in the hosted cluster:
$ oc --kubeconfig="$HC_KUBECONFIG" get Tuneds -n openshift-cluster-node-tuning-operator
Profile objects in the hosted cluster:
$ oc --kubeconfig="$HC_KUBECONFIG" get Profiles -n openshift-cluster-node-tuning-operator
NAME TUNED APPLIED DEGRADED AGE
nodepool-1-worker-1 tuned-1-profile True False 7m43s
nodepool-1-worker-2 tuned-1-profile True False 7m14s
If no custom profiles are created, the
openshift-node profile is applied by default.
To confirm that the tuning was applied correctly, start a debug shell on a node and check the sysctl values:
$ oc --kubeconfig="$HC_KUBECONFIG" debug node/nodepool-1-worker-1 -- chroot /host sysctl vm.dirty_ratio