Resource Quotas
For namespace and virtual cluster based multi tenancy, resource quotas and limits are automatically implemented and enforced. This prevent one tenant’s workloads from affecting the performance or availability of another tenant’s workloads.
Note
Tenants requiring dedicated clusters can be supported as well. These are provisioned into projects where resource quotas can be specified to. The blueprint responsible for lifecycle management of the Kubernetes cluster is configured with limits for resources. For example, "max nodes" etc.
Shown below is an example of resource quotas for GPU in this namespace.
Note
Learn more about Resource Quotas/Limits.
Why is it needed?¶
Resource quotas are essential for managing and controlling the allocation of resources such as CPU, memory, and storage. Here’s why they are necessary:
Prevent Resource Exhaustion¶
- Cluster Stability: In a multi-tenant environment where multiple users or teams share the same Kubernetes cluster, resource quotas ensure that no single namespace or application can consume all available resources, which could lead to resource exhaustion and destabilize the entire cluster.
- Fair Distribution: Quotas help ensure a fair distribution of resources among different teams or applications, preventing situations where a single team could monopolize resources, leaving others with insufficient capacity.
Limit Overprovisioning¶
- Cost Management: By setting resource quotas, administrators can prevent users from overprovisioning resources (e.g., requesting excessive CPU or memory) that might not be fully utilized, leading to unnecessary costs.
- Efficiency: Quotas encourage efficient use of resources, as users must request only the resources they actually need, optimizing the overall utilization of the cluster.
Control Resource Allocation¶
- Budget Enforcement: In environments where different teams have allocated budgets or resource limits, quotas enforce these limits, ensuring that teams do not exceed their allowed resource consumption.
- Prioritization: Quotas can be used to prioritize critical workloads by ensuring they have sufficient resources, while less critical workloads are restricted to a smaller quota.
Improve Performance Isolation¶
- Quality of Service (QoS): By setting resource quotas, you can better manage the Quality of Service for different applications. This ensures that one application’s resource-intensive tasks don’t degrade the performance of other applications running in the same cluster.
- Avoid Resource Contention: Quotas reduce the likelihood of resource contention, where multiple applications compete for the same resources, potentially leading to degraded performance or failures.
Compliance and Governance¶
- Regulatory Compliance: In regulated environments, there may be requirements to limit and monitor resource usage to ensure compliance with industry standards or regulations.
- Auditing and Reporting: Quotas facilitate auditing and reporting by providing a clear record of how resources are allocated and consumed across different namespaces and teams.
Simplify Capacity Planning¶
- Predictable Usage: Quotas provide predictable resource usage patterns, making it easier for administrators to plan for future capacity needs and scale the cluster appropriately.
- Cluster Sizing: By knowing the resource limits for each namespace, administrators can better estimate the size and capacity requirements of the entire cluster.
Support Multi-Tenancy¶
- Tenant Isolation: In multi-tenant environments, where multiple organizations or teams share the same Kubernetes cluster, quotas help ensure that tenants are isolated in terms of resource usage. This prevents one tenant's workloads from affecting the performance or availability of another tenant's workloads.
In summary, resource quotas are critical for ensuring efficient, fair, and predictable resource usage in a multi-tenant environment. They help maintain cluster stability and support overall resource management strategies.