全部产品
Search
文档中心

Container Service for Kubernetes:Akselerasi Jobs

更新时间:Jul 06, 2025

Anda dapat menggunakan Fluid untuk mempercepat akses ke data yang disimpan di ACK Serverless cluster. Semua komponen Fluid, termasuk kontroler Fluid dan mesin runtime cache, serta aplikasi Anda, dapat diterapkan di dalam ACK Serverless cluster. Topik ini menjelaskan cara mempercepat Jobs di ACK Serverless cluster.

Prasyarat

Batasan

Fitur ini tidak kompatibel dengan fitur penjadwalan pod berbasis node virtual dari ACK Serverless cluster. Untuk informasi lebih lanjut tentang fitur penjadwalan pod berbasis node virtual, lihat Aktifkan kebijakan penjadwalan pod berbasis node virtual untuk klaster ACK.

Terapkan komponen control plane Fluid

Penting

Jika Anda telah menginstal Fluid sumber terbuka, Anda harus menghapus instalasi tersebut sebelum menginstal komponen ack-fluid.

  1. Terapkan komponen control plane Fluid.

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

    2. Pada halaman Clusters, temukan klaster yang diinginkan dan klik namanya. Di panel kiri, pilih Applications > Helm.

    3. Pada halaman Helm, klik Deploy.

    4. Pada halaman wizard Basic Information, konfigurasikan parameter dan klik Next.

      Tabel berikut menjelaskan beberapa parameter yang ditampilkan.

      Parameter

      Deskripsi

      Sumber

      Pilih Marketplace.

      Chart

      Cari dan klik ack-fluid.

      Catatan

      Nama rilis default untuk chart ack-fluid adalah ack-fluid. Namespace default untuk chart ack-fluid adalah fluid-system. Klik Next. Jika nama rilis aktual dan namespace untuk chart ack-fluid berbeda dari nama rilis default dan namespace default, pesan Confirm akan muncul. Klik Yes untuk menggunakan nama rilis default dan namespace default.

    5. Pada halaman wizard Parameters, klik OK.

  2. Jalankan perintah berikut untuk memeriksa apakah Fluid telah diterapkan:

    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 menunjukkan bahwa Fluid telah diterapkan. Berikut ini adalah deskripsi komponen control plane Fluid:

    • Dataset Controller: mengelola siklus hidup objek Dataset yang direferensikan oleh Fluid. Objek Dataset adalah objek resource kustom (CR).

    • Fluid Webhook: melakukan injeksi sidecar pada pod yang perlu mengakses data. Ini membuat akses data transparan bagi pengguna dalam skenario serverless.

    Catatan

    Selain komponen yang disebutkan di atas, control plane Fluid juga mencakup kontroler yang digunakan untuk mengelola siklus hidup runtime cache, seperti JindoFS runtime, JuiceFS runtime, dan Alluxio runtime. Kontroler yang sesuai dengan runtime cache hanya diterapkan setelah runtime cache digunakan.

Contoh-contoh mempercepat akses data di ACK Serverless cluster

Langkah 1: Unggah dataset uji ke bucket OSS

  1. Buat dataset uji berukuran 2 GB. Dalam contoh ini, dataset uji test digunakan.

  2. Unggah dataset uji ke bucket OSS yang Anda buat.

    Anda dapat menggunakan alat ossutil yang disediakan oleh OSS untuk mengunggah data. Untuk informasi lebih lanjut, lihat Instal ossutil.

Langkah 2: Buat objek Dataset dan objek Runtime

