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. Layanan Knative secara khusus mendukung format ABI x86_64 Linux.
Memproses permintaan pada port yang benar
Container harus memproses permintaan di 0.0.0.0
pada 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 container 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 di-proxy-kan sebagai HTTP atau gRPC ke container 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 container 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 container 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 container dihentikan.
Siklus proses instance container
Sebagai respons terhadap permintaan yang masuk, layanan secara 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 container yang dikonfigurasi (nol secara default).
Memulai
Instance container Anda harus memproses permintaan dalam waktu 4 menit setelah dimulai. Selama waktu startup ini, instance container diberi alokasi CPU.
Komputasi dicakup ke permintaan
Setelah startup, Anda hanya dapat melakukan komputasi dalam cakupan permintaan: instance container tidak memiliki CPU yang dialokasikan jika tidak memproses permintaan.
Nonaktif
Instance penampung dapat dimatikan kapan saja.
Saat instance container 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 container tidak menangkap sinyal SIGTERM
, instance tersebut akan segera dimatikan.
Kecuali jika instance container harus dibiarkan tidak beraktivitas karena setelan konfigurasi jumlah minimum instance container, 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 berbagi total jumlah resource komputasi yang tersedia untuk cluster GKE Anda.
Oleh karena itu, jumlah resource komputasi yang tersedia untuk layanan penyajian 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 container, dan container tersebut berjalan di satu-satunya pod dalam node yang memiliki memori 8 GiB, maka container tersebut dapat mencoba menggunakan lebih banyak RAM.
CPU
Secara default, sidecar proxy antrean mencadangkan 25 milliCPU dan tidak ada batasan jumlah vCPU yang dapat digunakan oleh 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 container dapat dijalankan di beberapa core secara bersamaan. vCPU hanya dialokasikan selama startup instance container dan pemrosesan permintaan, dan akan di-throttle jika tidak.
Untuk mengalokasikan nilai vCPU yang berbeda, lihat dokumentasi tentang mengalokasikan CPU.
Memori
Secara default, sidecar proxy antrean tidak mencadangkan memori dan tidak ada batasan jumlah memori yang dapat digunakan oleh layanan penayangan Knative Anda. Jika diinginkan, Anda dapat mengonfigurasi batas memori untuk layanan penayangan Knative. Untuk mengetahui 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 OpCache PHP
- Penggunaan memori per permintaan
Serentak
Setiap instance container layanan Knative secara default ditetapkan ke beberapa konkurensi, dengan setiap instance container dapat menerima lebih dari satu permintaan secara bersamaan. Anda dapat mengubahnya dengan menyetel konkurensi.
Sandbox instance container
Layanan Knative tidak menggunakan sandbox container.
Server metadata instance container
Instance container layanan Knative menampilkan server metadata yang dapat Anda gunakan untuk mengambil detail tentang instance container, 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 container (juga tersedia di log). |
/computeMetadata/v1/instance/service-accounts/default/token |
Membuat token untuk akun layanan runtime dari layanan penayangan Knative ini |