> ## Documentation Index
> Fetch the complete documentation index at: https://prismeai-docs-next.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Kubernetes Resource Management

> Recommended Kubernetes resources configuration and management practices for deploying Prisme.ai.

Proper Kubernetes resource configuration ensures optimal performance, reliability, and cost-efficiency for your Prisme.ai deployment. This guide details best practices and recommended configurations.

***

## Recommended Resource Configuration

The following guidelines help ensure optimal performance for a standard Prisme.ai deployment:

| Component                | CPU Requests | CPU Limits | Memory Requests | Memory Limits |
| ------------------------ | ------------ | ---------- | --------------- | ------------- |
| API Gateway              | 500m         | 1000m      | 512Mi           | 1Gi           |
| Runtime                  | 1000m        | 2000m      | 1Gi             | 2Gi           |
| Console (Studio)         | 250m         | 500m       | 256Mi           | 512Mi         |
| Pages                    | 250m         | 500m       | 256Mi           | 512Mi         |
| Events                   | 500m         | 1000m      | 512Mi           | 1Gi           |
| MongoDB (per node)       | 1000m        | 2000m      | 2Gi             | 4Gi           |
| Elasticsearch (per node) | 1000m        | 2000m      | 4Gi             | 8Gi           |
| Redis (per node)         | 500m         | 1000m      | 1Gi             | 2Gi           |

***

## Best Practices for Resource Management

Implement these best practices to optimize Kubernetes resource usage:

<CardGroup cols={2}>
  <Card title="Resource Requests and Limits" icon="tachometer-alt">
    * Set accurate resource **requests** to inform Kubernetes scheduler for optimal pod placement.
    * Configure resource **limits** to prevent resource starvation.
  </Card>

  <Card title="Autoscaling" icon="arrows-alt-v">
    * Use Horizontal Pod Autoscaler (HPA) based on CPU/Memory utilization.
    * Set minimum and maximum replica counts for critical components like API Gateway and Runtime.
  </Card>

  <Card title="Node Pool Optimization" icon="server">
    * Configure separate node pools for CPU-intensive (Runtime) and memory-intensive (Elasticsearch, MongoDB) workloads.
    * Regularly monitor resource usage and scale node pools accordingly.
  </Card>

  <Card title="Monitoring & Alerts" icon="chart-line">
    * Integrate resource monitoring with Prometheus/Grafana.
    * Configure alerts to notify resource constraints or spikes in utilization.
  </Card>
</CardGroup>

***

## Resource Quotas & Limit Ranges

Apply resource quotas and limit ranges to manage resource consumption within Kubernetes namespaces effectively.

<AccordionGroup>
  <Accordion title="Resource Quota Example">
    Set resource quotas at namespace level to prevent overconsumption:

    ```yaml theme={null}
    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: prisme-quota
      namespace: prisme-ai
    spec:
      hard:
        requests.cpu: "16"
        requests.memory: "32Gi"
        limits.cpu: "32"
        limits.memory: "64Gi"
        pods: "50"
    ```
  </Accordion>

  <Accordion title="LimitRange Example">
    Define limit ranges to enforce default limits for all pods:

    ```yaml theme={null}
    apiVersion: v1
    kind: LimitRange
    metadata:
      name: prisme-limit-range
      namespace: prisme-ai
    spec:
      limits:
        - default:
            cpu: "500m"
            memory: "1Gi"
          defaultRequest:
            cpu: "250m"
            memory: "512Mi"
          type: Container
    ```
  </Accordion>
</AccordionGroup>

***

## Persistent Storage Recommendations

Ensure reliability and durability by properly configuring persistent volumes (PVs):

* Use **Persistent Volume Claims (PVCs)** with dynamically provisioned storage classes.
* Recommended storage classes: SSD-backed storage (e.g., AWS EBS GP3, Azure Premium SSD, Google Persistent Disk SSD).
* Regular backups and snapshotting via cloud provider capabilities or dedicated backup solutions.

***

## Monitoring Kubernetes Resources

Use Prometheus and Grafana to continuously monitor resources:

* CPU and memory utilization dashboards.
* Persistent storage performance metrics.
* Alerting rules for resource exhaustion.

Example Prometheus alert:

```yaml theme={null}
groups:
- name: resource-alerts
  rules:
  - alert: HighCpuUsage
    expr: sum(rate(container_cpu_usage_seconds_total[5m])) by (pod) > 0.9
    for: 5m
    labels:
      severity: warning
    annotations:
      summary: High CPU usage detected
```

***

## Troubleshooting Resource Issues

Common issues and resolutions:

<AccordionGroup>
  <Accordion title="Pod Scheduling Issues">
    * Verify sufficient cluster resources available:

    ```bash theme={null}
    kubectl describe pod <pod-name> -n prisme-ai
    ```

    * Adjust resource requests if necessary.
  </Accordion>

  <Accordion title="High CPU or Memory Usage">
    * Inspect pod-level resource usage:

    ```bash theme={null}
    kubectl top pods -n prisme-ai
    ```

    * Scale horizontally or vertically as needed.
  </Accordion>

  <Accordion title="Persistent Storage Issues">
    * Check PVC and PV status:

    ```bash theme={null}
    kubectl get pvc -n prisme-ai
    kubectl describe pvc <pvc-name> -n prisme-ai
    ```

    * Ensure proper storage class configuration and available storage space.
  </Accordion>
</AccordionGroup>

***

## Next Steps

<CardGroup cols={2}>
  <Card title="High Availability" icon="cloud" href="/self-hosting/kubernetes/high-availability">
    Configure high availability setups
  </Card>

  <Card title="Prometheus & Grafana" icon="chart-column" href="/self-hosting/kubernetes/prometheus-grafana-operator">
    Set up monitoring tools
  </Card>

  <Card title="Products Configuration" icon="store" href="/self-hosting/configuration/products-installation">
    Configure your Prisme.ai AI products
  </Card>

  <Card title="Operations Management" icon="scale-unbalanced" href="/self-hosting/operations/scaling">
    Learn about scaling operations efficiently
  </Card>
</CardGroup>
