Mengonfigurasi pemasangan volume NFS untuk kumpulan pekerja

Halaman ini menunjukkan cara memasang file share NFS sebagai volume di Cloud Run. Anda dapat menggunakan server NFS apa pun, termasuk server NFS Anda sendiri yang dihosting di infrastruktur lokal, atau di VM Compute Engine. Jika Anda belum memiliki server NFS, sebaiknya gunakan Filestore, yang merupakan penawaran NFS yang terkelola sepenuhnya dari Google Cloud.

Memasang file share NFS sebagai volume di Cloud Run akan menampilkan file share sebagai file dalam sistem file container. Setelah memasang berbagi file sebagai volume, Anda dapat mengaksesnya seolah-olah itu adalah direktori di sistem file lokal, menggunakan operasi dan library sistem file bahasa pemrograman Anda.

Batasan

  • Cloud Run tidak mendukung penguncian NFS. Volume NFS otomatis dipasang dalam mode tanpa kunci.
  • Jalur yang tidak diizinkan: Cloud Run tidak mengizinkan Anda memasang volume di /dev, /proc, atau /sys, atau di subdirektorinya.

Sebelum memulai

Untuk memasang server NFS sebagai volume di Cloud Run, pastikan Anda memiliki hal berikut:

  • Jaringan VPC tempat server NFS atau instance Filestore Anda berjalan.
  • Server NFS yang berjalan di jaringan VPC, dengan pool worker Cloud Run Anda terhubung ke jaringan VPC tersebut. Jika Anda belum memiliki server NFS, buat server dengan membuat instance Filestore.
  • Worker pool Cloud Run Anda terpasang ke jaringan VPC tempat server NFS Anda berjalan. Untuk performa terbaik, gunakan Direct VPC, bukan Konektor VPC.
  • Jika Anda menggunakan project yang sudah ada, pastikan konfigurasi Firewall VPC Anda memungkinkan Cloud Run menjangkau server NFS Anda. (Jika Anda memulai dari project baru, hal ini berlaku secara default.) Jika Anda menggunakan Filestore sebagai server NFS, ikuti dokumentasi Filestore untuk membuat Aturan egress firewall agar Cloud Run dapat menjangkau Filestore.
  • Tetapkan izin pada berbagi file NFS jarak jauh Anda untuk mengizinkan akses bagi pengguna container. Secara default, Filestore memberikan akses baca kepada semua pengguna, tetapi membatasi akses tulis ke pengguna root (uid 0). Jika container Anda memerlukan akses tulis dan tidak berjalan sebagai pengguna root, Anda harus menggunakan klien yang terhubung (berjalan sebagai root) untuk mengubah izin berbagi. Misalnya, Anda dapat menggunakan perintah chown untuk mengubah kepemilikan file atau direktori ke ID pengguna tertentu yang dijalankan oleh container Anda.

Peran yang diperlukan

Untuk mengetahui daftar peran dan izin IAM yang terkait dengan Cloud Run, lihat peran IAM Cloud Run dan izin IAM Cloud Run. Jika kumpulan worker Cloud Run Anda berinteraksi dengan APIGoogle Cloud , seperti Library Klien Cloud, lihat panduan konfigurasi identitas layanan. Untuk mengetahui informasi selengkapnya tentang cara memberikan peran, lihat izin deployment dan mengelola akses.

Memasang volume NFS

Anda dapat memasang beberapa server NFS, instance Filestore, atau jenis volume lainnya di jalur pemasangan yang berbeda.

Jika Anda menggunakan beberapa container, tentukan volume terlebih dahulu, lalu tentukan pemasangan volume untuk setiap container.

Konfigurasikan pemasangan volume NFS menggunakan konsol Google Cloud , Google Cloud CLI, YAML, atau Terraform.

Konsol

  1. Di konsol Google Cloud , buka halaman Cloud Run:

    Buka Cloud Run

  2. Pilih Worker pools dari menu navigasi Cloud Run:

    1. Jika Anda mengonfigurasi worker pool yang ada, klik worker pool, lalu klik Edit dan deploy revisi baru.

    2. Jika Anda mengonfigurasi worker pool baru, klik Deploy container, lalu isi halaman worker pool awal. Kemudian, klik Containers, Networking, Security untuk meluaskan halaman konfigurasi worker pool.

  3. Klik tab Volumes.

  4. Klik Mount volume.

  5. Klik NFS sebagai jenis volume.

  6. Konfigurasi volume dengan melakukan hal berikut:

    1. Di kolom Mount path, masukkan jalur tempat Anda ingin memasang volume.
    2. Di kolom NFS server, masukkan nama domain atau lokasi (dalam format IP_ADDRESS) dari file share NFS.
    3. Di kolom Path, masukkan jalur ke direktori server NFS yang ingin Anda pasang.
    4. Klik Simpan.
  7. Klik Buat atau Deploy.

