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:
Resource Requests and Limits
- Set accurate resource requests to inform Kubernetes scheduler for optimal pod placement.
- Configure resource limits to prevent resource starvation.
Autoscaling
- Use Horizontal Pod Autoscaler (HPA) based on CPU/Memory utilization.
- Set minimum and maximum replica counts for critical components like API Gateway and Runtime.
Node Pool Optimization
- Configure separate node pools for CPU-intensive (Runtime) and memory-intensive (Elasticsearch, MongoDB) workloads.
- Regularly monitor resource usage and scale node pools accordingly.
Monitoring & Alerts
- Integrate resource monitoring with Prometheus/Grafana.
- Configure alerts to notify resource constraints or spikes in utilization.
Resource Quotas & Limit Ranges
Apply resource quotas and limit ranges to manage resource consumption within Kubernetes namespaces effectively.
Resource Quota Example
Resource Quota Example
Set resource quotas at namespace level to prevent overconsumption:
LimitRange Example
LimitRange Example
Define limit ranges to enforce default limits for all pods:
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:
Troubleshooting Resource Issues
Common issues and resolutions:
Pod Scheduling Issues
Pod Scheduling Issues
- Verify sufficient cluster resources available:
- Adjust resource requests if necessary.
High CPU or Memory Usage
High CPU or Memory Usage
- Inspect pod-level resource usage:
- Scale horizontally or vertically as needed.
Persistent Storage Issues
Persistent Storage Issues
- Check PVC and PV status:
- Ensure proper storage class configuration and available storage space.