requirements:-key:"karpenter.k8s.aws/instance-category"operator:Invalues:["c","m","r"] # minValues here enforces the scheduler to consider at least that number of unique instance-category to schedule the pods. # This field is ALPHA and can be dropped or replaced at any timeminValues:2-key:"karpenter.k8s.aws/instance-family"operator:Invalues:["m5","m5d","c5","c5d","c4","r4"]minValues:5-key:"karpenter.k8s.aws/instance-cpu"operator:Invalues:["4","8","16","32"]-key:"karpenter.k8s.aws/instance-hypervisor"operator:Invalues:["nitro"]-key:"karpenter.k8s.aws/instance-generation"operator:Gtvalues:["2"]-key:"topology.kubernetes.io/zone"operator:Invalues:["us-west-2a","us-west-2b"]-key:"kubernetes.io/arch"operator:Invalues:["arm64","amd64"]-key:"karpenter.sh/capacity-type"operator:Invalues:["spot","on-demand","reserved"]
Gotcha, Pavan. Here’s a crisp-but-detailed cheat sheet for those EC2 terms, with examples so you can map names to meaning fast.
EC2 naming anatomy (quick decode)
Example: c7g.4xlarge
c → family (Compute optimized)
7 → generation
g → CPU/special suffix (Graviton/Arm)
.4xlarge → size (vCPU/RAM preset)
Common extra suffixes: a (AMD EPYC), i (Intel Xeon), g (Graviton/Arm), d (NVMe instance store), n (higher networking), b (higher EBS BW), flex (lower-cost, flexible variant on some families).
1) Instance category
High-level “what it’s optimized for”.
General purpose — balanced CPU/RAM/network. Families: t, m (e.g., t3, m7i, m7g).
Compute optimized — more CPU per GB RAM. Family: c (e.g., c7g, c7i, c7gn).
Memory optimized — high RAM:CPU. Families: r, x, u, z (e.g., r7g, r6i, x2idn).
Storage optimized — high IOPS/throughput, local NVMe. Families: i, d, im/is (e.g., i4i, i4g, d3).
HPC — tightly-coupled compute with very fast interconnect. Family: hpc (e.g., hpc7g).
Mac — dedicated Mac hosts. Family: mac (e.g., mac2-m2pro.metal).
👉 Pick category by workload: APIs/web → General purpose; batch/CI → Compute; DB/cache/analytics → Memory; data lakes/NoSQL with local SSD → Storage; AI/ML/video → Accelerated; CFD/FSI/HPC → HPC.
2) Instance family
Letter(s) that map to hardware emphasis inside a category.
t (burstable), m (balanced), c (compute), r/x/u/z (memory),
i/d/im/is (storage/NVMe),
g/p/inf/trn (GPU/Inferentia/Trainium),
hpc (HPC), mac (Apple).
Examples:
m7i = General purpose, gen 7, Intel.
m7g = General purpose, gen 7, Graviton.
c7gn = Compute optimized, gen 7, Graviton, high networking.
r6id = Memory optimized, gen 6, Intel, with NVMe instance store.
i4i / i4g = Storage optimized (Intel vs Graviton).
3) Instance hypervisor
The virtualization platform beneath the instance.
Nitro (modern, default for new families)
Hardware offload + KVM-based hypervisor.
Benefits: near bare-metal performance, consistent I/O, ENA networking, NVMe, better isolation, features like Nitro Enclaves and vEBS throughput improvements.
Most current families (m6/m7, c6/c7, r6/r7, i4, g6, p5, etc.) are Nitro.
Xen (legacy)
Older generations (e.g., some 5 and earlier).
Less common now; new deployments should prefer Nitro families.
You’ll also see .metal variants (bare metal) that expose the physical host while still using the Nitro cards for I/O.
If you want, I can turn this into a one-pager PDF and a “name decoder” script (give it an instance type → it prints category, vendor, arch, storage/network hints).