Nodes by default enforce specified CPU limits using the Completely Fair Scheduler (CFS) quota support in the Linux kernel.
-
Obtain the label associated with the static Machine Config Pool CRD for the type of node you want to configure. Perform one of the following steps:
-
View the Machine Config Pool:
$ oc describe machineconfigpool <name>
For example:
$ oc describe machineconfigpool worker apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfigPool metadata: creationTimestamp: 2019-02-08T14:52:39Z generation: 1 labels: custom-kubelet: small-pods (1)
-
If a label has been added it appears under
labels
.
-
-
If the label is not present, add a key/value pair:
$ oc label machineconfigpool worker custom-kubelet=small-pods
-
-
Create a Custom Resource (CR) for your configuration change.
Sample configuration for a disabling CPU limitsapiVersion: machineconfiguration.openshift.io/v1 kind: KubeletConfig metadata: name: disable-cpu-units (1) spec: machineConfigPoolSelector: matchLabels: custom-kubelet: small-pods (2) kubeletConfig: cpu-cfs-quota: (3) - "false"
-
Assign a name to CR.
-
Specify the label to apply the configuration change.
-
Set the
cpu-cfs-quota
parameter tofalse
.
-
If CPU limit enforcement is disabled, it is important to understand the impact that will have on your node:
-
If a container makes a request for CPU, it will continue to be enforced by CFS shares in the Linux kernel.
-
If a container makes no explicit request for CPU, but it does specify a limit, the request will default to the specified limit, and be enforced by CFS shares in the Linux kernel.
-
If a container specifies both a request and a limit for CPU, the request will be enforced by CFS shares in the Linux kernel, and the limit will have no impact on the node.