Kontrak runtime container

Halaman ini berisi daftar persyaratan dan perilaku utama container di penayangan Knative.

Bahasa dan gambar yang didukung

Image container Anda dapat menjalankan kode yang ditulis dalam bahasa pemrograman pilihan Anda dan menggunakan image dasar apa pun, asalkan image tersebut mematuhi batasan yang tercantum di halaman ini.

File yang dapat dieksekusi di image container harus dikompilasi untuk Linux 64-bit. Penyertaan Knative secara khusus mendukung format ABI x86_64 Linux.

Memproses permintaan pada port yang benar

Container harus memproses permintaan pada 0.0.0.0 di port tujuan pengiriman permintaan. Secara default, permintaan akan dikirim ke 8080, tetapi Anda dapat mengonfigurasi penayangan Knative untuk mengirim permintaan ke port pilihan Anda.

Di dalam instance penampung penayangan Knative, nilai variabel lingkungan PORT selalu mencerminkan port tujuan pengiriman permintaan. Nilai defaultnya adalah 8080.

Enkripsi lapisan transpor (TLS)

Container tidak boleh menerapkan keamanan lapisan transport secara langsung. TLS dihentikan oleh penayangan Knative untuk HTTPS dan gRPC, lalu permintaan akan di-proxy-kan sebagai HTTP atau gRPC ke penampung tanpa TLS.

Respons

Instance container Anda harus mengirim respons dalam waktu yang ditentukan di setelan waktu tunggu permintaan setelah menerima permintaan, termasuk waktu startup instance container. Jika tidak, permintaan akan berakhir dan error 504 akan ditampilkan.

Variabel lingkungan

Variabel lingkungan berikut akan otomatis ditambahkan ke penampung yang berjalan:

Nama Deskripsi Contoh
PORT Port yang akan diproses oleh server HTTP Anda. 8080
K_SERVICE Nama layanan penayangan Knative yang sedang dijalankan. hello-world
K_REVISION Nama revisi penayangan Knative yang sedang dijalankan. hello-world.1
K_CONFIGURATION Nama konfigurasi penayangan Knative yang membuat revisi. hello-world

Akses sistem file

Sistem file penampung Anda dapat ditulis dan tunduk pada perilaku berikut:

  • Ini adalah sistem file dalam memori, sehingga penulisan ke file ini akan menggunakan memori instance penampung.
  • Data yang ditulis ke sistem file tidak akan bertahan saat instance penampung dihentikan.

Siklus proses instance container

Sebagai respons terhadap permintaan yang masuk, layanan akan otomatis diskalakan ke sejumlah instance container tertentu, yang masing-masing menjalankan image container yang di-deploy.

Jika revisi tidak menerima traffic apa pun, revisi tersebut akan diskalakan ke jumlah minimum instance penampung yang dikonfigurasi (nol secara default).

Memulai

Instance container Anda harus memproses permintaan dalam waktu 4 menit setelah dimulai. Selama waktu startup ini, instance container mendapatkan alokasi CPU.

Komputasi dicakupkan ke permintaan

Setelah memulai, Anda hanya dapat melakukan komputasi dalam cakupan permintaan: instance penampung tidak memiliki CPU yang dialokasikan jika tidak memproses permintaan.

Nonaktif

Instance penampung dapat dimatikan kapan saja.

Saat instance penampung perlu dinonaktifkan, permintaan masuk baru akan dirutekan ke instance lain dan permintaan yang saat ini sedang diproses akan diberi waktu untuk menyelesaikannya. Instance container kemudian menerima sinyal SIGTERM yang menunjukkan dimulainya periode 10 detik sebelum dimatikan (dengan sinyal SIGKILL). Selama periode ini, instance container mendapatkan alokasi CPU dan akan dikenai biaya. Jika instance penampung tidak menangkap sinyal SIGTERM, instance tersebut akan segera dimatikan.

Kecuali jika instance penampung harus dibiarkan tidak beraktivitas karena setelan konfigurasi jumlah minimum instance penampung, maka instance tidak akan dibiarkan menganggur selama lebih dari 15 menit.

Resource instance container

Permintaan resource untuk instance container Anda dijadwalkan di node cluster GKE Anda. Setiap node memiliki jumlah total resource komputasi yang tersedia untuk cluster GKE Anda.

Oleh karena itu, jumlah resource komputasi yang tersedia untuk layanan penayangan Knative hanya dibatasi oleh jumlah resource yang tersedia di node tersebut. Pelajari lebih lanjut resource komputasi untuk permintaan.

Misalnya, jika Anda mengalokasikan memori 512 MiB untuk penampung, dan penampung tersebut berjalan di satu-satunya pod dalam node yang memiliki memori 8 GiB, maka penampung tersebut dapat mencoba menggunakan lebih banyak RAM.

CPU

Secara default, sidecar proxy antrean menyimpan 25 milliCPU dan tidak ada batasan jumlah vCPU yang dapat digunakan layanan penayangan Knative Anda. Penggunaan resource proxy antrean bergantung pada jumlah permintaan yang diantrekan dan ukuran permintaan.

vCPU diimplementasikan sebagai abstraksi hardware dasar untuk memberikan perkiraan waktu CPU yang setara untuk hardware hyper-thread tunggal pada platform CPU variabel. Instance penampung dapat dijalankan di beberapa core secara bersamaan. vCPU hanya dialokasikan selama startup instance container dan pemrosesan permintaan, jika tidak, vCPU akan di-throttle.

Untuk mengalokasikan nilai vCPU yang berbeda, lihat dokumentasi untuk mengalokasikan CPU.

Memori

Secara default, sidecar proxy antrean tidak mencadangkan memori apa pun dan tidak ada batasan jumlah memori yang dapat digunakan layanan penayangan Knative Anda. Jika diinginkan, Anda dapat mengonfigurasi batas memori untuk layanan penayangan Knative. Untuk informasi selengkapnya tentang cara GKE menangani memori, lihat Resource CPU dan memori yang dapat dialokasikan.

Penggunaan umum memori meliputi:

  • Kode yang dimuat ke dalam memori untuk menjalankan layanan
  • Menulis ke sistem file
  • Proses tambahan yang berjalan dalam container seperti server nginx
  • Sistem caching dalam memori seperti PHP OpCache
  • Penggunaan memori per permintaan

Serentak

Setiap instance container penayangan Knative secara default ditetapkan ke beberapa serentak, dengan setiap instance container dapat menerima lebih dari satu permintaan secara bersamaan. Anda dapat mengubahnya dengan menyetel konkurensi.

Sandbox instance container

Penyertaan Knative tidak menggunakan sandbox penampung.

Server metadata instance penampung

Instance penayangan penampung Knative menampilkan server metadata yang dapat Anda gunakan untuk mengambil detail tentang instance penampung, seperti project ID, region, ID instance, atau akun layanan.

Anda dapat mengakses data ini dari server metadata menggunakan permintaan HTTP sederhana ke endpoint http://metadata.google.internal/ dengan header Metadata-Flavor: Google: library klien tidak diperlukan. Untuk mengetahui informasi selengkapnya, baca Mendapatkan metadata.

Tabel berikut mencantumkan beberapa informasi server metadata yang tersedia:

Jalur Deskripsi
/computeMetadata/v1/project/project-id Project ID layanan penayangan Knative ini
/computeMetadata/v1/instance/region Region layanan inferensi Knative ini
/computeMetadata/v1/instance/id ID unik instance penampung (juga tersedia di log).
/computeMetadata/v1/instance/service-accounts/default/token Membuat token untuk akun layanan runtime layanan penayangan Knative ini