AWS VPC CNI 1.18: Automatic Subnet Discovery

AWS VPC CNI 1.18: Automatic Subnet Discovery

Introduction

On April 15, 2024, AWS released VPC CNI Plugin version 1.18, introducing automatic subnet discovery—a significant simplification for EKS network configuration. This release enables VPC CNI to automatically discover and use subnets within defined ranges, reducing manual configuration and making it easier to scale clusters across multiple availability zones.

Subnet management in EKS has traditionally required manual configuration: you specify which subnets to use, monitor IP availability, and manually add subnets as clusters grow. VPC CNI 1.18 automates this process, making subnet management more dynamic and less error-prone.


Key Features

  1. Automatic Subnet Discovery: Automatically discovers and uses subnets within defined ranges.
  2. Dynamic IP Allocation: Allocates IP addresses dynamically across discovered subnets.
  3. Simplified Configuration: Reduces manual subnet configuration and management.
  4. Multi-AZ Support: Better support for multi-availability zone deployments.

Automatic Subnet Discovery

Enable automatic subnet discovery:

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-vpc-cni
  namespace: kube-system
data:
  ENABLE_PREFIX_DELEGATION: "true"
  ENABLE_SUBNET_DISCOVERY: "true"
  SUBNET_DISCOVERY_TAG_KEY: "kubernetes.io/cluster/CLUSTER_NAME"
  SUBNET_DISCOVERY_TAG_VALUE: "shared"

How It Works:

  • Tag-Based Discovery: Discovers subnets based on Kubernetes cluster tags.
  • Automatic Selection: Automatically selects subnets for pod IP allocation.
  • Dynamic Updates: Updates subnet selection as subnets are added or removed.

Subnet Tagging

Tag subnets for automatic discovery:

aws ec2 create-tags \
  --resources subnet-12345678 \
  --tags Key=kubernetes.io/cluster/my-cluster,Value=shared

Tag Structure:

  • Key: kubernetes.io/cluster/CLUSTER_NAME
  • Value: shared or owned

Getting Started

VPC CNI 1.18 is available for EKS clusters. To upgrade:

kubectl apply -f https://raw.githubusercontent.com/aws/amazon-vpc-cni-k8s/release-1.18/config/master/aws-k8s-cni.yaml

Enable automatic subnet discovery:

apiVersion: v1
kind: ConfigMap
metadata:
  name: aws-vpc-cni
  namespace: kube-system
data:
  ENABLE_SUBNET_DISCOVERY: "true"
  SUBNET_DISCOVERY_TAG_KEY: "kubernetes.io/cluster/my-cluster"
  SUBNET_DISCOVERY_TAG_VALUE: "shared"

Benefits

  • Simplified Operations: Less manual subnet configuration and management.
  • Dynamic Scaling: Automatically adapts to subnet changes without manual intervention.
  • Multi-AZ Support: Better support for multi-availability zone deployments.
  • Reduced Errors: Fewer configuration errors from manual subnet management.

Use Cases

  • Multi-AZ Clusters: Automatically discover and use subnets across multiple availability zones.
  • Dynamic Environments: Environments where subnets are frequently added or removed.
  • Large Clusters: Clusters that span multiple subnets benefit from automatic discovery.
  • Simplified Operations: Teams wanting to reduce manual subnet configuration.

Comparison: Manual vs Automatic Subnet Management

AspectManual ConfigurationAutomatic Discovery (1.18)
ConfigurationManual subnet specificationTag-based automatic discovery
UpdatesManual updates requiredAutomatic updates
ComplexityHigherLower
Error-ProneMore errorsFewer errors
ScalabilityLimitedBetter

Operational Considerations

  • Subnet Tagging: Ensure subnets are properly tagged for discovery.
  • Tag Management: Maintain consistent tagging across subnets.
  • IP Planning: Still need to plan IP address allocation across discovered subnets.
  • Monitoring: Monitor subnet discovery and IP allocation across subnets.

Common Patterns

  • Multi-AZ Deployment: Use automatic discovery for subnets across multiple AZs.
  • Tag-Based Organization: Organize subnets using tags for automatic discovery.
  • Dynamic Scaling: Leverage automatic discovery for dynamically scaling clusters.
  • Simplified Management: Reduce operational overhead with automatic subnet management.

Limitations

  • Tag Requirements: Requires proper subnet tagging for discovery to work.
  • IP Planning: Still need to plan IP address allocation across subnets.
  • Regional Constraints: Works only in AWS regions with EKS support.
  • Tag Management: Requires consistent tag management across subnets.

Looking Ahead

VPC CNI 1.18 continues the evolution toward:

  • Enhanced Automation: More automated network management features.
  • Better Multi-AZ Support: Improved support for multi-availability zone deployments.
  • Advanced Features: Additional networking features and integrations.
  • Performance Improvements: Continued optimization of subnet discovery and IP allocation.

Summary

AspectDetails
Release DateApril 15, 2024
Key InnovationsAutomatic subnet discovery, dynamic IP allocation, simplified configuration
SignificanceSimplified subnet management and improved support for multi-AZ and dynamic environments

AWS VPC CNI 1.18 introduced automatic subnet discovery, significantly simplifying EKS network configuration. By automatically discovering and using subnets based on tags, it reduced manual configuration overhead and made it easier to scale clusters across multiple availability zones—a major step forward in operational simplicity.