Tutorial KServe: Model Serving Serverless di Kubernetes

# Serverless Model Serving di Kubernetes dengan KServe KServe adalah platform native Kubernetes untuk menyajikan model machine learning, yang dibangun di sekitar satu custom resource bernama `Inferen...

By Ruby Abdullah · · tutorial
KServeKubernetesModel ServingMLOpsInferenceCloud Native

Serverless Model Serving di Kubernetes dengan KServe

KServe adalah platform native Kubernetes untuk menyajikan model machine learning, yang dibangun di sekitar satu custom resource bernama InferenceService. Jika Anda sudah menjalankan workload di Kubernetes dan menginginkan model serving yang bisa scale ke nol, mendukung canary rollout, serta mengekspos protokol inferensi standar, KServe menyatu dengan klaster yang sudah ada tanpa memaksa Anda mengadopsi stack terpisah. Tutorial ini membahas arsitektur, instalasi, dan pola sehari-hari yang akan Anda gunakan di produksi.

Apa Itu KServe

KServe (sebelumnya KFServing) adalah platform inferensi model CNCF yang berjalan di atas Kubernetes. Ide intinya adalah menyembunyikan boilerplate pembuatan deployment serving di balik sebuah CRD deklaratif. Alih-alih menulis Deployment, Service, HorizontalPodAutoscaler, dan rute ingress secara manual, Anda cukup mendeskripsikan satu InferenceService dan KServe yang merekonsiliasi sisanya.

Beberapa karakteristik membedakan KServe dari sekadar kontainer serving biasa:

  • KServe memahami protokol. KServe menstandarkan endpoint prediksi di sekitar data plane V1 dan Open Inference Protocol (V2), sehingga klien yang ditulis sesuai spesifikasi tetap bekerja lintas framework model.
  • KServe memahami runtime. Definisi ServingRuntime bawaan mencakup framework umum (scikit-learn, XGBoost, PyTorch, TensorFlow, Triton, MLServer, Hugging Face) sehingga Anda cukup menunjuk ke artefak model.
  • KServe bersifat komposabel. Sebuah request dapat mengalir melalui transformer (pra/pascapemrosesan) lalu ke predictor, dan secara opsional disertai explainer.

Berbeda dengan framework serving serbaguna yang Anda host sendiri, KServe adalah sebuah control plane: ia bersandar pada primitif Kubernetes dan, dalam mode serverless, pada Knative serta Istio.

Hubungan dengan Knative dan Istio

KServe mendukung dua mode deployment, dan perbedaannya terletak pada dependensi yang Anda instal.

Mode serverless

Dalam mode serverless, KServe menggunakan Knative Serving untuk mengelola siklus hidup pod predictor dan Istio (atau layer jaringan lain yang didukung Knative) untuk ingress serta routing trafik. Knative memberikan dua hal yang sulit dibangun sendiri: autoscaling berbasis request hingga nol replika, dan pembagian trafik berbasis revision yang menjadi dasar canary rollout. Ini adalah mode default dan paling lengkap fiturnya.

Mode standar (raw)

Mode standar (kadang disebut deployment "raw Kubernetes") melewati Knative dan Istio. KServe membuat objek Deployment, Service, dan HorizontalPodAutoscaler Kubernetes biasa secara langsung. Anda kehilangan scale-to-zero dan canary berbasis revision, tetapi juga membuang dua dependensi besar. Mode standar cocok ketika tim platform tidak ingin ada Istio di klaster, atau ketika trafik yang stabil membuat scale-to-zero kurang bermanfaat.

Anda memilih mode per layanan dengan sebuah anotasi:

metadata:

annotations:

serving.kserve.io/deploymentMode: "RawDeployment" # atau "Serverless"

Prasyarat

Anda membutuhkan:

  • Klaster Kubernetes, versi 1.28 atau lebih baru. Klaster lokal kind atau minikube cocok untuk belajar; klaster terkelola (GKE, EKS, AKS) cocok untuk produksi.
  • kubectl yang sudah dikonfigurasi untuk berkomunikasi dengan klaster tersebut.
  • Izin cluster-admin untuk menginstal CRD dan webhook.
  • Untuk mode serverless, kapasitas cadangan yang cukup untuk pod control-plane Knative dan Istio (kira-kira 2 vCPU dan 4 GB kapasitas bebas di luar workload Anda).

Pastikan context Anda sebelum menginstal:

kubectl config current-context

kubectl get nodes

kubectl version --short

Instalasi

Skrip quickstart (pengembangan)

Untuk klaster pengembangan, skrip quickstart menginstal KServe bersama Knative, Istio, dan cert-manager dalam satu langkah. Selalu baca skrip sebelum menyalurkannya ke shell.

# Periksa terlebih dahulu

curl -sL "https://raw.githubusercontent.com/kserve/kserve/release-0.14/hack/quickinstall.sh" -o quickinstall.sh

less quickinstall.sh

Lalu jalankan

bash quickinstall.sh

Setelah selesai, verifikasi control plane dalam keadaan sehat:

Artikel Terkait

Tutorial Lengkap Kubeflow: MLOps di Kubernetes

Tutorial Lengkap Kubeflow: MLOps di Kubernetes Kubeflow adalah platform open-source untuk deploy, mengelola, dan scaling...

Tutorial Lengkap BentoML: Packaging dan Serving ML Models ke Production

Tutorial Lengkap BentoML: Packaging dan Serving ML Models ke Production BentoML adalah framework open-source untuk build...

Tutorial Text Generation Inference (TGI): Serving LLM untuk Produksi

Menyajikan LLM di Produksi dengan Text Generation Inference (TGI) Text Generation Inference (TGI) adalah toolkit buatan ...

Tutorial Triton Inference Server: High-Performance Model Serving

Tutorial 19: Triton Inference Server - Penyajian Model Berperforma Tinggi Daftar Isi Pendahuluan Prasyarat Menyiapkan Tr...