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 |