Skip to main content

Networking Details

This section provides a detailed overview of the networking architecture for managed Kubernetes clusters provisioned by the Astro Platform.

AWS EKS Networking

The EKS cluster is designed to provide a secure and scalable environment for deploying and running applications. It follows a well-defined architecture to ensure high availability, security, and performance.

EKS Cluster Networking Architecture

The architecture diagram above illustrates the networking setup for AWS EKS clusters provisioned by the Astro Platform. The EKS cluster is deployed in a VPC with a private subnet and a public subnet. The private subnet is used to deploy the worker nodes and the public subnet is used to deploy the load balancers and other public-facing services like NAT gateway.

EKS Subnet Model

EKS uses per-zone subnets - each Availability Zone has its own subnet pair (public + private).

Google GKE Networking

GKE uses VPC-native networking with regional subnets and secondary IP ranges for pods and services.

For more details, see the Google Cloud VPC-native clusters documentation.

GKE Subnet Model

GKE uses regional subnets - a single subnet spans all zones in a region:

┌─────────────────────────────────────────────────────────────────────┐
│ GCP Project │
│ ┌───────────────────────────────────────────────────────────────┐ │
│ │ VPC Network │ │
│ │ ┌─────────────────────────────────────────────────────────┐ │ │
│ │ │ Regional Subnet (spans ALL zones) │ │ │
│ │ │ │ │ │
│ │ │ Primary Range: 10.0.0.0/20 ──────────────► Nodes │ │ │
│ │ │ Secondary Range "pods": 10.4.0.0/14 ─────► Pod IPs │ │ │
│ │ │ Secondary Range "services": 10.0.16.0/20 ► Service IPs │ │ │
│ │ │ │ │ │
│ │ │ ┌─────────────┬─────────────┬─────────────┐ │ │ │
│ │ │ │ zone-a │ zone-b │ zone-c │ │ │ │
│ │ │ │ [nodes] │ [nodes] │ [nodes] │ │ │ │
│ │ │ └─────────────┴─────────────┴─────────────┘ │ │ │
│ │ └─────────────────────────────────────────────────────────┘ │ │
│ └───────────────────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────────────────┘

Key Differences: EKS vs GKE vs AKS Networking

FeatureAWS EKSGoogle GKEAzure AKS
Subnet ScopePer-zoneRegional (spans all zones)Regional, single subnet (spans all zones)
Pod IPsFrom subnet CIDR or custom CIDRSecondary IP ranges on subnetOverlay CIDR (default) or VNet IPs (Azure CNI)
Service IPsCluster internalSecondary IP ranges on subnetCluster internal
BYO Network Configsubnets map with zone keyssubnet with name and range namessingle vnetSubnetId (full subnet resource ID)
Default PluginVPC CNIVPC-nativeAzure CNI Overlay

GKE VPC-Native Networking

GKE clusters use VPC-native networking, which means:

  1. Alias IP Ranges: Pods get IP addresses from secondary ranges configured on the subnet
  2. Direct VPC Routing: Pod-to-pod traffic is routed natively through the VPC
  3. Better Integration: Pods can directly communicate with other GCP services using their VPC IP addresses
  4. Network Policies: Calico-based policies for micro-segmentation

Azure AKS Networking

AKS selects its networking model with the networkPlugin field. The platform defaults to Azure CNI in overlay mode, the recommended production configuration. When networkPlugin is azure and no mode is set, the platform applies overlay mode automatically.

AKS Network Plugins

PluginnetworkPluginPod IP sourceWhen to use
Azure CNI Overlay (default)azure (overlay mode)Separate overlay CIDR, not the VNetRecommended. Conserves VNet IP space while keeping native VNet integration for nodes
Azure CNIazureEach pod gets a routable VNet IPWhen pods must be directly reachable from the VNet. Requires a larger subnet
KubenetkubenetSeparate pod network behind NATMinimal VNet IP usage. Pods are not directly addressable from the VNet

AKS Subnet Model

Like GKE, AKS uses a single regional subnet that spans every availability zone in the region. Azure VNets and subnets are regional resources, not per-zone like EKS, so all node pools draw their node IPs from that one subnet. Two things distinguish AKS from GKE:

  1. Pod IPs (overlay default): pods get IPs from a separate, Azure-managed overlay CIDR instead of named secondary ranges on the subnet, so the subnet only needs room for nodes and a modest subnet is sufficient. With non-overlay Azure CNI, each pod instead consumes a routable IP from the subnet, so the subnet must be sized for nodes plus pods.
  2. Reference by resource ID: for BYOVNet you point the cluster at the subnet with its full Azure resource ID, rather than naming a subnet plus secondary ranges.
