<p>I'm wondering about the best practices for architecting my Kubernetes clusters.
For 1 environment (e.g. production), what organisation should I have in my clusters?</p>
<p>Examples: 1 cluster per technology stack, 1 cluster per exposure area (internet, private...), 1 cluster with everything ... ?</p>
<p>Thanks for your help</p>

Xire
<p>The best way would be is to have 1 kubernetes cluster and have the worker nodes in private subnets. You can choose to have the control plane in a public subnet with restricted access like your VPN cidr etc.</p>
<p>If you have multiple teams or application stacks, I'd suggest having different namespaces for each stack as this creates the logical separation of resources.</p>
<p>Also, check the resource limits and quotas that you can apply on kubernetes to prevent over consumption of the resources.</p>
<p>And, as you mentioned multiple application stacks, I am assuming you would have multiple services being exposed for each application or something similar. I would highly recommend using a ingress controller (nginx or anything) to work as single point of entry for each application. You can have more than 1 application listening to 1 load balancer.</p>
<p>Also, have prometheus or ELK monitoring in place as they are great with monitoring k8s components and metrics.</p>
<p>And, I would highly recommend using a tool kubecost and kubebench for enhancing your k8s cluster.</p>
<p>Kubecost is for cost analytics and reporting for k8s components and kubebench would audit your cluster against CIS standards and give you a report on what improvements are required and where.</p>
<p>Please note that the above recommendations are based on best practises and cost efficiency.</p>
