- Newest
- Most votes
- Most comments
To identify and eliminate hidden cross-zone data transfer charges in dynamic EKS clusters, you should implement a multi-layered approach combining visibility tools, architectural optimizations, and traffic management strategies.
Visibility and Monitoring
For pod-level visibility into network flows, enable Container Network Observability in Amazon EKS, which is powered by the Network Flow Monitor Agent. This provides granular insights into inter-AZ traffic patterns at the pod level. You can access the Observability Dashboard through the Amazon EKS console and use the Cluster view in the Flow table to identify inter-AZ traffic by filtering by Local AZ and Remote AZ, then sorting by data transferred. This gives you precise visibility into which workloads are generating cross-zone traffic.
You can also query Network Flow Monitor data using AWS CLI commands for programmatic analysis and automation of cost findings.
Architectural Patterns to Reduce Cross-AZ Traffic
Several strategies can help minimize inter-AZ communication:
-
Topology-Aware Routing with Traffic Distribution: Implement Kubernetes Traffic Distribution Control, which routes traffic to healthy endpoints within the target topology (same zone, same node). This prioritizes predictability and cost reduction.
-
Pod Topology Spread Constraints: To address your concern about uneven load distribution, use pod topology spread constraints to distribute pods evenly across zones or nodes. This prevents hotspots and supports balanced resource utilization. However, be aware that combining topology spread constraints with Horizontal Pod Autoscaler (HPA) can lead to uneven scaling, so plan your scaling policies accordingly.
-
Zone-Specific Deployments: For scenarios with varying traffic patterns per zone, create separate Deployments per zone. This enables independent scaling per zone, though it adds management overhead.
-
Service Mesh Implementation: Consider using a service mesh like Istio to restrict traffic to availability zones and nodes. You can use Destination Rules and the Kubernetes Service internal traffic policy to control traffic flow and reduce network-related costs.
Load Balancer Optimization
Use IP traffic mode for your load balancers to minimize data transfer costs. This allows the load balancer to proxy traffic directly to the destination pod, eliminating additional network hops and reducing cross-AZ traffic.
VPC and Network Architecture
Implement VPC endpoints for AWS services like Amazon S3 and DynamoDB to keep traffic within the AWS network and reduce internet gateway or NAT device usage. For communication between VPCs, use VPC peering or Transit Gateways for cost-effective connectivity.
Balancing Cost and High Availability
When implementing these optimizations, you have several options depending on your availability requirements:
- Leave inter-AZ traffic as is if high availability across zones is critical
- Move workloads to a single AZ if the application can tolerate zone-level failures
- Use traffic distribution controls to prefer same-zone routing while maintaining cross-zone failover capability
The key is to use Container Network Observability to identify your specific traffic patterns, then apply the appropriate combination of topology-aware routing, pod distribution strategies, and architectural optimizations that align with your availability requirements and cost objectives.
Sources
Track inter-AZ and NAT gateway traffic with EKS Container Network Observability | Containers
Cost Optimization - Networking - Amazon EKS
Optimize data transfers across AWS services | AWS re:Post
Just use Application Load BalanceR (ALB) and keep traffic in the same VPC - Cross Zone is free to/from private IPs in the same VPC to/from ALB.
Relevant content
- AWS OFFICIALUpdated a year ago
- AWS OFFICIALUpdated 3 years ago

I would recommend trying and checking statistics with "Network flow monitor AddOn" on EKS to first identify workload behaviours and isolate the root major reasons for costs as it provides full picture of pod to pod/inter AZ/intra AZ/on prem/endpoints everything, based on what is causing it, then either explore TAH/TAR and implement or just simply use "TrafficDistribution" parameter and generic scalings if you are concerned of reliability of TAH/TAR (Ref.:https://docs.aws.amazon.com/eks/latest/best-practices/cost-opt-networking.html#:~:text=Using%20Traffic%20Distribution). General major arch I've seen ensure to implement AZ spread strategies with high replica count (>9 for 3 AZ) and skew small like 1, taking cue from flow logs, use VPC endpoints and affinity for high inter pod talks. Node scaling with karpenter and istio "DestinationRule" with cilium TAR features for same AZ routing preference and not overloading/misbalance traffic. These might increase availability but for sure will increase management costs, though AZ transfer costs should reduce and overall I think arch will be more frugal and efficient. Ref.: https://docs.aws.amazon.com/eks/latest/userguide/network-observability.html