All Products
Search
Document Center

Container Service for Kubernetes:Mempercepat akses data untuk aplikasi Job

Last Updated:Mar 25, 2026

Fluid mendukung percepatan akses data pada kluster ACK Serverless. Anda dapat menjalankan semua komponen Fluid—termasuk controller Fluid, komponen sistem caching, dan aplikasi Anda—pada kluster ACK Serverless. Topik ini menjelaskan cara mempercepat akses data untuk aplikasi Job di kluster ACK Serverless.

Prasyarat

Batasan

Fitur ini tidak kompatibel dengan fitur virtual node scheduling pada kluster ACK Serverless. Anda tidak dapat menggunakan kedua fitur tersebut secara bersamaan. Untuk informasi selengkapnya tentang virtual node scheduling, lihat Enable the virtual node scheduling policy for a cluster.

Deploy komponen control plane Fluid

Penting

Jika Anda telah menginstal Fluid open-source, Anda harus menguninstall-nya terlebih dahulu sebelum melakukan deploy komponen ack-fluid.

  1. Deploy komponen lapisan kontrol Fluid.

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

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

    3. Pada halaman Helm, klik Deploy.

    4. Pada wizard konfigurasi Basic Information, konfigurasikan parameter terkait, lalu klik Next.

      Tabel berikut menjelaskan parameter utama.

      Parameter

      Deskripsi

      Source

      Pilih Marketplace.

      Chart

      Cari dan pilih ack-fluid.

      Catatan

      Nama release default adalah ack-fluid dan namespace default adalah fluid-system. Jika Anda menentukan nama release atau namespace yang berbeda, kotak dialog Confirm akan muncul saat Anda mengklik Next. Kami menyarankan agar Anda mengklik Yes di kotak dialog tersebut untuk menggunakan nilai default.

    5. Pada wizard Parameters, klik OK.

  2. Jalankan perintah berikut untuk memeriksa apakah Fluid berhasil dideploy.

    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

    Output serupa menunjukkan bahwa Fluid berhasil dideploy. Komponen-komponen tersebut dijelaskan sebagai berikut:

    • Dataset Controller: Mengelola siklus hidup lengkap dari Custom Resource (CR) Dataset yang diperkenalkan oleh Fluid.

    • Fluid Webhook: Menyuntikkan kontainer sidecar ke dalam pod aplikasi yang perlu mengakses data. Hal ini memungkinkan akses data transparan dalam skenario serverless.

    Catatan

    Selain dua komponen ini, control plane Fluid juga mencakup komponen controller untuk mengelola sistem caching seperti JindoFS, JuiceFS, dan Alluxio. Komponen-komponen ini tidak dibuat saat deployment awal. Pod untuk controller sistem caching tertentu hanya diskalakan sesuai permintaan ketika Anda menentukan ingin menggunakan sistem tersebut.

Mempercepat akses data dalam kluster ACK Serverless

Langkah 1: Unggah data uji ke bucket OSS

  1. Buat file uji berukuran 2 GB. Topik ini menggunakan test sebagai contoh.

  2. Unggah file uji ke bucket Anda di OSS.

    Anda dapat menggunakan ossutil, alat client yang disediakan oleh OSS, untuk mengunggah data. Untuk informasi selengkapnya, lihat Install ossutil.

Langkah 2: Buat resource Fluid Dataset dan Runtime