gcloud

  • Untuk menambahkan pemasangan volume:

    gcloud run worker-pools update WORKER_POOL \
    --add-volume mount-path=MOUNT_PATH,type=nfs,location=IP_ADDRESS:NFS_PATH,readonly=READ_ONLY

    Ganti kode berikut:

    • WORKER_POOL: nama worker pool Anda.
    • MOUNT_PATH: jalur relatif tempat Anda memasang volume, misalnya, /mnt/my-volume.
    • IP_ADDRESS: lokasi berbagi file NFS.
    • NFS_PATH: jalur ke file share NFS yang dimulai dengan garis miring—misalnya /example-directory.
    • READ_ONLY: true untuk membuat volume hanya baca, atau false untuk mengizinkan penulisan.
  • Jika Anda menggunakan beberapa container, tentukan volume terlebih dahulu, lalu tentukan pemasangan volume untuk setiap container:

    gcloud run worker-pools update WORKER_POOL \
      --add-volume name=VOLUME_NAME,type=nfs,location=IP_ADDRESS:NFS_PATH \
      --container=CONTAINER_1 \
      --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH \
      --container=CONTAINER_2 \
      --add-volume-mount volume=VOLUME_NAME,mount-path=MOUNT_PATH2

YAML

  1. Jika Anda membuat worker pool baru, lewati langkah ini. Jika Anda mengupdate worker pool yang ada, download konfigurasi YAML-nya:

    gcloud run worker-pools describe WORKER_POOL --format export > worker-pool.yaml
  2. Contoh berikut berisi konfigurasi YAML:

    apiVersion: run.googleapis.com/v1
    kind: WorkerPool
    metadata:
      name: WORKER_POOL
    spec:
      template:
        spec:
          containers:
          - name: CONTAINER_NAME
            image: IMAGE_URL
            volumeMounts:
            - name: VOLUME_NAME
              mountPath: MOUNT_PATH
          volumes:
          - name: VOLUME_NAME
            nfs:
              server: IP_ADDRESS
              path: NFS_PATH
              readOnly: IS_READ_ONLY

    Ganti kode berikut:

    • WORKER_POOL: nama worker pool Cloud Run Anda.
    • CONTAINER_NAME: nama container.
    • IMAGE_URL: referensi ke image container yang berisi worker pool, seperti us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • VOLUME_NAME: nama apa pun yang Anda inginkan untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
    • MOUNT_PATH: jalur relatif tempat Anda memasang volume—misalnya, /mnt/my-volume.
    • IP_ADDRESS: alamat berbagi file NFS.
    • NFS_PATH: jalur ke file share NFS yang dimulai dengan garis miring—misalnya, /example-directory.
    • IS_READ_ONLY: True untuk membuat volume hanya baca, atau False untuk mengizinkan penulisan.
  3. Buat atau update worker pool menggunakan perintah berikut:

    gcloud run worker-pools replace worker-pool.yaml

    Perintah gcloud run worker-pools replace secara default menggunakan file worker-pool.yaml jika ada.

Terraform

Untuk mempelajari cara menerapkan atau menghapus konfigurasi Terraform, lihat Perintah dasar Terraform.

resource "google_cloud_run_v2_worker_pool" "default" {
  name = "WORKER_POOL"
  location = "REGION"

  template {
    containers {
      image = "IMAGE_URL"
      volume_mounts {
        name       = "VOLUME_NAME"
        mount_path = "MOUNT_PATH"
      }
    }
    vpc_access {
      network_interfaces {
        network    = "default"
        subnetwork = "default"
      }
    }

    volumes {
      name = "VOLUME_NAME"
      nfs {
        server    = google_filestore_instance.default.networks[0].ip_addresses[0]
        path      = "NFS_PATH"
        read_only = "IS_READ_ONLY"
      }
    }
  }
}

resource "google_filestore_instance" "default" {
  name     = "cloudrun-worker-pool"
  location = "REGION"
  tier     = "BASIC_HDD"

  file_shares {
    capacity_gb = 1024
    name        = "share1"
  }

  networks {
    network = "default"
    modes   = ["MODE_IPV4"]
  }
}