Setelah Anda mengunggah dataset uji ke OSS, Anda dapat menggunakan Fluid untuk mengklaim dataset tersebut. Buat objek Dataset (objek CR) dan objek Runtime (objek CR).

  • Objek Dataset digunakan untuk menentukan URL dataset uji yang diunggah ke OSS.

  • Objek Runtime digunakan untuk mendefinisikan dan mengonfigurasi sistem cache yang digunakan.

  1. Jalankan perintah berikut untuk membuat Secret yang menyimpan kredensial yang digunakan 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 bernama dataset.yaml dan salin konten berikut ke dalam file. File ini digunakan untuk membuat objek Dataset dan objek Runtime.

    Dalam topik ini, JindoRuntime digunakan untuk berinteraksi dengan JindoFS.

    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 pod worker yang akan dibuat di klaster JindoFS. 
      replicas: 2
      worker:
        podMetadata:
          annotations:
            # Nonaktifkan kebijakan penjadwalan pod berbasis node virtual. 
            alibabacloud.com/burst-resource: eci_only
            # Jenis instans yang digunakan untuk menjalankan pod worker. 
            k8s.aliyun.com/eci-use-specs: <eci_instance_spec>
            # Gunakan image cache untuk mempercepat pembuatan pod. 
            k8s.aliyun.com/eci-image-cache: "true"
      tieredstore:
        levels:
          # Tentukan 10 GiB memori sebagai cache untuk setiap pod worker. 
          - mediumtype: MEM
            volumeType: emptyDir
            path: /dev/shm
            quota: 10Gi
            high: "0.99"
            low: "0.99"

    Tabel berikut menjelaskan beberapa parameter yang ditampilkan.

    Parameter

    Deskripsi

    mountPoint

    Path tempat UFS dipasang. Format path adalah oss://<oss_bucket>/<bucket_dir>.

    Jangan sertakan informasi titik akhir dalam path. Jika Anda hanya menggunakan satu titik pemasangan, Anda dapat mengatur path menjadi /.

    options

    Informasi tentang titik akhir bucket OSS. Anda dapat menentukan titik akhir publik atau internal.

    fs.oss.endpoint

    Titik akhir publik atau internal bucket OSS.

    Anda dapat menentukan titik akhir internal bucket untuk meningkatkan keamanan data. Namun, jika Anda menentukan titik akhir internal, pastikan bahwa klaster Anda ditempatkan di wilayah tempat OSS diaktifkan. Sebagai contoh, jika bucket OSS Anda dibuat di wilayah China (Hangzhou), titik akhir publik bucket adalah oss-cn-hangzhou.aliyuncs.com dan titik akhir internalnya adalah oss-cn-hangzhou-internal.aliyuncs.com.

    fs.oss.accessKeyId

    ID AccessKey yang digunakan untuk mengakses bucket.

    fs.oss.accessKeySecret

    Rahasia AccessKey yang digunakan untuk mengakses bucket.

    replicas

    Jumlah pod worker yang dibuat oleh JindoRuntime. Parameter ini menentukan ukuran cache maksimum yang dapat disediakan oleh runtime cache terdistribusi.

    worker.podMetadata.annotations

    Anda dapat menentukan jenis instans dan image cache.

    tieredstore.levels

    Anda dapat menggunakan bidang quota untuk menentukan ukuran maksimum cache yang digunakan oleh setiap pod worker.

    tieredstore.levels.mediumtype

    Jenis cache. Jenis cache yang didukung adalah HDD, SSD, dan MEM.

    Untuk informasi lebih lanjut tentang konfigurasi mediumtype yang direkomendasikan, lihat Kebijakan 2: Pilih media cache yang tepat.

    tieredstore.levels.volumeType

    Tipe volume media cache. Nilai valid: emptyDir dan hostPath. Nilai default: hostPath.

    • Jika Anda menggunakan memori atau disk sistem lokal sebagai media cache, kami sarankan Anda menggunakan tipe emptyDir untuk menghindari data cache residu di node dan memastikan ketersediaan node.

    • Jika Anda menggunakan disk data lokal sebagai media cache, Anda dapat menggunakan tipe hostPath dan mengonfigurasi path untuk menentukan jalur pemasangan disk data pada host.

    Untuk informasi lebih lanjut tentang konfigurasi volumeType yang direkomendasikan, lihat Kebijakan 2: Pilih media cache yang tepat.

    tieredstore.levels.path

    Path cache. Anda hanya dapat menentukan satu path.

    tieredstore.levels.quota

    Ukuran cache maksimum. Sebagai contoh, nilai 100 Gi menunjukkan bahwa ukuran cache maksimum adalah 100 GiB.

    tieredstore.levels.high

    Batas atas penyimpanan.

    tieredstore.levels.low

    Batas bawah penyimpanan.

  3. Jalankan perintah berikut untuk membuat objek Dataset dan objek JindoRuntime:

    kubectl create -f dataset.yaml
  4. Jalankan perintah berikut untuk memeriksa apakah objek Dataset telah dibuat.

    Membutuhkan waktu 1 hingga 2 menit untuk membuat objek Dataset dan objek JindoRuntime. Setelah objek dibuat, Anda dapat menanyakan informasi tentang sistem cache dan data yang di-cache.

    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 menunjukkan informasi tentang objek Dataset yang Anda buat di Fluid. Tabel berikut menjelaskan parameter dalam output.

    Parameter

    Deskripsi

    UFS TOTAL SIZE

    Ukuran dataset yang diunggah ke OSS.

    CACHED

    Ukuran data yang di-cache.

    CACHE CAPACITY

    Total ukuran cache.

    CACHED PERCENTAGE

    Persentase data yang di-cache dalam dataset.

    PHASE

    Status objek Dataset. Jika nilainya adalah Bound, objek Dataset telah dibuat.

