<p>I have an EKS cluster with a single node group (3 nodes) that is currently only running Jenkins4.</p>

<p>I want to start utilising this EKS cluster for other things but want to separate out deployments into specific node groups.</p>

<p>For example, I want to create a 'monitoring' node group to which I will deploy prometheus and grafana. I also want another larger node group for application deployments.</p>

<p>I know I can create a second node group in EKS and label it with 'monitoring' so I can use nodeSelector to deploy to the correct node group.</p>

<p>My question is around whether I need to consider networking between the node groups. For prometheus for example to be able to scrape from exporters running on pods on the other node groups. </p>

<p>Is that something which is required with some sort of ingress rule? Or is it not required. If it required, what is the correct way to implement this?</p>

<p>As long as the nodes are in the same cluster and belong to the same master and no custom network policy prevents node groups from reaching each other you should be able to rely on ClusterIPs.</p>

<p>My concern is more related on the reason why you should prefer to use dedicated node groups for separating tasks. Is that because of specific requirements? As long as you have available resources in your cluster I would leverage on the existing nodes and deploy Kubernetes Resources (deployments/services/etc..) in dedicated namespaces which is the kind of separation looks appropriate the most to me in your case. Then, at the time you need more horsepower, you can scale horizontally your cluster even with different hardware, specific labels and NodeAffinity (instead of NodeSelector, for better customisation).</p>

<p>Hope I helped.</p>