Setelah menyiapkan dan mengunggah data, Anda harus mendeklarasikan data yang akan diakses dalam Fluid dengan mengirimkan CR Dataset dan CR Runtime.

  • CR Dataset: Mendeskripsikan URL data dalam sistem penyimpanan eksternal.

  • CR Runtime: Mendeskripsikan sistem caching dan konfigurasinya.

  1. Jalankan perintah berikut untuk membuat resource Secret yang menyimpan kredensial yang diperlukan untuk mengakses bucket 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 dataset.yaml dengan konten berikut untuk mendefinisikan CR Dataset dan CR Runtime.

    Contoh ini menggunakan JindoFS sebagai backend sistem caching, yang sesuai dengan JindoRuntime.

    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 # Titik akhir bucket OSS.
          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 pekerja cache.
      replicas: 2
      worker:
        podMetadata:
          annotations:
            # Nonaktifkan fitur virtual node scheduling.
            alibabacloud.com/burst-resource: eci_only
            # Spesifikasi instans ECI untuk pod JindoFS.
            k8s.aliyun.com/eci-use-specs: <eci_instance_spec>
            # Aktifkan cache gambar instans untuk mempercepat startup pod.
            k8s.aliyun.com/eci-image-cache: "true"
      tieredstore:
        levels:
          # Gunakan 10 GiB memori sebagai media cache untuk setiap node pekerja cache.
          - mediumtype: MEM
            volumeType: emptyDir
            path: /dev/shm
            quota: 10Gi
            high: "0.99"
            low: "0.99"

    Tabel berikut menjelaskan parameter utama.

    Parameter

    Deskripsi

    mountPoint

    Jalur untuk memasang file system dasar (UFS). Formatnya adalah oss://<oss_bucket>/<bucket_dir>.

    Jalur ini tidak perlu mencantumkan informasi endpoint. Jika Anda menggunakan satu titik pemasangan, Anda dapat mengatur path ke /.

    options

    Menentukan titik akhir bucket OSS. Anda dapat mengatur ini ke titik akhir internal atau titik akhir publik.

    fs.oss.endpoint

    Titik akhir bucket OSS. Anda dapat menggunakan titik akhir publik atau internal.

    Menggunakan titik akhir internal dapat meningkatkan kinerja akses data, tetapi memerlukan agar kluster Kubernetes dan bucket OSS berada di wilayah yang sama. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), titik akhir publik adalah oss-cn-hangzhou.aliyuncs.com dan titik akhir internal adalah oss-cn-hangzhou-internal.aliyuncs.com.

    fs.oss.accessKeyId

    ID AccessKey yang memiliki izin untuk mengakses bucket OSS.

    fs.oss.accessKeySecret

    AccessKey Secret yang sesuai dengan ID AccessKey.

    replicas

    Jumlah pod pekerja cache JindoRuntime. Jumlah ini memengaruhi kapasitas maksimum yang tersedia dari sistem caching terdistribusi.

    worker.podMetadata.annotations

    Anda dapat menentukan spesifikasi instans ECI dan cache gambar instans.

    tieredstore.levels

    Anda dapat menggunakan bidang quota untuk menentukan kapasitas cache maksimum yang dapat disediakan oleh setiap pod pekerja cache.

    tieredstore.levels.mediumtype

    Media cache. Nilai yang didukung adalah HDD (hard disk drive), SSD (solid-state drive), dan MEM (memory).

    Untuk konfigurasi yang direkomendasikan untuk mediumtype, lihat Strategy 2: Select a cache medium.

    tieredstore.levels.volumeType

    Jenis volume dari media cache. Hanya emptyDir dan hostPath yang didukung. Nilai default-nya adalah hostPath.

    • Jika Anda menggunakan memori atau disk sistem penyimpanan lokal sebagai media cache, kami menyarankan agar Anda memilih emptyDir untuk mencegah data cache sisa di node memengaruhi ketersediaan node.

    • Jika Anda menggunakan disk data penyimpanan lokal sebagai media cache, Anda dapat menggunakan hostPath dan mengatur path ke titik pemasangan disk data pada host machine.

    Untuk konfigurasi yang direkomendasikan untuk volumeType, lihat Strategy 2: Select a cache medium.

    tieredstore.levels.path

    Hanya mendukung satu jalur.

    tieredstore.levels.quota

    Kapasitas cache maksimum. Misalnya, 100Gi menentukan kapasitas maksimum 100 GiB.

    tieredstore.levels.high

    Watermark tinggi untuk kapasitas penyimpanan.

    tieredstore.levels.low

    Watermark rendah untuk kapasitas penyimpanan.

  3. Jalankan perintah berikut untuk membuat resource Dataset dan JindoRuntime.

    kubectl create -f dataset.yaml
  4. Jalankan perintah berikut untuk memeriksa status deployment dataset.

    Setelah Anda membuat CR Dataset dan JindoRuntime, sistem caching dideploy dalam waktu sekitar satu hingga dua menit. Anda kemudian dapat melihat informasi tentang sistem caching dan data dalam sistem penyimpanan backend.

    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

    Output ini menampilkan informasi tentang Dataset Fluid. Tabel berikut menjelaskan item output utama.

    Item keluaran

    Deskripsi

    UFS TOTAL SIZE

    Ukuran total dataset di OSS.

    CACHED

    Ukuran data yang saat ini di-cache.

    CACHE CAPACITY

    Kapasitas sistem caching.

    CACHED PERCENTAGE

    Persentase dataset yang di-cache.

    PHASE

    Status dataset. Bound menunjukkan bahwa dataset berhasil dideploy.

