Last active
June 10, 2026 09:27
-
-
Save pwright/0821362d03be6ccb5321618919844588 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "id": "karpenter-autoscaling-landscape", | |
| "title": "Karpenter Autoscaling Landscape", | |
| "abstract": "Karpenter provisions Kubernetes worker nodes on AWS just in time for unschedulable pods. This map follows the value chain from application capacity and cost control down through pod scheduling signals, Karpenter policy objects, concrete node claims, AWS infrastructure integration, and operational controls.\n\nLegend: blue = user-visible platform outcomes; green = Kubernetes scheduling inputs; amber = Karpenter control objects; purple = cloud-provider integration; red = disruption and risk controls.", | |
| "categories": [ | |
| { | |
| "id": "platform-outcomes", | |
| "title": "Platform Outcomes", | |
| "items": [ | |
| { | |
| "id": "application-capacity", | |
| "name": "Application Capacity", | |
| "color": "#7db7ff", | |
| "external": "[https://karpenter.sh/docs/getting-started/getting-started-with-karpenter/](https://karpenter.sh/docs/getting-started/getting-started-with-karpenter/)", | |
| "deps": [ | |
| "unschedulable-pods", | |
| "node-provisioning" | |
| ] | |
| }, | |
| { | |
| "id": "cost-efficiency", | |
| "name": "Cost Efficiency", | |
| "color": "#7db7ff", | |
| "external": "[https://karpenter.sh/docs/concepts/disruption/](https://karpenter.sh/docs/concepts/disruption/)", | |
| "deps": [ | |
| "consolidation", | |
| "capacity-type-selection" | |
| ] | |
| }, | |
| { | |
| "id": "workload-isolation", | |
| "name": "Workload Isolation", | |
| "color": "#7db7ff", | |
| "external": "[https://karpenter.sh/docs/concepts/nodepools/](https://karpenter.sh/docs/concepts/nodepools/)", | |
| "deps": [ | |
| "nodepool-taints", | |
| "nodepool-requirements" | |
| ] | |
| }, | |
| { | |
| "id": "faster-scale-out", | |
| "name": "Faster Scale-Out", | |
| "color": "#7db7ff", | |
| "external": "[https://karpenter.sh/docs/concepts/](https://karpenter.sh/docs/concepts/)", | |
| "deps": [ | |
| "pending-pod-watching", | |
| "nodeclaim-lifecycle" | |
| ] | |
| } | |
| ] | |
| }, | |
| { | |
| "id": "workload-signals", | |
| "title": "Workload Scheduling Signals", | |
| "items": [ | |
| { | |
| "id": "unschedulable-pods", | |
| "name": "Unschedulable Pods", | |
| "color": "#8fd18f", | |
| "external": "[https://karpenter.sh/docs/concepts/](https://karpenter.sh/docs/concepts/)", | |
| "deps": [ | |
| "pending-pod-watching" | |
| ] | |
| }, | |
| { | |
| "id": "pod-resource-requests", | |
| "name": "CPU and Memory Requests", | |
| "color": "#8fd18f", | |
| "external": "[https://karpenter.sh/docs/concepts/scheduling/](https://karpenter.sh/docs/concepts/scheduling/)", | |
| "deps": [ | |
| "scheduling-constraints" | |
| ] | |
| }, | |
| { | |
| "id": "node-selectors-affinity", | |
| "name": "Node Selectors and Affinity", | |
| "color": "#8fd18f", | |
| "external": "[https://karpenter.sh/docs/concepts/scheduling/](https://karpenter.sh/docs/concepts/scheduling/)", | |
| "deps": [ | |
| "scheduling-constraints" | |
| ] | |
| }, | |
| { | |
| "id": "topology-requirements", | |
| "name": "Topology Requirements", | |
| "color": "#8fd18f", | |
| "external": "[https://karpenter.sh/docs/concepts/scheduling/](https://karpenter.sh/docs/concepts/scheduling/)", | |
| "deps": [ | |
| "zone-selection" | |
| ] | |
| }, | |
| { | |
| "id": "taints-tolerations", | |
| "name": "Taints and Tolerations", | |
| "color": "#8fd18f", | |
| "external": "[https://karpenter.sh/docs/concepts/scheduling/](https://karpenter.sh/docs/concepts/scheduling/)", | |
| "deps": [ | |
| "nodepool-taints" | |
| ] | |
| } | |
| ] | |
| }, | |
| { | |
| "id": "karpenter-policy", | |
| "title": "Karpenter Policy Model", | |
| "items": [ | |
| { | |
| "id": "nodepools", | |
| "name": "NodePools", | |
| "color": "#f2c66d", | |
| "external": "[https://karpenter.sh/docs/concepts/nodepools/](https://karpenter.sh/docs/concepts/nodepools/)", | |
| "deps": [ | |
| "nodepool-requirements", | |
| "nodepool-limits", | |
| "ec2-nodeclass-ref", | |
| "disruption-policy" | |
| ] | |
| }, | |
| { | |
| "id": "nodepool-requirements", | |
| "name": "NodePool Requirements", | |
| "color": "#f2c66d", | |
| "external": "[https://karpenter.sh/docs/concepts/nodepools/](https://karpenter.sh/docs/concepts/nodepools/)", | |
| "deps": [ | |
| "instance-type-selection", | |
| "zone-selection", | |
| "capacity-type-selection" | |
| ] | |
| }, | |
| { | |
| "id": "nodepool-taints", | |
| "name": "NodePool Taints", | |
| "color": "#f2c66d", | |
| "external": "[https://karpenter.sh/docs/concepts/nodepools/](https://karpenter.sh/docs/concepts/nodepools/)", | |
| "deps": [ | |
| "nodepools" | |
| ] | |
| }, | |
| { | |
| "id": "nodepool-limits", | |
| "name": "NodePool Limits and Weights", | |
| "color": "#f2c66d", | |
| "external": "[https://karpenter.sh/docs/concepts/nodepools/](https://karpenter.sh/docs/concepts/nodepools/)", | |
| "deps": [ | |
| "nodepools" | |
| ] | |
| }, | |
| { | |
| "id": "disruption-policy", | |
| "name": "Disruption Policy", | |
| "color": "#f2c66d", | |
| "external": "[https://karpenter.sh/docs/concepts/disruption/](https://karpenter.sh/docs/concepts/disruption/)", | |
| "deps": [ | |
| "consolidation", | |
| "drift", | |
| "expiration" | |
| ] | |
| } | |
| ] | |
| }, | |
| { | |
| "id": "provisioning-engine", | |
| "title": "Provisioning Engine", | |
| "items": [ | |
| { | |
| "id": "pending-pod-watching", | |
| "name": "Pending Pod Watching", | |
| "color": "#f2c66d", | |
| "external": "[https://karpenter.sh/docs/concepts/](https://karpenter.sh/docs/concepts/)", | |
| "deps": [ | |
| "scheduling-constraints" | |
| ] | |
| }, | |
| { | |
| "id": "scheduling-constraints", | |
| "name": "Layered Scheduling Constraints", | |
| "color": "#f2c66d", | |
| "external": "[https://karpenter.sh/docs/concepts/scheduling/](https://karpenter.sh/docs/concepts/scheduling/)", | |
| "deps": [ | |
| "nodepools" | |
| ] | |
| }, | |
| { | |
| "id": "node-provisioning", | |
| "name": "Node Provisioning Decision", | |
| "color": "#f2c66d", | |
| "external": "[https://karpenter.sh/docs/concepts/nodeclaims/](https://karpenter.sh/docs/concepts/nodeclaims/)", | |
| "deps": [ | |
| "nodeclaim-lifecycle", | |
| "instance-type-selection" | |
| ] | |
| }, | |
| { | |
| "id": "nodeclaims", | |
| "name": "NodeClaims", | |
| "color": "#f2c66d", | |
| "external": "[https://karpenter.sh/docs/concepts/nodeclaims/](https://karpenter.sh/docs/concepts/nodeclaims/)", | |
| "deps": [ | |
| "nodeclaim-lifecycle", | |
| "ec2-instance-launch" | |
| ] | |
| }, | |
| { | |
| "id": "nodeclaim-lifecycle", | |
| "name": "Launch, Register, Initialize", | |
| "color": "#f2c66d", | |
| "external": "[https://karpenter.sh/docs/concepts/nodeclaims/](https://karpenter.sh/docs/concepts/nodeclaims/)", | |
| "deps": [ | |
| "ec2-instance-launch", | |
| "node-registration" | |
| ] | |
| } | |
| ] | |
| }, | |
| { | |
| "id": "cloud-provider-integration", | |
| "title": "Cloud Provider Integration", | |
| "items": [ | |
| { | |
| "id": "ec2-nodeclasses", | |
| "name": "EC2NodeClasses", | |
| "color": "#b79cff", | |
| "external": "[https://karpenter.sh/docs/concepts/nodeclasses/](https://karpenter.sh/docs/concepts/nodeclasses/)", | |
| "deps": [ | |
| "subnet-discovery", | |
| "security-group-discovery", | |
| "ami-selection", | |
| "node-iam-role" | |
| ] | |
| }, | |
| { | |
| "id": "ec2-nodeclass-ref", | |
| "name": "NodeClass Reference", | |
| "color": "#b79cff", | |
| "external": "[https://karpenter.sh/docs/concepts/nodeclasses/](https://karpenter.sh/docs/concepts/nodeclasses/)", | |
| "deps": [ | |
| "ec2-nodeclasses" | |
| ] | |
| }, | |
| { | |
| "id": "instance-type-selection", | |
| "name": "Instance Type Selection", | |
| "color": "#b79cff", | |
| "external": "[https://karpenter.sh/docs/reference/instance-types/](https://karpenter.sh/docs/reference/instance-types/)", | |
| "deps": [ | |
| "ec2-instance-launch" | |
| ] | |
| }, | |
| { | |
| "id": "capacity-type-selection", | |
| "name": "On-Demand or Spot Capacity", | |
| "color": "#b79cff", | |
| "external": "[https://karpenter.sh/docs/concepts/scheduling/](https://karpenter.sh/docs/concepts/scheduling/)", | |
| "deps": [ | |
| "ec2-instance-launch" | |
| ] | |
| }, | |
| { | |
| "id": "zone-selection", | |
| "name": "Zone Selection", | |
| "color": "#b79cff", | |
| "external": "[https://karpenter.sh/docs/concepts/scheduling/](https://karpenter.sh/docs/concepts/scheduling/)", | |
| "deps": [ | |
| "subnet-discovery" | |
| ] | |
| }, | |
| { | |
| "id": "ec2-instance-launch", | |
| "name": "EC2 Instance Launch", | |
| "color": "#b79cff", | |
| "external": "[https://karpenter.sh/docs/getting-started/getting-started-with-karpenter/](https://karpenter.sh/docs/getting-started/getting-started-with-karpenter/)", | |
| "deps": [ | |
| "aws-permissions", | |
| "subnet-discovery", | |
| "security-group-discovery", | |
| "ami-selection", | |
| "node-iam-role" | |
| ] | |
| } | |
| ] | |
| }, | |
| { | |
| "id": "operations-and-risk", | |
| "title": "Operations and Risk Controls", | |
| "items": [ | |
| { | |
| "id": "aws-permissions", | |
| "name": "Controller AWS Permissions", | |
| "color": "#ff8f8f", | |
| "external": "[https://karpenter.sh/docs/getting-started/getting-started-with-karpenter/](https://karpenter.sh/docs/getting-started/getting-started-with-karpenter/)", | |
| "deps": [] | |
| }, | |
| { | |
| "id": "subnet-discovery", | |
| "name": "Subnet Discovery", | |
| "color": "#ff8f8f", | |
| "external": "[https://karpenter.sh/docs/concepts/nodeclasses/](https://karpenter.sh/docs/concepts/nodeclasses/)", | |
| "deps": [] | |
| }, | |
| { | |
| "id": "security-group-discovery", | |
| "name": "Security Group Discovery", | |
| "color": "#ff8f8f", | |
| "external": "[https://karpenter.sh/docs/concepts/nodeclasses/](https://karpenter.sh/docs/concepts/nodeclasses/)", | |
| "deps": [] | |
| }, | |
| { | |
| "id": "ami-selection", | |
| "name": "AMI Selection", | |
| "color": "#ff8f8f", | |
| "external": "[https://karpenter.sh/docs/concepts/nodeclasses/](https://karpenter.sh/docs/concepts/nodeclasses/)", | |
| "deps": [] | |
| }, | |
| { | |
| "id": "node-iam-role", | |
| "name": "Node IAM Role", | |
| "color": "#ff8f8f", | |
| "external": "[https://karpenter.sh/docs/getting-started/getting-started-with-karpenter/](https://karpenter.sh/docs/getting-started/getting-started-with-karpenter/)", | |
| "deps": [] | |
| }, | |
| { | |
| "id": "node-registration", | |
| "name": "Node Registration", | |
| "color": "#ff8f8f", | |
| "external": "[https://karpenter.sh/docs/concepts/nodeclaims/](https://karpenter.sh/docs/concepts/nodeclaims/)", | |
| "deps": [] | |
| }, | |
| { | |
| "id": "consolidation", | |
| "name": "Consolidation", | |
| "color": "#ff8f8f", | |
| "external": "[https://karpenter.sh/docs/concepts/disruption/](https://karpenter.sh/docs/concepts/disruption/)", | |
| "deps": [] | |
| }, | |
| { | |
| "id": "drift", | |
| "name": "Drift", | |
| "color": "#ff8f8f", | |
| "external": "[https://karpenter.sh/docs/concepts/disruption/](https://karpenter.sh/docs/concepts/disruption/)", | |
| "deps": [] | |
| }, | |
| { | |
| "id": "expiration", | |
| "name": "Expiration", | |
| "color": "#ff8f8f", | |
| "external": "[https://karpenter.sh/docs/concepts/disruption/](https://karpenter.sh/docs/concepts/disruption/)", | |
| "deps": [] | |
| } | |
| ] | |
| } | |
| ] | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment