What Is KAITO and Why Does It Matter for Enterprise Teams in 2026?
In 2026, every enterprise is racing to deploy Large Language Models behind their firewalls. The challenge isn't building the models — it's operationalizing them at scale on Kubernetes infrastructure that already runs their core business systems. That's exactly the problem KAITO was designed to solve.
KAITO — the Kubernetes AI Toolchain Operator — is a Kubernetes Operator (built using operator-runtime) that automates the lifecycle of AI toolchain components on a Kubernetes cluster. Rather than manually installing inference servers, configuring model registries, and wiring up autoscalers across multiple Helm charts, KAITO lets you declare your desired AI serving topology in a handful of YAML files and handles the rest.
In my corporate training at Oracle, where I delivered the Agentic AI Workshop with a 4.91/5.0 rating, the most common pain point gheWARE sees is enterprise teams spending 6-8 weeks just getting their first production LLM deployment stable. KAITO collapses that to a single afternoon.
The operator manages:
- Model registry integration: Pulling model artifacts from HuggingFace, NGC, or enterprise S3-compatible storage
- Inference server provisioning: Spinning up vLLM, TensorRT-LLM, or LM Format Handler pods with the right GPU affinity
- Load balancing and traffic management: Serving up multiple model versions simultaneously with configurable traffic splits
- Autoscaling coordination: Hooking into Karpenter, KEDA, and vanilla HPA/VPA for dynamic GPU capacity
- Observability wiring: Exposing Prometheus metrics and OpenTelemetry traces automatically
The result? Your platform engineering team manages AI workloads the same way they manage any other Kubernetes workload: through declarative configuration, GitOps workflows, and standard kubectl tooling.
KAITO Architecture Deep Dive: Components and How They Fit Together
Understanding KAITO's architecture helps you design better deployment topologies and debug issues faster. Here are the core components:
2.1 KAITO Operator (Control Plane)
The KAITO operator runs as a Deployment in the kaito namespace. It watches for Workspace custom resources (CRs) and reconciles the desired state by creating, updating, or deleting AI workload resources. It handles:
- Certificate management for admission webhooks
- GPU resource allocation and node labeling
- Lifecycle management of inference servers
- Integration with the model registry
2.2 Workspace CR — The Declarative Core
The Workspace CR is the fundamental unit of KAITO's declarative API. It lets you describe a complete AI serving topology in one YAML object:
apiVersion: kaito.io/v1alpha1
kind: Workspace
metadata:
name: llama3-70b-instruct-serving
namespace: ai-production
spec:
runtime: vllm
model:
source:
localVolume:
storagePath: /models/llama3-70b-instruct
storageClassName: nfs-csi
config:
modelName: meta-llama/Meta-Llama-3-70B-Instruct
inference:
replicas: 2
resources:
gpu:
type: nvidia.com/gpu
count: 4
memory: 128Gi
cpu: "16"
autoscaler:
enabled: true
minReplicas: 1
maxReplicas: 5
metrics:
- type: GPUUtilization
target: 70
network:
exposed: true
serviceType: LoadBalancer
port: 8000
2.3 Inference Server Backends
KAITO supports multiple inference runtimes, selectable at Workspace creation time:
- vLLM: Paged Attention, continuous batching, async output processing — best for open models (Llama, Mistral, Qwen) at high throughput
- TensorRT-LLM: NVIDIA's optimized engine for A100/H100 GPUs — 2-4x throughput vs. naive HuggingFace for transformer decoders
- LM Format Handler: Flexible handler supporting custom tokenizers, chat templates, and quantization configs
2.4 Model Registry Integration
KAITO can pull models from multiple sources. In enterprise environments behind firewalls, the most common setup is a local model registry on S3-compatible storage (MinIO, AWS S3, or Dell ECS). The operator handles authentication via Kubernetes Secrets and streams model artifacts to the inference pods.
2.5 GPU Operator Integration
KAITO is designed to work alongside the NVIDIA GPU Operator (which manages driver containers, CUDA toolkit, and container runtime plugin) and Karpenter (which provisions GPU nodes on-demand). On a properly configured cluster, adding a new A100 node takes under 2 minutes with no manual intervention.
Prerequisites: GPU Nodes, Storage, and Network Policies
Before installing KAITO, your cluster must meet these requirements. Skipping these is the #1 reason enterprise AI deployments fail in the first month.
3.1 GPU Node Pools
For production LLM workloads, you need GPU nodes with sufficient VRAM to hold at least one model shard. A practical minimum:
- 7B models: 1x A10G or A100 24GB per replica
- 70B models (FP16): 4x A100 80GB per replica
- 405B models (FP16): 8x H100 80GB per replica or tensor parallelism across multiple nodes
On EKS, use a node group with g5.48xlarge (A100) or p5.48xlarge (H100). On GKE, use a3-highgpu-4g or a3-megagpu-4g machine types. For on-premises, ensure your kubelet has access to NVLink for intra-node GPU-to-GPU communication when using tensor parallelism.
3.2 Storage: CSI Driver and StorageClass
Model artifacts are large (Llama 3 70B FP16 = ~140GB). Use a CSI driver that supports concurrent read access from multiple pods. NFS CSI (e.g., with NetApp, Dell PowerScale, or AWS EFS for smaller models) is the most common enterprise choice. Ensure your StorageClass has:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: nfs-csi
provisioner: csi.nfs.example.com
parameters:
server: nfs-server.internal.corp
share: /models
mountPermissions: "0777"
reclaimPolicy: Retain
volumeBindingMode: Immediate
3.3 Container Runtime with GPU Support
Install the NVIDIA GPU Operator via Operator Lifecycle Manager (OLM):
apiVersion: operators.coreos.com/v1alpha1
kind: OperatorSource
metadata:
name: nvidia-gpu-operator
namespace: operators
spec:
registry: registry.ngc.nvidia.com
sourceNamespace: nvidia-gpu-operator
# Then install the ClusterPolicy
apiVersion: nvidia.com/v1alpha1
kind: ClusterPolicy
metadata:
name: nvidia-gpu-operator
spec:
driver:
enabled: true
toolkit:
enabled: true
dcgmExporter:
enabled: true
serviceMonitor:
enabled: true
nodeFeatureDiscovery:
enabled: true
After installation, verify GPU access with: kubectl run gpu-test --rm -it --restart=Never --image=nvidia/cuda:12.1.0-base-ubuntu22.04 -- nvidia-smi
Step-by-Step Installation: From kubeadm to First Inference Request
4.1 Install KAITO via OLM
The recommended production install method is through Operator Lifecycle Manager (OLM). This handles CRD registration, webhooks, and upgrades cleanly:
# Install OLM if not already present
curl -sL https://github.com/operator-framework/operator-lifecycle-manager/releases/download/v0.30.0/install.sh | bash -s 0.30.0
# Create the KAITO operator group and subscription
cat << 'EOF' | kubectl apply -f -
apiVersion: operators.coreos.com/v1alpha1
kind: OperatorGroup
metadata:
name: kaito-operator-group
namespace: kaito-system
spec:
targetNamespaces:
- kaito-system
---
apiVersion: operators.coreos.com/v1alpha1
kind: Subscription
metadata:
name: kaito-ai
namespace: kaito-system
spec:
channel: stable
name: kaito-ai
source: operatorhub-io-commmunity
sourceNamespace: openshift-marketplace
installPlanApproval: Automatic
EOF
4.2 Create the Model Storage Secret
For enterprise S3-compatible storage, create a Secret with your model registry credentials:
apiVersion: v1
kind: Secret
metadata:
name: model-registry-creds
namespace: ai-production
type: Opaque
stringData:
AWS_ACCESS_KEY_ID: "${MODEL_REGISTRY_KEY}"
AWS_SECRET_ACCESS_KEY: "${MODEL_REGISTRY_SECRET}"
AWS_REGION: us-east-1
AWS_ENDPOINT_URL: https://model-registry.internal.corp
4.3 Deploy Your First Model
With KAITO installed, deploy a Llama 3 8B model (good starting point — ~16GB VRAM) with a single Workspace CR:
apiVersion: kaito.io/v1alpha1
kind: Workspace
metadata:
name: llama3-8b-chat-serving
namespace: ai-production
spec:
runtime: vllm
model:
source:
s3:
bucket: enterprise-models
key: llama3-8b-instruct
secretRef: model-registry-creds
config:
modelName: meta-llama/Meta-Llama-3-8B-Instruct
quantization: fp16
inference:
replicas: 1
resources:
gpu:
type: nvidia.com/gpu
count: 1
memory: 32Gi
cpu: "8"
autoscaler:
enabled: true
minReplicas: 1
maxReplicas: 3
network:
exposed: true
serviceType: ClusterIP
port: 8000
healthCheck:
enabled: true
livenessProbe:
path: /health
port: 8000
readinessProbe:
path: /health
port: 8000
Apply it: kubectl apply -f llama3-workspace.yaml
Watch the reconciliation: kubectl get workspace -n ai-production -w
Within 3-5 minutes (model download + container image pull), you'll see the vLLM pod Running with a Service exposing port 8000.
4.4 Send Your First Inference Request
# Port-forward to the service locally
kubectl port-forward -n ai-production svc/llama3-8b-chat-serving 8000:8000
# Send a test request
curl -X POST http://localhost:8000/v1/completions \
-H "Content-Type: application/json" \
-d '{
"prompt": "Explain Kubernetes resource quotas in plain English",
"max_tokens": 200,
"temperature": 0.7
}'
You should receive a streaming JSON response from your locally deployed Llama 3 model. Welcome to enterprise AI serving on Kubernetes.
Production Deployment Patterns: Single Model, Multi-Model, and A/B Splitting
5.1 Single Model with Warm Replicas
For latency-sensitive applications (chatbots, code generation), keep at least one warm replica to avoid cold-start latency on the first token. Configure minReplicas: 2 with a pre-warmed node pool:
spec:
inference:
warmReplicas: 2 # Always-ON replicas
additionalReplicas: 3 # Scale-out pool
autoscaler:
minReplicas: 2
maxReplicas: 5
scaleUpThreshold: 0.75
scaleDownThreshold: 0.25
5.2 Multi-Model Serving on Shared GPU Infrastructure
Enterprise teams often need multiple model versions (e.g., production vs. staging, or different fine-tuned variants). KAITO supports this natively via separate Workspace CRs with named inference backends that share the same underlying storage:
Deploy model A and model B side-by-side as separate Workspaces on the same GPU node pool. KAITO's scheduler places them intelligently to maximize GPU utilization while maintaining fault isolation.
5.3 A/B Traffic Splitting with SMI-Specified Weights
For canary deployments and A/B testing, use SMI (Service Mesh Interface) traffic splitting across two Workspace revisions. Deploy revision 2 of your model alongside revision 1, then gradually shift traffic:
# First deploy v2 alongside v1
kubectl patch workspace llama3-8b-chat-serving \
--type='merge' \
-p '{"spec":{"model":{"config":{"modelName":"meta-llama/Meta-Llama-3-8B-Instruct-v2"}}}}'
# Configure traffic split via Istio VirtualService
apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
name: llama3-8b-chat
namespace: ai-production
spec:
hosts:
- llama3-8b-chat-serving.ai-production.svc.cluster.local
http:
- route:
- destination:
host: llama3-8b-chat-serving-v1
subset: stable
weight: 90
- destination:
host: llama3-8b-chat-serving-v2
subset: canary
weight: 10
Monitor error rates and latency for v2 at 10% traffic, then incrementally shift to 50% → 100% once confidence is established.
Autoscaling Strategies: Karpenter, HPA, and VPA for LLM Workloads
LLM inference workloads have unique autoscaling characteristics: GPU utilization spikes during active generation, drops to near-zero during idle, and scales on input token volume rather than simple CPU/memory metrics. KAITO addresses this with multiple scaling dimensions:
6.1 GPU-Based HPA for Active Inference
Use the Horizontal Pod Autoscaler with GPU utilization metrics from DCGM Exporter:
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: llama3-8b-chat-hpa
namespace: ai-production
spec:
scaleTargetRef:
apiVersion: kaito.io/v1alpha1
kind: Workspace
name: llama3-8b-chat-serving
minReplicas: 1
maxReplicas: 10
metrics:
- type: Pods
pods:
metric:
name: gpu Utilization
selector:
matchLabels:
resource group: kaito-workspace
target:
type: AverageValue
averageValue: "70"
behavior:
scaleUp:
stabilizationWindowSeconds: 60
policies:
- type: Pods
value: 2
periodSeconds: 60
scaleDown:
stabilizationWindowSeconds: 300
policies:
- type: Pods
value: 1
periodSeconds: 300
6.2 Karpenter for GPU Node Provisioning
When HPA scales beyond available GPU capacity, Karpenter automatically provisions new GPU nodes. Configure a Provisioner with GPU node selection:
apiVersion: karpenter.sh/v1alpha5
kind: Provisioner
metadata:
name: gpu-provisioner
spec:
requirements:
- key: node.kubernetes.io/instance-type
operator: In
values: ["a100.4xlarge", "a100.8xlarge", "p5.48xlarge"]
- key: nvidia.com/gpu
operator: Exists
- key: karpenter.sh/capacity-type
operator: In
values: ["on-demand", "spot"]
limits:
resources:
nvidia.com/gpu: 32
providerRef:
name: gpu-aws
ttlSecondsAfterEmpty: 120
In my experience at tier-1 financial institutions, combining HPA for pods + Karpenter for nodes gives you the fastest response to load spikes while keeping costs reasonable through spot instances for non-production environments.
Observability: Prometheus Metrics, Langfuse Traces, and Grafana Dashboards
Enterprise AI deployments require production-grade observability. KAITO integrates with the full Prometheus + Grafana stack, and can be paired with Langfuse for LLM-specific tracing (which I covered extensively in the production-ready MCP + LangGraph guide).
7.1 Prometheus Metrics from vLLM
vLLM exposes a rich metrics endpoint at /metrics. The NVIDIA DCGM Exporter adds GPU-level metrics. Key metrics to track:
vllm:num_generation_tokens_total— tokens generated per requestvllm:gpu_cache_usage_percent— KV cache utilization (high values = efficient batching)DCGM_FI_DEV_GPU_UTIL— raw GPU utilizationkaito_workspace:request_duration_seconds— end-to-end request latencykaito_workspace:pending_requests— queue depth (leading indicator for scaling)
7.2 Langfuse Integration for Trace-Level Observability
Connect your KAITO inference workspaces to Langfuse for detailed trace-level observability across your entire agentic AI pipeline:
# Add Langfuse as a serving integration in your Workspace
spec:
observability:
langfuse:
enabled: true
publicKey: ${LANGFUSE_PUBLIC_KEY}
secretKeySecretRef:
name: langfuse-secrets
namespace: ai-production
baseUrl: https://langfuse.internal.corp
traceSampling: 0.1 # Sample 10% of requests for detailed traces
tags:
- environment:production
- team:platform-engineering
Langfuse gives you token cost tracking, latency breakdowns per generation step, and prompt versioning — critical for teams running agentic AI systems with LangGraph orchestrating multiple model calls.
Enterprise Security: RBAC, Network Policies, and Confidential Computing
Deploying AI systems inside regulated enterprises (financial services, healthcare, government) requires security controls beyond standard Kubernetes defaults. Here's what your security team will demand:
8.1 RBAC: Least-Privilege Workspace Access
# Platform team: full control over Workspaces
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: ai-platform-admin
namespace: ai-production
rules:
- apiGroups: ["kaito.io"]
resources: ["workspaces"]
verbs: ["*"]
- apiGroups: [""]
resources: ["services", "configmaps"]
verbs: ["*"]
# Application team: read-only access, cannot modify inference config
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: ai-app-developer
namespace: ai-production
rules:
- apiGroups: ["kaito.io"]
resources: ["workspaces"]
verbs: ["get", "list", "watch"]
- apiGroups: [""]
resources: ["services"]
verbs: ["get", "list"]
8.2 Network Policies: Zero-Trust Between AI Workloads
By default, all pods in a Kubernetes cluster can communicate freely. Lock down your AI inference namespace with explicit allow-listing:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: ai-production-default-deny
namespace: ai-production
spec:
podSelector: {}
policyTypes: ["Ingress", "Egress"]
# Allow only the API gateway to reach inference services
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: allow-api-gateway
namespace: ai-production
spec:
ingress:
- from:
- namespaceSelector:
matchLabels:
name: ai-gateway
ports:
- protocol: TCP
port: 8000
egress:
- to:
- podSelector: {} # Model storage
ports:
- protocol: TCP
port: 2049 # NFS
8.3 Confidential Computing (TCG-compliant)
For enterprises with strict data sovereignty requirements, NVIDIA's Confidential Computing mode on H100/H200 GPUs (via TCG TPM 2.0) ensures model weights and inference data are encrypted in use. KAITO supports deploying inference servers with confidential computing pods by specifying the confidentialComputing: true flag in the Workspace spec — the operator configures the necessary pod annotations and runtime class automatically.
Frequently Asked Questions
What is the difference between KAITO and Kubeflow for AI model serving?
Kubeflow is a comprehensive ML platform covering the entire ML lifecycle — data preprocessing, training, hyperparameter tuning, and serving. KAITO is laser-focused on inference serving of pre-trained models, specifically LLMs, on Kubernetes. If you already have your models trained and just need to serve them reliably at scale, KAITO is simpler and has a lower operational footprint. If you need full training pipelines, Kubeflow (or Ray on Kubernetes) is the better choice. In practice, many enterprises use Kubeflow for training and KAITO for serving.
How does KAITO handle model versioning and rolling updates?
KAITO uses Kubernetes-native patterns for versioning. When you update a Workspace CR (e.g., pointing to a new model artifact version), the operator performs a rolling update of the inference pods, maintaining the configured minReplicas as warm standbys throughout. For zero-downtime updates of production models, deploy the new version as a separate Workspace and use traffic splitting (Istio or SMI) to migrate traffic gradually — this is the recommended approach for regulated environments.
Can KAITO run models that aren't from HuggingFace?
Yes. KAITO supports loading models from any S3-compatible storage endpoint (AWS S3, MinIO, Dell ECS, Azure Blob Storage, Google Cloud Storage). You can also use a local PVC for air-gapped environments. For proprietary models stored in enterprise registries, configure the appropriate Secret (AWS STS, Azure SAS tokens, or GCS service account) and point the Workspace at your internal model path.
What are the GPU memory requirements for different model sizes?
As a practical rule of thumb: model_size_gb × 1.2 (for KV cache + overhead). A Llama 3 8B model at FP16 needs ~16GB VRAM (1×A10G or 1×A100 24GB). Llama 3 70B at FP16 needs ~84GB, requiring at least 4×A100 80GB or tensor parallelism. The 405B models at FP16 need ~486GB, requiring 8×H100 80GB or tensor+pipeline parallelism across multiple nodes. Consider quantization (GPTQ, AWQ, or FP8) to halve VRAM requirements at minimal quality loss for most enterprise tasks.
How does KAITO integrate with existing GitOps workflows?
KAITO Workspaces are pure Kubernetes YAML — they work seamlessly with ArgoCD, FluxCD, and any GitOps tool that can apply Kubernetes manifests. Commit your Workspace CRs to Git, and your GitOps operator handles the deployment. KAITO's controller is stateless (uses Kubernetes etcd as its source of truth), so there's no external state store to manage — it fits naturally into any GitOps pipeline. This is exactly how I've set up AI serving infrastructure at multiple Fortune 500 clients, and it's the pattern gheWARE teaches in the Agentic AI Workshop.
Conclusion
KAITO represents a maturation point for enterprise AI infrastructure on Kubernetes. In 2026, the question is no longer whether you can run LLMs on Kubernetes — you clearly can — but how fast you can get to production while maintaining the operational discipline that enterprise environments demand.
The operator model brings the same declarative, GitOps-friendly operational patterns that made Kubernetes successful for stateless microservices to the world of AI inference. When your platform team can deploy a new model version with one YAML change and a kubectl apply, you've crossed the threshold from "AI project" to "AI platform."
In Rajesh Gheware's 25 years building systems at JPMorgan, Deutsche Bank, and Morgan Stanley, the teams that succeeded with new technology didn't just adopt it — they operationalized it. They built the runbooks, the autoscaling policies, the monitoring dashboards, and the security guardrails before going to production. KAITO gives you the scaffolding to do exactly that for AI serving.
If your team is serious about production Agentic AI in 2026, the Kubernetes infrastructure piece is foundational. The hands-on Kubernetes labs at the end of our Agentic AI Workshop include a complete KAITO deployment — from cluster setup to live inference — because gheWARE believes you learn infrastructure by building it, not by reading slides about it. Our Silver package includes a 30-day post-training follow-up where we review your actual production deployment topology.