(Opsional) Langkah 3: Pra-pemanasan data

Pra-fetching dapat secara efisien mempercepat akses data pertama kali. Kami merekomendasikan Anda menggunakan fitur ini jika ini adalah pertama kalinya Anda mengambil data.

  1. Buat file bernama dataload.yaml berdasarkan konten berikut:

    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 membuat objek DataLoad:

    kubectl create -f dataload.yaml

    Output yang diharapkan:

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

    Output menunjukkan bahwa durasi pra-pemanasan data adalah 58 detik.

Langkah 4: Buat Job untuk menguji akselerasi akses data

Anda dapat membuat aplikasi untuk menguji apakah akses data dipercepat oleh JindoFS, atau mengirimkan Jobs pembelajaran mesin untuk menggunakan fitur terkait. Bagian ini menjelaskan cara menggunakan Job untuk mengakses data yang disimpan di OSS.

  1. Buat file bernama job.yaml dan salin konten berikut ke dalam file:

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: demo-app
    spec:
      template:
        metadata:
          labels:
            alibabacloud.com/fluid-sidecar-target: eci
          annotations:
            # Nonaktifkan kebijakan penjadwalan pod berbasis node virtual. 
            alibabacloud.com/burst-resource: eci_only
            # Pilih jenis instans untuk pod. 
            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 menanyakan log boot dari pod yang dibuat oleh Job:

    kubectl logs demo-app-jwktf -c demo

    Output yang diharapkan:

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

    Bidang real dalam output menunjukkan bahwa dibutuhkan waktu 0,992 detik (0m0.992s) untuk mereplikasi file.

Langkah 5: Bersihkan data

Setelah Anda menguji akselerasi akses data, bersihkan data terkait sesegera mungkin.

  1. Jalankan perintah berikut untuk menghapus pod dari Job:

    kubectl delete job demo-app
  2. Jalankan perintah berikut untuk menghapus objek Dataset dan komponen yang sesuai dengan runtime cache.

    kubectl delete dataset demo-dataset
    Penting

    Membutuhkan sekitar 1 menit untuk menghapus komponen. Sebelum melakukan langkah berikutnya, pastikan bahwa komponen telah dihapus.

  3. Jalankan perintah berikut untuk menghapus 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

    Untuk mengaktifkan akselerasi akses data lagi, Anda harus menjalankan perintah berikut untuk membuat komponen control plane Fluid sebelum membuat objek Dataset dan objek Runtime:

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