┌───────────────────────────────────────────────────────────────────────┐
│ Azure VNet (regional) - e.g. 10.224.0.0/16 │
│ ┌─────────────────────────────────────────────────────────────────┐ │
│ │ Single subnet - regional, spans ALL availability zones │ │
│ │ Subnet CIDR 10.224.0.0/24 ───────────► Node IPs │ │
│ │ │ │
│ │ ┌──────────┬──────────┬──────────┐ │ │
│ │ │ zone-1 │ zone-2 │ zone-3 │ │ │
│ │ │ [nodes] │ [nodes] │ [nodes] │ │ │
│ │ └──────────┴──────────┴──────────┘ │ │
│ └─────────────────────────────────────────────────────────────────┘ │
│ │
│ Overlay Pod CIDR 10.244.0.0/16 (Azure-managed, NOT in VNet) │
│ └──────────────────────────► Pod IPs │
│ Service CIDR 10.0.0.0/16 (cluster-internal) │
└───────────────────────────────────────────────────────────────────────┘

The CIDRs above are Azure's defaults for overlay mode; the platform does not override them unless you bring your own VNet.

Bring Your Own VNet (BYOVNet)

For BYOVNet you provide one value, the full Azure subnet resource ID:

/subscriptions/{subscription-id}/resourceGroups/{resource-group}/providers/Microsoft.Network/virtualNetworks/{vnet}/subnets/{subnet}

This single identifier already encodes the subscription, resource group, VNet, and subnet, so there is nothing else to provide. The subnet's resource group may differ from the cluster's resource group. See the AKS BYOVNet guide for the az commands to create a VNet and read its subnet ID.

Restricting API Server Access

Use authorizedIPRanges to restrict access to the Kubernetes API server to a set of CIDR blocks (up to 200 entries). Requests originating outside these ranges are rejected.

CIDR Reference

RFC 1918 Private Address Ranges

EKS, GKE, and AKS support RFC 1918 private address ranges for VPC/Network configuration:

RangeCIDR BlockAvailable IPsRecommended Use
Class A10.0.0.0/816,777,216Large enterprise clusters
Class B172.16.0.0/121,048,576Medium clusters (172.16.x - 172.31.x)
Class C192.168.0.0/1665,536Small clusters, development
ResourceEKSGKEAKSNotes
VPC/Network/16/16/16 (VNet)10.0.0.0/16 or 172.16.0.0/16
Subnet (nodes)/19 - /24 per zone/20 regional/24 (overlay) or largerAKS uses one regional subnet
PodsVPC CNI (from subnet)/14 secondary rangeOverlay CIDR, Azure-managed (10.244.0.0/16 default)AKS overlay pods are not in the VNet; non-overlay Azure CNI draws pod IPs from the subnet
Services/16 (cluster internal)/20 secondary rangeAzure-managed (10.0.0.0/16 default)Cluster internal
Control PlaneAWS managed/28 (exactly)Azure managedGKE masterIPv4CidrBlock

Provider-Specific CIDR Requirements

AWS EKS:

  • VPC CIDR: /16 to /28 prefix length
  • Subnet CIDR: Must be within VPC CIDR
  • No secondary ranges required (VPC CNI manages pod IPs)

Google GKE:

  • Network CIDR: /8 to /29 prefix length, RFC 1918 only
  • Subnet primary range: For node IPs
  • Subnet secondary ranges: Required for pods and services (must be named)
  • Control plane: Exactly /28, RFC 1918 only

Azure AKS:

  • BYOVNet subnet: Referenced by full resource ID (vnetSubnetId); no separate CIDR fields required
  • Azure CNI Overlay (default): Pod IPs come from a separate overlay CIDR, so a modest node subnet is sufficient
  • Azure CNI (non-overlay): Subnet must be large enough for one VNet IP per pod plus nodes
  • Subnet sizing: Size for nodes (and pods, when not using overlay) plus headroom for upgrades
CIDR Best Practices
  • Plan ahead: Allocate sufficient IP space for future growth
  • Avoid overlaps: Ensure CIDRs don't conflict with on-premises networks or other VPCs
  • Document: Keep a record of CIDR allocations across your infrastructure
  • Use /16 for production: Provides 65,536 IPs with room for expansion