IBM Cloud Global

Cloud Global

Our mission is to provide clients with an online user community of industry peers and IBM experts, to exchange tips and tricks, best practices, and product knowledge. We hope the information you find here helps you maximize the value of your IBM Cloud solutions.

 View Only

Introducing Karpenter Cluster Autoscaler for IBM Cloud

By Josephine Pfeiffer posted yesterday

  

Kubernetes cluster autoscaling has long been a balancing act: provision too many nodes and you're burning money, provision too few and your applications queue up waiting for resources. The Kubernetes Cluster Autoscaler has served the community well, but Karpenter represents a fundamentally different approach: instead of scaling predefined node groups, it provisions exactly the right compute for your pending workloads, when you need it.

The project maintainers are excited to announce the v1.0.0 release of the Karpenter Provider for IBM Cloud, bringing Karpenter's intelligent, workload-aware node provisioning to IBM Cloud VPC infrastructure.

What is Karpenter?

Karpenter is an open-source Kubernetes node lifecycle manager originally developed by AWS and now maintained under the CNCF's Kubernetes SIG Autoscaling. Unlike traditional cluster autoscalers that scale predefined node groups up and down, Karpenter takes a bin-packing approach. It looks at your pending pods, evaluates their resource requirements and scheduling constraints, and provisions nodes that are precisely sized for the workload.

This means no more over-provisioning large node groups "just in case," and no more waiting for multiple scaling cycles to get the right capacity. Karpenter can provision a single node perfectly matched to a demanding GPU workload, or a fleet of smaller instances for stateless microservices, all from a unified configuration.

Why Karpenter for IBM Cloud?

IBM Cloud customers running self-managed Kubernetes clusters on VPC infrastructure have asked for more flexible, cost-efficient autoscaling options. The Karpenter Provider for IBM Cloud delivers on this by integrating directly with IBM Cloud VPC APIs to provision compute Instances on demand.

Key capabilities in the current release include:

Intelligent instance selection. Karpenter evaluates the full range of IBM Cloud VPC instance profiles and selects the optimal instance type based on your workload's CPU, memory, GPU, and other resource requirements. You define constraints in your NodePool, and Karpenter handles the rest.

Multi-zone high availability. The provider distributes nodes across availability zones in your VPC, improving resilience without manual zone-balancing logic in your deployments.

Zero-configuration bootstrap. The provider automatically discovers your cluster configuration and generates appropriate cloud-init scripts for new nodes. Whether you're running a self-managed cluster on VPC or integrating with IBM Kubernetes Service, the bootstrap process adapts automatically.

Cost optimization through consolidation. Karpenter continuously evaluates your cluster and removes underutilized nodes, consolidating workloads onto fewer, better-utilized instances. This happens automatically based on policies you define.

Flexible deployment options. The provider supports both self-managed Kubernetes clusters on IBM Cloud VPC (giving you full control over your control plane and node configuration) and integration with IBM Kubernetes Service for managed cluster deployments.

Getting Started

Getting Karpenter running on an IBM Cloud VPC cluster takes just a few steps. You'll need to configure IBM Cloud API credentials, deploy the Karpenter controller via Helm, and create your first `NodePool` and `IBMNodeClass` resources.

The `IBMNodeClass` defines IBM Cloud-specific configuration: which VPC, subnets, and security groups to use, what image to boot, and any instance profile constraints. The `NodePool` defines scheduling requirements and disruption policies using standard Karpenter APIs.

Here's a minimal example:

apiVersion: karpenter.sh/v1
kind: NodePool
metadata:
  name: default
spec:
  template:
    spec:
      nodeClassRef:
        group: karpenter.ibm.sh
        kind: IBMNodeClass
        name: default
      requirements:
        - key: kubernetes.io/arch
          operator: In
          values: ["amd64"]
---
apiVersion: karpenter.ibm.sh/v1alpha1
kind: IBMNodeClass
metadata:
  name: default
spec:
  vpcID: your-vpc-id
  subnetIDs:
    - subnet-zone-1
    - subnet-zone-2
    - subnet-zone-3

Once deployed, Karpenter watches for pending pods that can't be scheduled on existing nodes. When it detects unschedulable pods, it evaluates the pod requirements, selects an appropriate IBM Cloud instance profile, and provisions a new instance. The node joins the cluster, the pod gets scheduled, and you're running.

Full documentation, including detailed getting-started guides for both VPC and IKS deployments, is available at karpenter-ibm.sh.

Community and Contribution

The Karpenter Provider for IBM Cloud is developed as part of the Kubernetes SIGs ecosystem and welcomes contributions from the community. The project is hosted at github.com/kubernetes-sigs/karpenter-provider-ibm-cloud, and discussion happens in the #karpenter-ibm channel on CNCF Slack.

The maintainers encourage you to try it out and share feedback through GitHub issues or Slack.

0 comments
0 views

Permalink