All Products
Search
Document Center

Container Service for Kubernetes:Mempercepat akses data untuk aplikasi Job

Last Updated:Jun 24, 2026

Di ACK Serverless, deploy Fluid untuk menyimpan cache data OSS secara lokal sehingga pembacaan berulang oleh Job selesai dalam waktu kurang dari satu detik. Controller Fluid, sistem caching, dan pod aplikasi semuanya dapat berjalan di lingkungan Serverless.

Deploy Fluid, konfigurasikan Dataset dan JindoRuntime yang didukung oleh bucket OSS, lalu jalankan Job yang membaca data dari cache.

Prasyarat

Pastikan Anda telah memiliki:

Batasan

Fluid bentrok dengan fitur penjadwalan virtual node pada kluster ACK Serverless — Anda tidak dapat menggunakan keduanya secara bersamaan. Lihat Aktifkan kebijakan penjadwalan virtual node untuk kluster.

Untuk menghindari hal ini, semua pod worker cache JindoRuntime dan pod aplikasi harus menyertakan anotasi alibabacloud.com/burst-resource: eci_only. Anotasi ini muncul dalam contoh YAML di bawah ini.

Deploy lapisan kontrol Fluid

Penting

Jika Fluid open-source telah terinstal, uninstal terlebih dahulu sebelum mendeploy ack-fluid.

  1. Di Konsol ACK, klik Clusters pada panel navigasi.

  2. Klik nama kluster tersebut. Pada panel navigasi, klik Applications > Helm.

  3. Pada halaman Helm, klik Deploy.

  4. Pada Basic Information, atur parameter berikut, lalu klik Next.

    Nama rilis default adalah ack-fluid dan namespace-nya adalah fluid-system. Jika Anda mengubahnya, dialog Confirm akan muncul — klik Yes untuk mengembalikan ke nilai awal.
    Parameter Nilai
    Source Marketplace
    Chart Cari dan pilih ack-fluid
  5. Pada Parameters, klik OK.

  6. Verifikasi bahwa lapisan kontrol Fluid sedang berjalan:

    • Dataset Controller — mengelola siklus hidup CR Dataset.

    • Fluid Webhook — menyuntikkan sidecar caching ke dalam pod aplikasi untuk akses data transparan dalam skenario Serverless.

    Lapisan kontrol Fluid juga mencakup controller untuk JindoFS, JuiceFS, dan Alluxio. Komponen-komponen ini diskalakan sesuai permintaan saat Anda mengonfigurasi masing-masing sistem caching.
    kubectl get pod -n fluid-system

    Output yang diharapkan:

    NAME                                  READY   STATUS    RESTARTS   AGE
    dataset-controller-d99998f79-dgkmh    1/1     Running   0          2m48s
    fluid-webhook-55c6d9d497-dmrzb        1/1     Running   0          2m49s

    Kedua komponen tersebut memiliki peran yang berbeda:

Mempercepat akses data

Unggah data uji ke OSS

  1. Buat file uji berukuran 2 GB seperti set data sampel ini.

  2. Unggah file tersebut ke bucket OSS Anda menggunakan ossutil.

Buat resource Dataset dan JindoRuntime

Contoh ini menggunakan JindoFS sebagai backend cache (JindoRuntime). Fluid merepresentasikan sumber data sebagai dua Custom Resource (CR):

  • Dataset — menunjuk ke data di sistem penyimpanan eksternal.

  • JindoRuntime — mendefinisikan konfigurasi sistem caching.

