← All posts
Modelplane v0.2: more clouds, and traffic you can direct

Modelplane v0.2: more clouds, and traffic you can direct

Modelplane v0.2 adds Nebius and Azure AKS as inference cluster providers, weighted routing for safe model rollouts, and cluster taints for reserving and draining capacity.

Modelplane v0.2 is out. We open sourced the project three weeks ago, and since then we've had a lot of traction and some great discussions with people running inference. The mission driving each release is the same: Modelplane brings together the models, engines, clouds, and accelerators that make up the intelligence ecosystem so you can operate them as a single system under your control. And we are building this in the open.

This release adds two more cloud providers, weighted request routing, and cluster taints for reserving and draining capacity. Here's what's new.

More providers

At launch, Modelplane provisioned inference clusters on GKE and EKS, or ran on any Kubernetes you brought yourself. v0.2 adds two more providers, Nebius and Azure AKS. A Nebius cluster is about as much YAML as it sounds like it should be. You name it, point it at Nebius, and Modelplane provisions the rest from the credentials you already configured:

nebius-cluster.yaml
apiVersion: modelplane.ai/v1alpha1
kind: InferenceCluster
metadata:
  name: nebius-eu-north
  labels:
    modelplane.ai/region: eu-north
spec:
  cluster:
    source: Nebius
    nebius: {}
  nodePools:
  - name: gpu-h100
    className: nebius-h100-8x
    nodeCount: 1
    minNodeCount: 1
    maxNodeCount: 4

Both work the same way as GKE: an InferenceClass describes the hardware, an InferenceCluster provisions it, and the same nodePools model applies. On GKE, the GPU node pools Modelplane creates now cold-start from zero, so an idle pool stops billing you when nothing is running on it.

You can also still bring your own cluster on any Kubernetes, on any cloud or on-prem, for providers Modelplane doesn't provision yet. If you want a provisioner for a particular cloud, upvote or open an issue.

Weighted routing

A ModelService can now split traffic across its endpoints by weight:

model-service.yaml
apiVersion: modelplane.ai/v1alpha1
kind: ModelService
metadata:
  name: qwen
  namespace: ml-team
spec:
  endpoints:
  - weight: 95
    selector:
      matchLabels:
        modelplane.ai/deployment: qwen3-8b
  - weight: 5
    selector:
      matchLabels:
        modelplane.ai/deployment: qwen3-8b-v2

Weights are relative, and an endpoint with no weight defaults to 1. The endpoint stays fixed while you change the split, which covers canarying a new model version, shifting traffic between two deployments, and splitting between a hosted provider and your own deployment. Weights are the first step here, and there's a lot more routing functionality on the way.

Taints and draining clusters

v0.2 also lets you decide which clusters take work, using the same taints and tolerations that Kubernetes already uses for nodes, lifted up to the cluster. You taint an InferenceCluster, and only models that tolerate the taint will schedule onto it:

reserve-cluster.yaml
apiVersion: modelplane.ai/v1alpha1
kind: InferenceCluster
metadata:
  name: gpu-us-east
spec:
  taints:
  - key: modelplane.ai/reserved
    effect: NoSchedule

This is useful for keeping a sovereign cluster, or one with scarce hardware, for the workloads that need it. A deployment opts in with a matching toleration under its template:

model-deployment.yaml
apiVersion: modelplane.ai/v1alpha1
kind: ModelDeployment
spec:
  replicas: 2
  template:
    spec:
      tolerations:
      - key: modelplane.ai/reserved
        operator: Exists

The same mechanism drains a cluster. Taint it with NoExecute instead of NoSchedule and Modelplane moves the running replicas off onto other clusters in the fleet, so you can take a cluster out for maintenance without hand-migrating what's on it. Remove the taint and it takes work again.

The full release notes are on GitHub, and the getting-started guide now covers deploying on AKS and Nebius. Questions and feedback are welcome in Slack.

Bassam Tabbara

Bassam TabbaraFounder & CEO, Upbound

Bassam is the founder and CEO of Upbound and the creator of Crossplane and Rook, two CNCF Graduated projects. He's spent the last two decades working on cloud and infrastructure, and is now bringing that work to AI inference with Modelplane.

Any Engine, Any Topology, Any Infrastructure: How We Designed Modelplane

Any Engine, Any Topology, Any Infrastructure: How We Designed Modelplane

How we designed Modelplane's fleet-level inference API to fit any engine, in any topology, on any infrastructure — and what's under the hood now that v0.1 has shipped.

Introducing Modelplane: the control plane for AI inference

Introducing Modelplane: the control plane for AI inference

Today we're open sourcing Modelplane, a control plane that operates AI inference across a fleet of GPU clusters, on cloud, neocloud, and on-premise, as one inference platform.