(Opsional) Langkah 3: Lakukan pemanasan cache data

Untuk kinerja akses data pertama kali yang optimal, kami menyarankan untuk melakukan pemanasan cache data terlebih dahulu.

  1. Gunakan konten berikut untuk membuat file dataload.yaml.

    apiVersion: data.fluid.io/v1alpha1
    kind: DataLoad
    metadata:
      name: data-warmup
    spec:
      dataset:
        name: demo-dataset
        namespace: default
      loadMetadata: true
  2. Jalankan perintah berikut untuk melakukan deploy Dataload.

    kubectl create -f dataload.yaml

    Output yang diharapkan:

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

    Output ini menunjukkan bahwa pemanasan cache data memakan waktu sekitar 58s.

Langkah 4: Buat aplikasi pekerjaan

Anda dapat menggunakan layanan percepatan akses data JindoFS dengan membuat kontainer aplikasi atau mengirimkan tugas pembelajaran mesin. Contoh ini menunjukkan cara membuat aplikasi Job untuk mengakses data di OSS.

  1. Buat file bernama job.yaml dengan konten berikut untuk mendefinisikan resource Job.

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: demo-app
    spec:
      template:
        metadata:
          labels:
            alibabacloud.com/fluid-sidecar-target: eci
          annotations:
            # Nonaktifkan fitur virtual node scheduling.
            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
              args:
                - -c
                - du -sh /data && time cp -r /data/ /tmp
              command:
                - /bin/bash
              volumeMounts:
                - mountPath: /data
                  name: demo
          restartPolicy: Never
          volumes:
            - name: demo
              persistentVolumeClaim:
                claimName: demo-dataset
      backoffLimit: 4
  2. Jalankan perintah berikut untuk membuat Job.

    kubectl create -f job.yaml
  3. Jalankan perintah berikut untuk melihat log awal Job Pod.

    kubectl logs demo-app-jwktf -c demo

    Output yang diharapkan:

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

    Output ini menunjukkan bahwa waktu real untuk menyalin file hanya 0m0.992s.

Langkah 5: Bersihkan lingkungan

Ketika Anda tidak lagi memerlukan fitur akses data, bersihkan lingkungan untuk menghindari biaya yang tidak perlu.

  1. Jalankan perintah berikut untuk menghapus Job application.

    kubectl delete job demo-app
  2. Jalankan perintah berikut untuk menghapus dataset dan komponen sistem caching terkaitnya.

    kubectl delete dataset demo-dataset
    Penting

    Diperlukan waktu sekitar satu menit untuk membersihkan komponen sistem caching. Pastikan semua pod untuk komponen sistem caching telah sepenuhnya dihapus sebelum melanjutkan.

  3. Jalankan perintah berikut untuk menskalakan turun komponen control plane Fluid.

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

    Jika Anda ingin menggunakan kembali fitur akses data, Anda harus menjalankan perintah berikut terlebih dahulu untuk menskalakan naik komponen control plane Fluid sebelum membuat resource Fluid Dataset dan Runtime.

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