All Products
Search
Document Center

Container Service for Kubernetes:Terapkan layanan inferensi dengan KServe

Last Updated:Aug 21, 2026

Gunakan KServe pada ACK Knative untuk menerapkan model AI sebagai layanan inferensi tanpa server. Pendekatan ini menyediakan fitur utama seperti auto-scaling, manajemen versi, dan rilis canary.

Langkah 1: Instal dan konfigurasikan komponen KServe

Untuk memastikan integrasi tanpa hambatan dengan ALB Ingress atau Kourier gateway, instal komponen KServe dan ubah pengaturannya untuk menonaktifkan pembuatan sumber daya Istio VirtualService bawaan.

  1. Instal komponen KServe.

    1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

    2. Pada halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Applications > Knative.

    3. Pada tab Add-ons, temukan dan terapkan komponen KServe di bagian Add-on Komponen.

  2. Nonaktifkan pembuatan Istio VirtualHost.

    Edit ConfigMap inferenceservice-config untuk mengatur disableIstioVirtualHost menjadi true.

    kubectl get configmap inferenceservice-config -n kserve -o yaml \
    | sed 's/"disableIstioVirtualHost": false/"disableIstioVirtualHost": true/g' \
    | kubectl apply -f -

    Output yang diharapkan:

    configmap/inferenceservice-config configured
  3. Verifikasi konfigurasi.

    kubectl get configmap inferenceservice-config -n kserve -o yaml \
    | grep '"disableIstioVirtualHost":' \
    | tail -n1 \
    | awk -F':' '{gsub(/[ ,]/,"",$2); print $2}'

    Output berupa true menunjukkan bahwa konfigurasi telah diperbarui.

  4. Lakukan restart controller KServe agar perubahan konfigurasi diterapkan.

    kubectl rollout restart deployment kserve-controller-manager -n kserve

Langkah 2: Terapkan InferenceService

Contoh ini menerapkan model klasifikasi scikit-learn yang dilatih menggunakan dataset bunga Iris. Model menerima empat pengukuran bunga sebagai input dan memprediksi spesies yang sesuai.

Input berupa array empat fitur numerik terurut:

  1. Sepal Length

  2. Sepal Width

  3. Petal Length

  4. Petal Width

Output berupa indeks kelas yang diprediksi:

  • 0: Iris setosa

  • 1: Iris versicolour

  • 2: Iris virginica

  1. Buat file inferenceservice.yaml untuk menerapkan layanan inferensi.

    apiVersion: "serving.kserve.io/v1beta1"
    kind: "InferenceService"
    metadata:
      name: "sklearn-iris"
    spec:
      predictor:
        model:
          # Format model. Dalam kasus ini, sklearn.
          modelFormat:
            name: sklearn
          image: "kube-ai-registry.cn-shanghai.cr.aliyuncs.com/ai-sample/kserve-sklearn-server:v0.12.0"
          command:
          - sh
          - -c
          - "python -m sklearnserver --model_name=sklearn-iris --model_dir=/models --http_port=8080"
  2. Terapkan InferenceService.

    kubectl apply -f inferenceservice.yaml
  3. Periksa status layanan.

    kubectl get inferenceservices sklearn-iris

    Status READY bernilai True menunjukkan bahwa layanan berjalan dengan baik.

    NAME           URL                                                         READY   PREV   LATEST   PREVROLLEDOUTREVISION   LATESTREADYREVISION                    AGE
    sklearn-iris   http://sklearn-iris-predictor-default.default.example.com   True           100                              sklearn-iris-predictor-default-00001   51s

Langkah 3: Akses layanan

Kirim permintaan inferensi ke layanan melalui gerbang masuk (ingress gateway) kluster.

  1. Pada halaman Knative, di tab Services, peroleh Gateway dari ALB Ingress atau Kourier gateway dan Default Domain layanan tersebut.

    Contoh ini menggunakan ALB Ingress. Antarmuka pengguna untuk Kourier gateway serupa.

    Dalam daftar layanan, status sklearn-iris-predictor adalah Ready, dan default domain-nya adalah sklearn-iris-predictor.default.example.com. Alamat gateway ALB Ingress ditampilkan di bagian atas halaman. Catat alamat dan default domain tersebut.

  2. Siapkan data permintaan.

    Di terminal lokal Anda, buat file bernama ./iris-input.json yang berisi dua array. Setiap array merepresentasikan satu sampel untuk prediksi.

    cat <<EOF > "./iris-input.json"
    {
      "instances": [
        [6.8,  2.8,  4.8,  1.4],
        [6.0,  3.4,  4.5,  1.6]
      ]
    }
    EOF
  3. Kirim permintaan inferensi dari terminal lokal Anda untuk mengakses layanan.

    Ganti ${INGRESS_DOMAIN} dengan Gateway dari langkah 1 bagian ini.

    curl -H "Content-Type: application/json" -H "Host: sklearn-iris-predictor.default.example.com" "http://${INGRESS_DOMAIN}/v1/models/sklearn-iris:predict" -d @./iris-input.json

    Output menunjukkan bahwa model memprediksi indeks kelas 1 untuk kedua sampel input, yang sesuai dengan Iris versicolour.

    {"predictions":[1,1]}                        

Penagihan

Komponen KServe dan Knative tidak dikenai biaya. Namun, Anda akan dikenai biaya untuk sumber daya komputasi, seperti instans ECS dan ECI, serta sumber daya jaringan, seperti instans ALB dan CLB, yang Anda gunakan. Untuk informasi lebih lanjut, lihat Harga sumber daya cloud.

FAQ

Mengapa InferenceService saya terjebak dalam status Not Ready?

Untuk memecahkan masalah ini, lakukan langkah-langkah berikut:

  1. Jalankan perintah kubectl describe inferenceservice <yourServiceName> untuk memeriksa event guna mencari pesan error.

  2. Jalankan kubectl get pods untuk memeriksa apakah ada Pod yang terkait dengan layanan (biasanya dimulai dengan nama layanan) berada dalam status Error atau CrashLoopBackOff.

  3. Jika sebuah Pod berada dalam status tidak normal, jalankan perintah kubectl logs <pod-name> -c kserve-container untuk memeriksa log kontainer yang menjalankan model guna mencari kegagalan pemuatan model, seperti ketidakmampuan mengunduh model karena masalah jaringan atau penggunaan format file model yang salah.

Bagaimana cara menerapkan model yang telah saya latih sendiri?

Anda dapat mengunggah file model ke Bucket OSS. Saat membuat InferenceService, atur bidang spec.predictor.model.storageUri ke URI file model tersebut. Pada saat yang sama, atur dengan benar bidang modelFormat berdasarkan framework model (misalnya, tensorflow, pytorch, atau onnx).

Bagaimana cara mengonfigurasi sumber daya GPU untuk layanan model?

Jika model memerlukan GPU untuk inferensi, Anda dapat menambahkan bidang resources ke predictor dalam file YAML InferenceService untuk meminta sumber daya GPU. Berikut contohnya.

Untuk informasi selengkapnya tentang cara menggunakan sumber daya GPU di Knative, lihat Gunakan sumber daya GPU.
spec:
  predictor:
    resources:
      requests:
        nvidia.com/gpu: "1"
      limits:
        nvidia.com/gpu: "1"

Topik terkait