Volume dalam memori (layanan)

Halaman ini menjelaskan cara mengonfigurasi volume dalam memori khusus yang dapat Anda gunakan untuk membaca dan menulis file.

Fitur ini berbeda dengan sistem file dalam memori bawaan yang disediakan oleh Cloud Run, yang tidak membatasi memori yang terpakai oleh penulisan file dalam memori. Dengan menggunakan volume dalam memori, Anda dapat membatasi jumlah memori yang dapat dipakai.

Perilaku

Setelah Anda mengonfigurasi volume dalam memori untuk layanan Cloud Run, volume kosong akan dibuat untuk setiap instance Cloud Run yang dimulai, dan tersedia selama instance tersebut berjalan. Saat instance berhenti berjalan, data dalam volume akan dihapus secara permanen.

Jika Anda menentukan batas untuk volume dalam memori, lalu melebihi batas tersebut saat menulis ke volume, Anda akan mengalami error memori tidak cukup, yang dapat ditangani, dan instance akan tetap berjalan. Jika Anda tidak menentukan batas ukuran volume, lalu melebihi batas memori instance saat menulis ke volume, instance akan error.

Kepemilikan volume berbeda-beda berdasarkan lingkungan eksekusi dan jenis deployment

Saat Anda memasang volume, identitas yang memiliki file dan direktori akan berbeda bergantung pada lingkungan eksekusi workload dan apakah deployment terdiri dari satu atau banyak container.

Di lingkungan eksekusi generasi pertama tempat Anda men-deploy satu container, volumenya dimiliki oleh identitas yang digunakan untuk container. Dalam kasus lainnya, volume dimiliki oleh root. Hal ini mencakup:

  • Lingkungan eksekusi generasi pertama tempat Anda men-deploy banyak container
  • Lingkungan generasi kedua

Kasus penggunaan

​ Kasus penggunaan untuk volume dalam memori mencakup alokasi ruang awal atau waktu pemeriksaan komputasi yang panjang untuk mencegah error.

Mengonfigurasi volume dalam memori

Setiap perubahan konfigurasi akan menghasilkan revisi baru. Tiap revisi berikutnya juga akan otomatis mendapatkan setelan konfigurasi ini, kecuali jika Anda mengubahnya secara eksplisit.

Jika Anda menentukan batas ukuran memori untuk volume, memori tersebut akan dialokasikan dari memori yang digunakan oleh semua container individual dalam instance yang mengakses volume ini. Jika Anda menentukan ukuran volume dalam memorinya lebih besar dari jumlah total semua memori yang digunakan oleh container dalam instance, volume akan ditetapkan secara default ke total jumlah yang digunakan oleh container.

Jika batas ukuran memori untuk volume tidak ditentukan, Anda berpotensi melampaui batas memori instance dan akan menyebabkan instance mengalami error.

Jika Anda menggunakan volume dalam memori sebagai volume bersama di deployment multicontainer tanpa menentukan batas ukuran dalam memori, maka setengah dari total memori instance yang tersedia akan dialokasikan untuk volume bersama. Misalnya, ukuran volume emptyDir = [Memori (Container A) + Memori (Container B) + Memori (Container N)]/2.

Konsol

  1. Buka Cloud Run

  2. Klik layanan yang ingin Anda konfigurasi.

  3. Klik tab YAML.

  4. Konfigurasikan atribut volumeMounts dan volumes seperti yang ditunjukkan:

    apiVersion: serving.knative.dev/v1
      kind: Service
      metadata:
      annotations:
        run.googleapis.com/launch-stage: BETA
        name: SERVICE
      spec:
        template:
          metadata:
          spec:
            containers:
            - image: IMAGE_URL
              volumeMounts:
              - mountPath: PATH
                name: VOLUME_NAME
            volumes:
            - name: VOLUME_NAME
              emptyDir:
                sizeLimit: SIZE_LIMIT
                medium: Memory

    ganti

    • SERVICE dengan nama layanan Cloud Run Anda.
    • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, maka repository REPO_NAME harus sudah dibuat. URL memiliki bentuk REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH dengan jalur relatif ke volume, misalnya, /cache.
    • VOLUME_NAME dengan nama yang ingin Anda gunakan untuk volume dalam memori.
    • SIZE_LIMIT dengan batas memori yang ingin Anda tetapkan ke volume, dalam MiB atau GiB (ditetapkan sebagai Mi atau Gi), misalnya, 500Mi. Batas ini harus kurang dari total memori yang ditentukan untuk container Anda.
  5. Klik Save and Deploy new Revision.

YAML

Anda dapat mendownload dan melihat konfigurasi keamanan yang ada menggunakan perintah gcloud run services describe --format export, yang memberikan hasil bersih dalam format YAML. Kemudian Anda dapat mengubah kolom yang dijelaskan di bawah ini dan mengupload YAML yang telah diubah menggunakan perintah gcloud run services replace. Pastikan Anda hanya mengubah kolom seperti yang dicantumkan.

  1. Untuk melihat dan mendownload konfigurasi:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Konfigurasikan atribut volumeMounts dan volumes seperti yang ditunjukkan:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
     annotations:
      run.googleapis.com/launch-stage: BETA
      name: SERVICE
    spec:
      template:
        metadata:
        spec:
          containers:
          - image: IMAGE_URL
            volumeMounts:
            - mountPath: PATH
              name: VOLUME_NAME
          volumes:
          - name: VOLUME_NAME
            emptyDir:
              sizeLimit: SIZE_LIMIT
              medium: Memory

    Ganti:

    • SERVICE dengan nama layanan Cloud Run Anda.
    • IMAGE_URL dengan referensi ke image container, misalnya, us-docker.pkg.dev/cloudrun/container/hello:latest. Jika Anda menggunakan Artifact Registry, maka repository REPO_NAME harus sudah dibuat. URL memiliki bentuk REGION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • PATH dengan jalur relatif ke volume, misalnya, /cache.
    • VOLUME_NAME dengan nama yang ingin Anda gunakan untuk volume dalam memori.
    • SIZE_LIMIT dengan batas memori yang ingin Anda tetapkan ke volume, dalam MiB atau GiB (ditetapkan sebagai Mi atau Gi), misalnya, 500Mi. Batas ini harus kurang dari total memori yang ditentukan untuk container Anda.
  3. Ganti layanan dengan konfigurasi barunya menggunakan perintah berikut:

    gcloud run services replace service.yaml