# IaaS Capacity and Node Provisioning

The Capacity Pool is the foundational resource layer from which all OpenShift cluster resources are drawn. Understanding how capacity flows from physical infrastructure to schedulable cluster nodes is essential for planning and operating workloads on Kvant.


# The Capacity Pool

The capacity pool consists of aggregated compute nodes (VMs or bare-metal servers), shared storage backends, and network fabric. Resources within the pool are expressed in three dimensions:

Dimension Unit
Compute vCPU cores
Memory GiB of RAM
Storage GiB

The pool is managed by the underlying infrastructure provider, which on Kvant infrastructure is a private cloud environment. OpenShift's Machine API and cluster autoscaler can dynamically expand or contract the pool based on workload demand. Capacity is carved into worker nodes that join the OpenShift cluster, making resources schedulable by the Kubernetes control plane.

Capacity Pool
┌──────────────────────────────────────────────┐
│  Total vCPUs   │  Total RAM (GiB)  │  Storage │
└────────┬───────┴─────────┬─────────┴────┬─────┘
         │                 │              │
    ┌────▼────┐       ┌────▼────┐   ┌────▼────┐
    │ Node 1  │       │ Node 2  │   │ Node N  │
    └─────────┘       └─────────┘   └─────────┘
         OpenShift Cluster (Schedulable Resources)

# Provisioning Flow

Provisioning follows a five-step top-down sequence from raw infrastructure to running workloads.

Step 1 — Capacity Pool Physical or virtual machines contribute CPU, RAM, and storage to the shared capacity pool.

Step 2 — Node Registration Worker nodes join the OpenShift cluster and advertise their allocatable resources to the Kubernetes scheduler.

Step 3 — Namespace Quota Assignment Platform administrators define ResourceQuota objects per namespace, reserving a governed slice of cluster capacity for each tenant.

Step 4 — Pod Scheduling When a workload is deployed, the Kubernetes scheduler places pods on nodes that have sufficient available resources, while respecting namespace quotas.

Step 5 — Resource Enforcement The kubelet agent on each node enforces CPU and memory limits at runtime. Persistent storage is provisioned separately via PersistentVolumeClaims (PVCs).


# Dynamic Scaling

OpenShift's cluster autoscaler monitors pending pod demand and triggers Machine API calls to provision additional nodes when the existing pool cannot satisfy scheduling requests. Nodes are also deprovisioned automatically when they are no longer needed, helping to keep infrastructure costs aligned with actual usage.


# Related Pages