# LoadBalancer per node when deploying with the Kubernetes Operator

**URL:** <https://forum.scylladb.com/t/loadbalancer-per-node-when-deploying-with-the-kubernetes-operator/1985>\
**Category:** ScyllaDB\
**Tags:** operator, kubernetes\
**Created:** [May 9, 2024, 1:02pm UTC](https://forum.scylladb.com/t/loadbalancer-per-node-when-deploying-with-the-kubernetes-operator/1985 "2024-05-09T13:02:51Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Guy](https://sea2.discourse-cdn.com/flex016/user_avatar/forum.scylladb.com/guy/32/9_2.png) [@Guy](https://forum.scylladb.com/u/Guy)\
**Post date:** [May 9, 2024, 1:02pm UTC](https://forum.scylladb.com/t/loadbalancer-per-node-when-deploying-with-the-kubernetes-operator/1985/1 "2024-05-09T13:02:51Z")

</div>

> [@](#):
>
> [**Originally from the User Slack**](https://scylladb-users.slack.com/)
> 
> ![Christopher_Wong](https://us1.discourse-cdn.com/flex016/uploads/scylladb/original/1X/c9a0899a589839c4aceaccca42590c505a04e55d.jpeg) **@Christopher\_Wong:** I’m trying to expose a 3-node scylla cluster created with the scylla-operator.
> 
> When the LoadBalancer service gets created, I see a LoadBalancer per node rather than the `client` service having a load balancer pointed at all 3 nodes. Is this the expected behavior?
> 
> Using these `exposeOptions`
> 
> ```auto
> exposeOptions:
> nodeService:
> type: LoadBalancer
> broadcastOptions:
> clients:
> type: ServiceLoadBalancerIngress
> nodes:
> type: ServiceClusterIP 
> 
> ```
> 
> ![Maciej_Zimnoch](https://us1.discourse-cdn.com/flex016/uploads/scylladb/original/1X/9c48adc7bf80c75b465d5cc584019612d70a1ffe.jpeg) **@Maciej\_Zimnoch:** yes, nodes have their own LB service to allow drivers to connect to particular node. This is required to have node-awareness and shard-awareness, as traffic load balancing happens on the driver side, not server side.
> 
> ![Guilherme_Nogueira](https://us1.discourse-cdn.com/flex016/uploads/scylladb/original/1X/550307743052497a08c9ac9d3e11c78e3164320a.jpeg) **@Guilherme\_Nogueira:** We just rely on the LB service mechanism to allow the external connectivity into the pods. As Maciej mentioned, the driver themselves are responsible to load-balance the request across any nodes in the cluster 🙂
> 
> ![Christopher_Wong](https://us1.discourse-cdn.com/flex016/uploads/scylladb/original/1X/c9a0899a589839c4aceaccca42590c505a04e55d.jpeg) **@Christopher\_Wong:** gotcha - I’m seeing some weird behavior where the nodes just continuously log TLS handshake errors when I set the client type to `ServiceLoadBalancerIngress`. The cluster starts, but no nodes are available to take requests  
> setting clients.type back to CLusterIP resolves the issue but doesn’t allow for an externally exposed load balancer
> 
> ![Greg_Day](https://us1.discourse-cdn.com/flex016/uploads/scylladb/original/1X/26edb11ed7305c74119e052ffa6e60416239f182.jpeg) **@Greg\_Day:** @Christopher\_Wong I don’t know much but you might just need to set the correct annotations (or specify a custom loadBalancerClass) depending on your environment.  
> there are examples in the docs for EKS and GKE [https://operator.docs.scylladb.com/stable/exposing.html#loadbalancer-type](https://operator.docs.scylladb.com/stable/exposing.html#loadbalancer-type) that’s all I know!
> 
> > Exposing ScyllaCluster | ScyllaDB Docs
> 
> ![Maciej_Zimnoch](https://us1.discourse-cdn.com/flex016/uploads/scylladb/original/1X/9c48adc7bf80c75b465d5cc584019612d70a1ffe.jpeg) **@Maciej\_Zimnoch:** LoadBalancer Service without special annotation on cloud providers results in ScyllaCluster being exposed to Internet, where various scanners or LB healthchecks are trying to connect to different ports. These usually are visible in logs. If you want to expose it only within cloud VPC, consider using either PodIP or LB with special annotation. Refer to cloud documentation regarding that.
