Kubernetes Best Practices for Production
Running Kubernetes in production requires careful attention to security, resource management, monitoring, and operational excellence. This guide covers essential best practices to ensure your cluster runs smoothly and securely.
Resource Management
Set Resource Requests and Limits
Always specify resource requests and limits for your containers:
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
Why it matters:
- Prevents resource contention
- Enables better scheduling decisions
- Protects against resource exhaustion
Use Resource Quotas
Implement resource quotas at the namespace level to prevent any single application from consuming all cluster resources:
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-quota
spec:
hard:
requests.cpu: "4"
requests.memory: 8Gi
limits.cpu: "8"
limits.memory: 16Gi
Security Best Practices
Use Non-Root Users
Run containers as non-root users whenever possible:
securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 2000
Enable RBAC
Implement Role-Based Access Control (RBAC) to limit who can perform what actions:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "list"]
Scan Container Images
Regularly scan your container images for vulnerabilities:
trivy image myapp:latest
Monitoring and Observability
Implement Health Checks
Use liveness and readiness probes to ensure your applications are healthy:
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /ready
port: 8080
initialDelaySeconds: 5
periodSeconds: 5
Set Up Monitoring
Deploy monitoring tools like Prometheus and Grafana to track cluster and application metrics. For more details, see our guide on Monitor Pods & Resources.
Configure Alerting
Set up intelligent alerts for critical issues. Learn more in our Smart Alerting guide.
Network Policies
Implement network policies to control traffic between pods:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny-all
spec:
podSelector: {}
policyTypes:
- Ingress
- Egress
Backup and Disaster Recovery
Regular Backups
- Backup etcd regularly (control plane data)
- Use Velero for application-level backups
- Test restore procedures regularly
Version Control
Store all Kubernetes manifests in version control and use GitOps practices for deployment.
Cost Optimization
Optimize your cluster costs by:
- Right-sizing your resources
- Using spot instances for non-critical workloads
- Implementing auto-scaling
- Regularly reviewing unused resources
See our Cost Optimization guide for detailed strategies.
Conclusion
Following these best practices will help you run Kubernetes safely and efficiently in production. Start with resource management and security, then gradually implement monitoring and cost optimization strategies.
For more operational guidance, check out our Day-2 Operations guides.