Fluid menggunakan pemuatan malas (lazy loading): akses pertama mengambil data dari OSS ke cache lokal; pembacaan berikutnya berasal dari cache. Untuk menghilangkan latensi pada eksekusi pertama, panaskan cache terlebih dahulu sebelum mengirimkan Job Anda.

  1. Buat Secret untuk menyimpan kredensial OSS:

    kubectl create secret generic oss-access-key \
      --from-literal=fs.oss.accessKeyId=<access_key_id> \
      --from-literal=fs.oss.accessKeySecret=<access_key_secret>
  2. Buat file bernama dataset.yaml:

    Parameter Deskripsi
    mountPoint Path mount OSS dalam format oss://<bucket_name>/<bucket_path>. Atur path ke / untuk satu titik mount.
    fs.oss.endpoint Titik akhir bucket OSS. Gunakan titik akhir internal (misalnya, oss-cn-hangzhou-internal.aliyuncs.com) untuk akses dalam wilayah yang sama; gunakan titik akhir publik (misalnya, oss-cn-hangzhou.aliyuncs.com) jika tidak.
    replicas Jumlah pod worker cache. Menentukan kapasitas total cache.
    alibabacloud.com/burst-resource: eci_only Menonaktifkan penjadwalan virtual node pada pod worker cache. Wajib — Fluid bentrok dengan penjadwalan virtual node (lihat Batasan).
    k8s.aliyun.com/eci-use-specs Spesifikasi instans ECI untuk setiap pod worker cache.
    k8s.aliyun.com/eci-image-cache Mengaktifkan cache image instans untuk mempercepat startup pod.
    tieredstore.levels.mediumtype Media cache. Nilai yang valid: MEM (memori), SSD, HDD. Lihat Pilih media cache.
    tieredstore.levels.volumeType Jenis volume. Gunakan emptyDir untuk memori atau disk sistem (mencegah cache sisa memengaruhi ketersediaan node). Gunakan hostPath untuk disk data dan atur path ke titik mount. Default: hostPath.
    tieredstore.levels.path Path cache. Hanya satu path yang didukung.
    tieredstore.levels.quota Kapasitas cache maksimum per worker, misalnya 10Gi.
    tieredstore.levels.high / low Watermark tinggi dan rendah untuk eviksi cache.
    apiVersion: data.fluid.io/v1alpha1
    kind: Dataset
    metadata:
      name: demo-dataset
    spec:
      mounts:
        - mountPoint: oss://<bucket_name>/<bucket_path>
          name: demo
          path: /
          options:
            fs.oss.endpoint: oss-<region>.aliyuncs.com
          encryptOptions:
            - name: fs.oss.accessKeyId
              valueFrom:
                secretKeyRef:
                  name: oss-access-key
                  key: fs.oss.accessKeyId
            - name: fs.oss.accessKeySecret
              valueFrom:
                secretKeyRef:
                  name: oss-access-key
                  key: fs.oss.accessKeySecret
    ---
    apiVersion: data.fluid.io/v1alpha1
    kind: JindoRuntime
    metadata:
      name: demo-dataset
    spec:
      # Jumlah node worker cache
      replicas: 2
      worker:
        podMetadata:
          annotations:
            # Wajib: nonaktifkan penjadwalan virtual node (bentrok dengan Fluid — lihat Batasan)
            alibabacloud.com/burst-resource: eci_only
            # Spesifikasi instans ECI untuk pod worker cache JindoFS
            k8s.aliyun.com/eci-use-specs: <eci_instance_spec>
            # Aktifkan cache image instans untuk mempercepat startup pod
            k8s.aliyun.com/eci-image-cache: "true"
      tieredstore:
        levels:
          # Cache memori 10 GiB per node worker
          - mediumtype: MEM
            volumeType: emptyDir
            path: /dev/shm
            quota: 10Gi
            high: "0.99"
            low: "0.99"

    Parameter utama:

  3. Terapkan manifes:

    kubectl create -f dataset.yaml
  4. Tunggu satu hingga dua menit agar sistem caching selesai dideploy, lalu verifikasi status Dataset:

    Jika PHASE menampilkan NotBound, sistem caching masih dalam proses inisialisasi. Tunggu satu hingga dua menit lalu periksa kembali.
    kubectl get dataset demo-dataset

    Output yang diharapkan:

    NAME           UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
    demo-dataset   1.16GiB          0.00B    20.00GiB         0.0%                Bound   2m58s

    PHASE: Bound mengonfirmasi deploy berhasil. Kolom lainnya menunjukkan ukuran data OSS, jumlah yang di-cache, dan kapasitas total cache.