Ganti kode berikut:

  • WORKER_POOL: nama worker pool.
  • REGION: region Google Cloud —misalnya, europe-west1.
  • IMAGE_URL: referensi ke image container yang berisi worker pool, seperti us-docker.pkg.dev/cloudrun/container/worker-pool:latest.
  • VOLUME_NAME: nama untuk volume Anda. Nilai VOLUME_NAME digunakan untuk memetakan volume ke pemasangan volume.
  • MOUNT_PATH: jalur relatif tempat Anda memasang volume—misalnya, /mnt/my-volume.
  • NFS_PATH: jalur ke file share NFS.
  • IS_READ_ONLY: True untuk membuat volume hanya baca, atau False untuk mengizinkan penulisan.

Melihat konfigurasi variabel lingkungan untuk worker pool

  1. Di konsol Google Cloud , buka Cloud Run:

    Buka Cloud Run

  2. Klik Worker pools untuk menampilkan daftar worker pool yang di-deploy.

  3. Klik worker pool yang ingin Anda periksa untuk menampilkan panel detailnya.

  4. Klik tab Containers untuk menampilkan konfigurasi container worker pool.

Memecahkan masalah NFS

Jika Anda mengalami masalah, periksa hal berikut:

  • Worker pool Cloud Run Anda terhubung ke jaringan VPC tempat server NFS berada.
  • Tidak ada aturan firewall yang mencegah Cloud Run menjangkau server NFS.
  • Jika container Anda perlu menulis data, pastikan izin berbagi NFS dikonfigurasi untuk mengizinkan penulisan dari pengguna container Anda.

Waktu startup container dan pemasangan volume NFS

Menggunakan pemasangan volume NFS dapat sedikit meningkatkan waktu cold start container Cloud Run Anda karena pemasangan volume dimulai sebelum memulai container. Container Anda hanya akan dimulai jika NFS berhasil dipasang.

Perhatikan bahwa NFS berhasil memasang volume hanya setelah membuat koneksi ke server dan mengambil proses penanganan file. Jika Cloud Run gagal membuat koneksi ke server, worker pool Cloud Run akan gagal dimulai.

Selain itu, penundaan jaringan dapat berdampak pada waktu startup container karena Cloud Run memiliki total waktu tunggu 30 detik untuk semua pemasangan. Jika NFS memerlukan waktu lebih dari 30 detik untuk dipasang, worker pool Cloud Run akan gagal dimulai.

Karakteristik performa NFS

Jika Anda membuat lebih dari satu volume NFS, semua volume akan dipasang secara paralel.

Karena NFS adalah sistem file jaringan, NFS tunduk pada batas bandwidth dan akses ke sistem file dapat dipengaruhi oleh bandwidth yang terbatas.

Saat Anda menulis ke volume NFS, penulisan disimpan di memori Cloud Run hingga data dihapus. Data akan dihapus dalam situasi berikut:

  • Aplikasi Anda menghapus data file secara eksplisit menggunakan sync(2), msync(2), atau fsync(3).
  • Aplikasi Anda menutup file dengan close(2).
  • Tekanan memori memaksa reklamasi resource memori sistem.

Untuk mengetahui informasi selengkapnya, lihat dokumentasi Linux tentang NFS.

Menghapus volume dan pemasangan volume

Anda dapat menghapus semua volume dan pemasangan atau Anda dapat menghapus volume dan pemasangan volume satu per satu.

Menghapus semua volume dan pemasangan volume

Untuk menghapus semua volume dan pemasangan volume dari worker pool container tunggal, jalankan perintah berikut:

gcloud run worker-pools update WORKER_POOL \
    --clear-volumes \
    --clear-volume-mounts
Jika Anda memiliki beberapa container, ikuti konvensi CLI sidecar untuk menghapus volume dan pemasangan volume:

gcloud run worker-pools update WORKER_POOL \
    --container=container1 \
    --clear-volumes \
    --clear-volume-mounts \
    --container=container2 \
    --clear-volumes \
    --clear-volume-mounts

Menghapus setiap volume dan pemasangan volume

Untuk menghapus volume, Anda juga harus menghapus semua pemasangan volume yang menggunakan volume tersebut.

Untuk menghapus setiap volume atau pemasangan volume, gunakan flag remove-volume dan remove-volume-mount:

gcloud run worker-pools update WORKER_POOL \
    --remove-volume VOLUME_NAME \
    --container=container1 \
    --remove-volume-mount MOUNT_PATH \
    --container=container2 \
    --remove-volume-mount MOUNT_PATH