Skip to main content

Kubernetes Hasn't Changed Its Design in 10 Years — Here Are 3 Assumptions Your K3s Cluster Must Rethink for AI Inference Workloads

1. Why the "10-Year-Old Design" Can No Longer Carry AI Workloads

It has been nearly a decade since Kubernetes became widely adopted. Back then, the core challenge was deploying microservice-based, stateless web applications in a declarative, reproducible way — scaling pods up and down, load-balancing through Services, and autoscaling based on CPU and memory utilization. That design philosophy still works well for a huge number of clusters today.

But once AI agents and LLM inference workloads moved into production, the picture changed. Inference workloads are governed by constraints that traditional CPU/memory-centric metrics simply can't see: GPU memory occupancy and request queue depth. Even teams running K3s-based clusters now need to rethink three assumptions — how GPUs are counted, how scaling decisions are made, and how serving is built — to reliably support AI workloads. Kubo, a managed service, continues to update its K3s cluster design to reflect exactly this shift in assumptions.

2. Assumption #1 — "GPUs Are Just Countable Integer Resources"

Until recently, the standard way to handle GPUs in Kubernetes was to use the NVIDIA Device Plugin to count how many GPUs exist on each node, with pods requesting them as integers like nvidia.com/gpu: 1. This approach can't account for GPU model, generation, memory capacity, or topology.

Dynamic Resource Allocation (DRA), which reached General Availability in Kubernetes 1.34, resolves this constraint. According to the official Kubernetes blog, DRA transforms how specialized hardware like GPUs and FPGAs is allocated: workloads declare the attributes they need, and the scheduler matches and assigns devices accordingly. The ResourceClaim and DeviceClass APIs have stabilized at v1 and are enabled by default.

NVIDIA's DRA driver makes this mechanism even more practical. According to the official NVIDIA GPU Operator documentation, GPUs can now be selected by attributes such as model, architecture, memory capacity, UUID, and PCI topology, and a single GPU can be safely shared across multiple workloads through MIG (Multi-Instance GPU) partitioning or time-slicing. Another key difference: while the traditional Device Plugin could only see kubelet-level availability on a node, DRA can monitor device health via DCGM.

This shift — from "GPU as a countable integer" to "GPU as a declarative resource with attributes" — changes the entire design of an AI inference cluster. Choosing a managed K3s platform like Kubo Cloud reduces the burden of chasing this evolving resource model on your own from scratch.

3. Assumption #2 — "HPA Is Enough"

The standard Horizontal Pod Autoscaler (HPA) is designed to scale horizontally based on CPU and memory utilization. But in AI inference workloads, CPU utilization can look perfectly normal while the GPU-side queue overflows and response times degrade. A CNCF blog post describes this situation as the GPU actually doing the work becoming "invisible to standard autoscaling," pointing out that this wastes accelerator capacity and worsens inference latency.

Kubernetes Event-driven Autoscaling (KEDA) addresses exactly this gap. As the official KEDA documentation explains, KEDA scalers can activate or deactivate deployments and feed custom metrics based on external event sources like Kafka or Prometheus. Being able to trigger scaling on metrics HPA can't touch — inference queue length, GPU utilization — is what makes KEDA such a good fit for AI inference workloads.

As a real-world integration example, a Red Hat Developer article describes combining Kueue-based job queuing with KEDA's GPU-utilization-driven scale-to-zero, shrinking idle workloads and freeing GPUs for jobs waiting in the queue (Red Hat Developer). Microsoft's AKS engineering blog similarly describes using KEDA's event-driven scaling to spin up additional instances before inference requests start backing up (AKS Engineering Blog).

This kind of mechanism fundamentally solves the problem of GPUs running idle overnight or on weekends and burning money for nothing. Kubo Cloud ships with Prometheus + Grafana as standard, so you don't need to build the metrics foundation — GPU utilization, inference queue depth — from scratch.

4. Assumption #3 — "A Homegrown HTTP Server Is Enough for Inference Serving"

Simply wrapping LLM inference in a homegrown HTTP server built with Flask or FastAPI quickly hits a wall once you need production-grade features: model switching, canary deployments, and traffic splitting across multiple models.

At the inference engine layer, vLLM has become the de facto standard. According to the official vLLM blog, the PagedAttention algorithm dramatically reduces KV cache memory fragmentation, delivering up to 24x higher throughput compared to HuggingFace Transformers. Inspired by virtual memory management, this technique is key to not wasting the scarce resource that is GPU memory.

On top of that sits the serving layer, and KServe is a leading choice here. According to the official KServe documentation, KServe hides the complexity of autoscaling, networking, and health checks behind Kubernetes custom resources, using inference engines like vLLM as the backend while providing a standardized inference protocol and serverless-style scaling including scale-to-zero. Building on Kubernetes-native mechanisms instead of rolling your own control layer fundamentally changes the flexibility you have for adding models and controlling traffic.

If you're running AI agent or LLM inference infrastructure in production, you need to support this serving-layer design from the infrastructure up. Running an AI agent execution platform like Captain.AI on top of Kubo is one configuration well-suited to this approach.

5. K3s as a Choice — Combining Lightness with an AI-Ready Foundation

K3s's reputation as a "lightweight Kubernetes distribution" often leads people to assume it's underpowered for AI inference workloads. In reality, K3s directly supports GPU workloads. According to the official K3s documentation, installing the NVIDIA Container Runtime package lets K3s automatically detect and configure it as the containerd runtime — and if it isn't set as the default runtime, specifying runtimeClassName: nvidia in the pod spec is enough to use the GPU.

The NVIDIA GPU Operator documentation goes further, describing how the NRI (Node Resource Interface) plugin eliminates the need for manual environment variable configuration in environments like K3s and RKE2, where the containerd configuration path differs from the standard (NVIDIA GPU Operator documentation). In other words, even the newest GPU resource models — DRA, MIG — work directly on top of a K3s cluster.

Being lightweight and meeting the infrastructure demands of the AI era are not in conflict. Kubo is K3s-based while still offering a Rancher management layer, GitOps integration, and automated certificate management — delivering full-featured Kubernetes operations starting at ¥48,000/month, competitive with EKS and AKS. Running GPU-enabled workloads on this foundation means you don't need to build a separate infrastructure from scratch just for AI inference.

6. Conclusion

In the ten years since Kubernetes emerged, what infrastructure needs to deliver has changed dramatically. And yet Kubernetes itself, as an abstraction layer, keeps surviving by changing shape. The reason: the community keeps updating the underlying assumptions themselves — GPU allocation through Dynamic Resource Allocation, scaling decisions through KEDA, model serving architecture through KServe and vLLM.

If you're operating a K3s cluster, a good place to start is auditing which of these assumptions your own cluster is still built on. If you're planning to bring AI agents into production, building a solid infrastructure foundation is the first step. Kubo lets you build the foundation to support AI-era workloads quickly, and take it all the way through to running Captain.AI on top of it. Start with a contact request to talk through what your cluster actually needs to rethink.

Related articles

← Back to all posts