Jump to content

Connect Leeroopedia MCP: Equip your AI agents to search best practices, build plans, verify code, diagnose failures, and look up hyperparameter defaults.

Implementation:Kserve Kserve TrainedModel Reconciler

From Leeroopedia
Knowledge Sources
Domains MLOps, Model_Management, Kubernetes
Last Updated 2026-02-13 00:00 GMT

Overview

Concrete Go reconciler that manages TrainedModel lifecycle including validation, ConfigMap synchronization, status tracking, and cascade deletion.

Description

The TrainedModelReconciler manages the full lifecycle of TrainedModel resources. It validates the parent ISVC, manages finalizers for cleanup, delegates to ModelConfigReconciler for ConfigMap writes, and updates status conditions via updateConditions() and updateStatus().

ConfigsDelta.Process() in configmap.go handles encoding/decoding of models.json in the ConfigMap data. The MemoryStrategy.GetOrAssignShard() always returns shard 0 (single shard mode).

Usage

This reconciler runs automatically in the KServe controller manager. It processes TrainedModel create/update/delete events.

Code Reference

Source Location

  • Repository: kserve
  • File: pkg/controller/v1alpha1/trainedmodel/controller.go, Lines 65-308
  • File: pkg/controller/v1alpha1/trainedmodel/reconcilers/modelconfig/modelconfig_reconciler.go, Lines 52-94
  • File: pkg/modelconfig/configmap.go, Lines 85-117

Signature

// TrainedModelReconciler reconciles TrainedModel resources
type TrainedModelReconciler struct {
    Client                client.Client
    Clientset             kubernetes.Interface
    Log                   logr.Logger
    Scheme                *runtime.Scheme
    Recorder              record.EventRecorder
    ModelConfigReconciler *modelconfig.ModelConfigReconciler
}

// Reconcile handles TrainedModel create/update/delete
func (r *TrainedModelReconciler) Reconcile(ctx context.Context,
    req ctrl.Request) (ctrl.Result, error)

// updateConditions checks ISVC ready, MMS enabled, memory available
func (r *TrainedModelReconciler) updateConditions(ctx context.Context,
    tm *v1alpha1.TrainedModel) error

// ConfigsDelta.Process encodes/decodes models.json in ConfigMap
func (cd *ConfigsDelta) Process(configMap *v1.ConfigMap) error

Import

import "github.com/kserve/kserve/pkg/controller/v1alpha1/trainedmodel"

I/O Contract

Inputs

Name Type Required Description
req ctrl.Request Yes Namespaced name of TrainedModel to reconcile

Outputs

Name Type Description
ConfigMap update v1.ConfigMap models.json updated with model spec
Status conditions []Condition InferenceServiceReady, IsMMSPredictor, MemoryResourceAvailable
Status URL URL Per-model prediction URL derived from parent ISVC

Usage Examples

Monitor Reconciliation

# Check TrainedModel status conditions
kubectl get trainedmodel model1-sklearn -o yaml

# Expected conditions when healthy:
# conditions:
#   - type: InferenceServiceReady
#     status: "True"
#   - type: IsMMSPredictor
#     status: "True"
#   - type: MemoryResourceAvailable
#     status: "True"
#   - type: Ready
#     status: "True"

# Check ConfigMap content
kubectl get configmap modelconfig-sklearn-iris-example-0 -o yaml
# data:
#   models.json: '[{"modelName":"model1-sklearn",...}]'

Related Pages

Implements Principle

Requires Environment

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment