All Products
Search
Document Center

Container Service for Kubernetes:Percepat akses OSS dari node edge dengan Fluid

Last Updated:Aug 21, 2026

Dalam skenario edge, mesin akselerasi dataset Fluid dapat secara signifikan meningkatkan akses file OSS dari node edge. Topik ini menjelaskan cara menggunakan akselerasi data Fluid di kluster ACK Edge.

Prasyarat

  • Kluster ACK Edge versi 1.18 atau lebih baru telah dibuat.

  • Kelompok node edge telah dibuat dan node edge telah ditambahkan.

  • Suite AI cloud-native telah diinstal dengan add-on ack-fluid yang dideploy.

    Penting

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

    • Jika suite AI cloud-native belum diinstal: aktifkan Fluid data acceleration saat Anda menginstal suite tersebut.

    • Jika suite AI cloud-native sudah diinstal: deploy ack-fluid pada halaman Cloud-native AI Suite di ACK Console.

  • Kluster telah terhubung dengan kubectl.

  • OSS telah diaktifkan.

Langkah 1: Siapkan data OSS

  1. Unduh data uji ke instance ECS.

    wget https://archive.apache.org/dist/spark/spark-3.0.1/spark-3.0.1-bin-hadoop2.7.tgz
  2. Unggah data uji yang telah diunduh ke bucket OSS.

    Penting

    Langkah-langkah ini menggunakan Alibaba Cloud Linux 3.2104 LTS 64-bit. Untuk sistem lainnya, lihat ossutil quick start dan ossutil command reference 1.0.

    1. Instal ossutil.

    2. Buat bucket bernama examplebucket.

      • Buat examplebucket.

        ossutil mb oss://examplebucket
      • examplebucket berhasil dibuat:

        0.668238(s) elapsed
    3. Unggah data uji ke examplebucket.

      ossutil cp spark-3.0.1-bin-hadoop2.7.tgz oss://examplebucket

Langkah 2: Buat Dataset dan JindoRuntime

  1. Buat file bernama mySecret.yaml dengan konten berikut. Ganti xxx dengan ID AccessKey dan Rahasia AccessKey yang memiliki akses baca ke bucket OSS yang Anda buat di Langkah 1.

    apiVersion: v1
    kind: Secret
    metadata:
      name: mysecret
    stringData:
      fs.oss.accessKeyId: xxx
      fs.oss.accessKeySecret: xxx
  2. Terapkan Secret tersebut. Kubernetes mengenkripsi nilai yang disimpan sehingga tidak terekspos sebagai teks biasa.

    kubectl create -f mySecret.yaml
  3. Buat file resource.yaml dengan konten berikut:

    • Definisikan Dataset yang menggambarkan penyimpanan remote dan sistem file dasar (UFS).

    • Buat JindoRuntime untuk meluncurkan kluster JindoFS guna caching data.

    apiVersion: data.fluid.io/v1alpha1
    kind: Dataset
    metadata:
      name: hadoop
    spec:
      nodeAffinity:
        required:
          nodeSelectorTerms:
            - matchExpressions:
              - key: alibabacloud.com/nodepool-id
                operator: In
                values:
                  - npxxxxxxxxxxxxxx
      mounts:
        - mountPoint: oss://<oss_bucket>/<bucket_dir>
          options:
            fs.oss.endpoint: <oss_endpoint>
          name: hadoop
          path: "/"
          encryptOptions:
            - name: fs.oss.accessKeyId
              valueFrom:
                secretKeyRef:
                  name: mysecret
                  key: fs.oss.accessKeyId
            - name: fs.oss.accessKeySecret
              valueFrom:
                secretKeyRef:
                  name: mysecret
                  key: fs.oss.accessKeySecret
    ---
    apiVersion: data.fluid.io/v1alpha1
    kind: JindoRuntime
    metadata:
      name: hadoop
    spec:
      nodeSelector:
        alibabacloud.com/nodepool-id: npxxxxxxxxxxxxxx
      replicas: 2
      tieredstore:
        levels:
          - mediumtype: MEM
            path: /dev/shm
            volumeType: emptyDir
            quota: 2Gi
            high: "0.99"
            low: "0.95"
    Catatan
    • Dalam kluster ACK Edge, gunakan nodeAffinity dan nodeSelector untuk mendeploy Dataset dan JindoRuntime ke kelompok node yang sama agar node dalam kelompok tersebut dapat berkomunikasi.

    • Manajemen node edge dan akses OSS keduanya memerlukan komunikasi cloud-to-edge. Pertahankan lebar pita jaringan yang cukup untuk menghindari ketidakstabilan saluran kontrol.

    Parameter:

    Parameter

    Deskripsi

    mountPoint

    oss://<oss_bucket>/<bucket_dir>. Jalur mount UFS. Harus mengarah ke direktori. File tunggal tidak dapat dimount. Jangan sertakan endpoint.

    fs.oss.endpoint

    Endpoint publik atau internal bucket OSS. Lihat Regions and endpoints.

    replicas

    Jumlah worker dalam kluster caching JindoFS.

    mediumtype

    Media penyimpanan cache. Nilai yang valid: HDD, SSD, MEM.

    path

    Jalur penyimpanan lokal pada node pekerja. Hanya satu jalur yang diperbolehkan. Wajib ditentukan saat mediumtype adalah MEM untuk menyimpan data seperti log.

    quota

    Ukuran cache maksimum per worker. Anda tidak dapat memperluas kapasitas cache dengan mengubah quota. Setelah Anda mengubah nilainya, JindoRuntime melaporkan perubahan tersebut sebagai sukses, tetapi kapasitas cache baru tidak berlaku pada Dataset. Untuk mengubah kapasitas cache, hapus CR JindoRuntime dan buat kembali.

    high

    Ambang batas eviksi cache (watermark tinggi). Ketika penggunaan melebihi rasio ini, eviksi dimulai.

    low

    Ambang batas retensi cache (watermark rendah). Eviksi berhenti ketika penggunaan turun ke rasio ini.

  4. Buat Dataset dan JindoRuntime.

    kubectl create -f resource.yaml
  5. Verifikasi bahwa Dataset telah terikat.

    kubectl get dataset hadoop

    Output yang diharapkan:

    NAME     UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
    hadoop        210MiB       0.00B    4.00GiB              0.0%          Bound   1h
  6. Verifikasi bahwa JindoRuntime siap.

    kubectl get jindoruntime hadoop

    Output yang diharapkan:

    NAME     MASTER PHASE   WORKER PHASE   FUSE PHASE   AGE
    hadoop   Ready          Ready          Ready        4m45s
  7. Verifikasi bahwa volume persisten (PV) dan klaim volume persisten (PVC) telah dibuat.

    kubectl get pv,pvc

    Output yang diharapkan:

    NAME                              CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM            STORAGECLASS   REASON   AGE
    persistentvolume/default-hadoop   100Pi      ROX            Retain           Bound    default/hadoop                           52m
    
    NAME                           STATUS   VOLUME            CAPACITY   ACCESS MODES   STORAGECLASS   AGE
    persistentvolumeclaim/hadoop   Bound    default-hadoop    100Pi      ROX                           52m

Dataset dan JindoRuntime siap digunakan ketika semua fase menunjukkan Ready dan status PVC adalah Bound.

Langkah 3: Uji akselerasi akses data

Deploy pod yang memasang PVC Dataset dan bandingkan waktu baca file sebelum dan sesudah data dicache.

  1. Buat file app.yaml:

    apiVersion: v1
    kind: Pod
    metadata:
      name: demo-app
    spec:
      nodeSelector:
        alibabacloud.com/nodepool-id: npxxxxxxxxxxxxx
      containers:
        - name: demo
          image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
          volumeMounts:
            - mountPath: /data
              name: hadoop
      volumes:
        - name: hadoop
          persistentVolumeClaim:
            claimName: hadoop
    Catatan

    Dalam kluster ACK Edge, gunakan nodeSelector untuk mendeploy pod uji ke kelompok node di Langkah 2.

  2. Deploy pod tersebut.

    kubectl create -f app.yaml
  3. Buka shell di dalam pod dan periksa ukuran file.

    kubectl exec -it demo-app -- bash
    du -sh /data/hadoop/spark-3.0.1-bin-hadoop2.7.tgz

    Output yang diharapkan:

    210M    /data/hadoop/spark-3.0.1-bin-hadoop2.7.tgz
  4. Ukur waktu baca awal. Akses ini langsung dari OSS, tanpa cache.

    time cp /data/hadoop/spark-3.0.1-bin-hadoop2.7.tgz /dev/null

    Output yang diharapkan:

    real    0m18.386s
    user    0m0.002s
    sys    0m0.105s

    Membaca file membutuhkan waktu sekitar 18 detik.

  5. Periksa data yang telah dicache setelah pembacaan.

    kubectl get dataset hadoop

    Output yang diharapkan:

    NAME     UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
    hadoop   210.00MiB       210.00MiB    4.00GiB        100.0%           Bound   1h

    Seluruh 210 MiB kini telah dicache di penyimpanan lokal.

  6. Hapus dan buat ulang pod untuk membersihkan cache halaman OS, sehingga pembacaan berikutnya berasal dari cache JindoFS, bukan dari memori.

    kubectl delete -f app.yaml && kubectl create -f app.yaml
  7. Ukur kembali waktu baca dengan data yang disajikan dari cache.

    kubectl exec -it demo-app -- bash
    time cp /data/hadoop/spark-3.0.1-bin-hadoop2.7.tgz /dev/null

    Output yang diharapkan:

    real    0m0.048s
    user    0m0.001s
    sys     0m0.046s

    Dengan cache JindoFS, pembacaan file yang sama selesai dalam 48 milidetik — lebih dari 300 kali lebih cepat dibandingkan akses langsung ke OSS.

(Opsional) Pembersihan

Jika akselerasi data tidak lagi diperlukan, hapus pod, Dataset, dan JindoRuntime.

Hapus pod:

kubectl delete pod demo-app

Hapus Dataset dan JindoRuntime:

kubectl delete dataset hadoop