Source
This page is generated from skills/eks-operation-review/references/networking.md. Edit the source, not this page.
Vendored skill
This skill is sourced from eks-operation-review, also maintained by the APEX team.
Networking
Purpose
Assess VPC CNI configuration, IP capacity, DNS health, and network segmentation.
Checks to Execute
6.1 — VPC and Subnet IP Capacity
What to check:
- Subnets used by the cluster and available IP count
- VPC CNI configuration: prefix delegation, custom networking, WARM_IP_TARGET
- Current pod count vs IP capacity
- VPC CNI add-on version
How to check:
- Describe cluster → get subnet IDs from
resourcesVpcConfig.subnetIds - Get VPC config for the cluster (available IPs per subnet)
- List pods (Running) → count total
- List nodes → count total
- Describe addon
vpc-cni→ check version and configuration - Check DaemonSet
aws-nodein kube-system → inspect env vars forENABLE_PREFIX_DELEGATION,AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG - List ENIConfig resources (custom networking indicator)
Rating:
- 🟢 GREEN: >30% IP headroom, prefix delegation or custom networking enabled
- 🟡 AMBER: Adequate IPs now but no prefix delegation and cluster is growing
- 🔴 RED: <15% IPs available, or past IP exhaustion incidents
- ⬜ UNKNOWN: Cannot determine subnet sharing with other workloads
Key talking point: Prefix delegation assigns a /28 (16 IPs) per ENI slot instead of 1 IP — dramatically increases pod density.
6.2 — CoreDNS Health and Scaling
What to check:
- CoreDNS deployment: replica count, resource requests, pod placement
- Node count (to assess CoreDNS ratio — ~1 replica per 8 nodes, minimum 2)
- NodeLocal DNSCache DaemonSet
- CoreDNS HPA
- CoreDNS topology spread constraints
How to check:
- Read Deployment
corednsin kube-system → replicas, resources, topologySpreadConstraints - List pods with label
k8s-app=kube-dns→ check node placement - Count nodes
- List DaemonSets → check for
node-local-dnsornodelocaldns(recommended for clusters with 50+ nodes) - List HPAs in kube-system with label
k8s-app=kube-dns(if HPA present, CoreDNS can auto-scale so fewer static replicas is acceptable)
Rating:
- 🟢 GREEN: CoreDNS scaled to cluster size (~1 replica per 8 nodes, min 2), spread across AZs, NodeLocal DNSCache on clusters with 50+ nodes
- 🟡 AMBER: Adequate replicas but no topology spread, or no NodeLocal DNSCache on 50+ node clusters, or no HPA
- 🔴 RED: CoreDNS under-provisioned (2 replicas for 50+ nodes with no HPA), or past DNS incidents
- ⬜ UNKNOWN: Cannot determine if DNS issues have occurred historically
6.3 — Network Policies & Segmentation
What to check:
- VPC CNI Network Policy Controller enabled (
ENABLE_NETWORK_POLICYenv var on aws-node) - Calico pods (alternative enforcement engine)
- NetworkPolicy resources across namespaces
- Default-deny policies (podSelector: {})
- Namespaces without any NetworkPolicy
How to check:
- Read DaemonSet
aws-nodein kube-system → check env varENABLE_NETWORK_POLICY - List pods with label
k8s-app=calico-node - List NetworkPolicies across all namespaces
- Inspect NetworkPolicies for default-deny (empty podSelector)
- Compare namespaces with policies vs namespaces without
Rating:
- 🟢 GREEN: Enforcement enabled (VPC CNI controller or Calico), default-deny in production namespaces
- 🟡 AMBER: Policies defined but enforcement not verified, or policies in some namespaces only
- 🔴 RED: No network policies, or policies defined but enforcement not enabled (false security)
- ⬜ UNKNOWN: Cannot determine if policies have been tested
Critical gotcha: VPC CNI requires explicitly enabling the Network Policy Controller. Without it, NetworkPolicy resources are just YAML that does nothing.