This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.6.2. Estimating the number of pods your OpenShift Container Platform nodes can hold
As a cluster administrator, you can use the cluster capacity tool to view the number of pods that can be scheduled to increase the current resources before they become exhausted, and to ensure any future pods can be scheduled. This capacity comes from an individual node host in a cluster, and includes CPU, memory, disk space, and others.
The cluster capacity tool simulates a sequence of scheduling decisions to determine how many instances of an input pod can be scheduled on the cluster before it is exhausted of resources to provide a more accurate estimation.
The remaining allocatable capacity is a rough estimation, because it does not count all of the resources being distributed among nodes. It analyzes only the remaining resources and estimates the available capacity that is still consumable in terms of a number of instances of a pod with given requirements that can be scheduled in a cluster.
Also, pods might only have scheduling support on particular sets of nodes based on its selection and affinity criteria. As a result, the estimation of which remaining pods a cluster can schedule can be difficult.
You can run the cluster capacity analysis tool as a stand-alone utility from the command line, or as a job in a pod inside an OpenShift Container Platform cluster. Running it as job inside of a pod enables you to run it multiple times without intervention.
You can run the OpenShift Container Platform cluster capacity tool from the command line to estimate the number of pods that can be scheduled onto your cluster.
Prerequisites
- Download and install the cluster-capacity tool.
Create a sample
Podspec file, which the tool uses for estimating resource usage. Thepodspecspecifies its resource requirements aslimitsorrequests. The cluster capacity tool takes the pod’s resource requirements into account for its estimation analysis.An example of the
Podspec input is:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
Procedure
To use the tool on the command line:
Run the following command:
./cluster-capacity --kubeconfig <path-to-kubeconfig> \ --podspec <path-to-pod-spec>$ ./cluster-capacity --kubeconfig <path-to-kubeconfig> \1 --podspec <path-to-pod-spec>2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow You can also add the
--verboseoption to output a detailed description of how many pods can be scheduled on each node in the cluster:./cluster-capacity --kubeconfig <path-to-kubeconfig> \ --podspec <path-to-pod-spec> --verbose$ ./cluster-capacity --kubeconfig <path-to-kubeconfig> \ --podspec <path-to-pod-spec> --verboseCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow In the above example, the number of estimated pods that can be scheduled onto the cluster is 52.
Running the cluster capacity tool as a job inside of a pod has the advantage of being able to be run multiple times without needing user intervention. Running the cluster capacity tool as a job involves using a ConfigMap object.
Prerequisites
Download and install the cluster capacity tool.
Procedure
To run the cluster capacity tool:
Create the cluster role:
cat << EOF| oc create -f -
$ cat << EOF| oc create -f -Copy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Create the service account:
oc create sa cluster-capacity-sa
$ oc create sa cluster-capacity-saCopy to Clipboard Copied! Toggle word wrap Toggle overflow Add the role to the service account:
oc adm policy add-cluster-role-to-user cluster-capacity-role \ system:serviceaccount:default:cluster-capacity-sa$ oc adm policy add-cluster-role-to-user cluster-capacity-role \ system:serviceaccount:default:cluster-capacity-saCopy to Clipboard Copied! Toggle word wrap Toggle overflow Define and create the
Podspec:Copy to Clipboard Copied! Toggle word wrap Toggle overflow The cluster capacity analysis is mounted in a volume using a
ConfigMapobject namedcluster-capacity-configmapto mount input pod spec filepod.yamlinto a volumetest-volumeat the path/test-pod.If you haven’t created a
ConfigMapobject, create one before creating the job:oc create configmap cluster-capacity-configmap \ --from-file=pod.yaml=pod.yaml$ oc create configmap cluster-capacity-configmap \ --from-file=pod.yaml=pod.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Create the job using the below example of a job specification file:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- A required environment variable letting the cluster capacity tool know that it is running inside a cluster as a pod.
Thepod.yamlkey of theConfigMapobject is the same as thePodspec file name, though it is not required. By doing this, the input pod spec file can be accessed inside the pod as/test-pod/pod.yaml.
Run the cluster capacity image as a job in a pod:
oc create -f cluster-capacity-job.yaml
$ oc create -f cluster-capacity-job.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow Check the job logs to find the number of pods that can be scheduled in the cluster:
oc logs jobs/cluster-capacity-job
$ oc logs jobs/cluster-capacity-jobCopy to Clipboard Copied! Toggle word wrap Toggle overflow Example output
Copy to Clipboard Copied! Toggle word wrap Toggle overflow