Pemanasan awal cache (opsional)

Fluid menggunakan pemuatan malas, sehingga eksekusi Job pertama kali mengambil data dari OSS dan dapat memakan waktu puluhan detik untuk set data berukuran besar. Panaskan cache terlebih dahulu untuk menghilangkan latensi eksekusi pertama.

  1. Buat file bernama dataload.yaml:

    apiVersion: data.fluid.io/v1alpha1
    kind: DataLoad
    metadata:
      name: data-warmup
    spec:
      dataset:
        name: demo-dataset
        namespace: default
      loadMetadata: true
  2. Jalankan job pemanasan cache:

    kubectl create -f dataload.yaml

    Tunggu hingga status menunjukkan Complete:

    NAME          DATASET        PHASE      AGE   DURATION
    data-warmup   demo-dataset   Complete   99s   58s

    Pemanasan cache selesai dalam waktu sekitar 58s.

Buat aplikasi Job

Gunakan kontainer aplikasi atau job pembelajaran mesin untuk mengakses data yang dipercepat melalui JindoFS. Contoh ini membuat Job yang membaca data OSS demo-dataset. PVC tersebut secara otomatis membaca dari cache JindoFS—tanpa perlu mengubah kode. Label alibabacloud.com/fluid-sidecar-target: eci memicu Fluid Webhook untuk menyuntikkan sidecar caching.

  1. Buat file bernama job.yaml:

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: demo-app
    spec:
      template:
        metadata:
          labels:
            alibabacloud.com/fluid-sidecar-target: eci
          annotations:
            # Wajib: nonaktifkan penjadwalan virtual node (bentrok dengan Fluid — lihat Batasan)
            alibabacloud.com/burst-resource: eci_only
            # Spesifikasi instans ECI untuk pod aplikasi
            k8s.aliyun.com/eci-use-specs: ecs.g7.4xlarge
        spec:
          containers:
            - name: demo
              image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
              command:
                - /bin/bash
              args:
                - -c
                - du -sh /data && time cp -r /data/ /tmp
              volumeMounts:
                - mountPath: /data
                  name: demo
          restartPolicy: Never
          volumes:
            - name: demo
              persistentVolumeClaim:
                claimName: demo-dataset
      backoffLimit: 4
  2. Kirimkan Job:

    kubectl create -f job.yaml
  3. Periksa log Job setelah selesai:

    kubectl logs demo-app-jwktf -c demo

    Output yang diharapkan:

    1.2G    /data
    
    real    0m0.992s
    user    0m0.004s
    sys     0m0.674s

    Waktu real untuk penyalinan file adalah 0m0.992s.

Bersihkan

Bersihkan resource untuk menghindari biaya yang tidak perlu.

  1. Hapus Job:

    kubectl delete job demo-app
  2. Hapus Dataset. Ini juga akan menghapus komponen sistem caching terkait:

    Penting

    Pembersihan memerlukan waktu sekitar satu menit. Tunggu hingga semua pod caching terhapus sebelum melanjutkan.

    kubectl delete dataset demo-dataset
  3. Skalakan turun lapisan kontrol Fluid:

    kubectl get deployments.apps -n fluid-system | awk 'NR>1 {print $1}' | xargs kubectl scale deployments -n fluid-system --replicas=0

    Untuk mengaktifkan kembali akses data, skalakan kembali lapisan kontrol sebelum membuat resource Dataset dan JindoRuntime baru:

    kubectl scale -n fluid-system deployment dataset-controller --replicas=1
    kubectl scale -n fluid-system deployment fluid-webhook --replicas=1