Analyzing Cluster Capacity

Overview

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.

In the above example, the number of estimated pods that can be scheduled onto
the cluster is 52.

Running Cluster Capacity as a Job Inside of a Pod

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.

A required environment variable letting the cluster capacity tool
know that it is running inside a cluster as a pod.
The pod.yaml key of the ConfigMap is the same as the pod specification 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

Check the job logs to find the number of pods that can be scheduled in the
cluster: