Halaman ini mencantumkan persyaratan dan perilaku utama container di Penyajian 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. Penyajian 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
semua permintaan akan dikirim. Secara default, permintaan dikirim ke 8080
, tetapi Anda dapat
mengonfigurasi penayangan Knative
untuk mengirim permintaan ke porta pilihan Anda.
Dalam instance penampung penayangan Knative, nilai PORT
variabel lingkungan selalu mencerminkan porta tujuan pengiriman permintaan.
Defaultnya adalah 8080
.
Enkripsi lapisan transpor (TLS)
Container tidak boleh menerapkan keamanan lapisan transport secara langsung. TLS adalah dihentikan oleh penayangan Knative untuk HTTPS dan gRPC, di-proxy-kan sebagai HTTP atau gRPC ke container tanpa TLS.
Respons
Instance penampung Anda harus mengirim respons dalam waktu yang ditentukan di setelan waktu tunggu permintaan setelah aplikasi menerima permintaan, termasuk waktu startup instance container. Jika tidak, permintaan akan berakhir dan error 504 akan ditampilkan.
Variabel lingkungan
Variabel lingkungan berikut secara otomatis ditambahkan ke instance container:
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 inferensi Knative yang sedang dijalankan. | hello-world.1 |
K_CONFIGURATION |
Nama konfigurasi inferensi Knative yang membuat revisi. | hello-world |
Akses sistem file
Sistem file penampung Anda dapat ditulis dan tunduk kepada hal-hal berikut perilaku:
- Ini adalah sistem file dalam memori, jadi menulis ke sistem file menggunakan container dalam memori instance.
- Data yang ditulis ke sistem file tidak akan dipertahankan ketika instance container dihentikan.
Siklus proses instance container
Sebagai respons terhadap permintaan yang masuk, layanan secara otomatis diskalakan ke sejumlah instance container, yang masing-masing menjalankan image container yang di-deploy.
Ketika revisi tidak menerima traffic apa pun, revisi akan diskalakan ke jumlah minimum instance penampung yang dikonfigurasi (nol secara default).
Memulai
Instance container Anda harus memproses permintaan dalam 4 menit setelah dimulai. Selama waktu startup ini, instance container merupakan CPU yang dialokasikan.
Komputasi tercakup dalam permintaan
Setelah startup, Anda seharusnya hanya dapat melakukan komputasi di dalam cakupan permintaan: instance kontainer tidak memiliki CPU yang dialokasikan jika tidak memproses permintaan.
Nonaktif
Instance container dapat dinonaktifkan kapan saja.
Ketika sebuah instance kontainer perlu dimatikan, permintaan masuk yang baru
yang dirutekan ke instance lain dan permintaan yang sedang diproses diberi waktu
untuk diselesaikan.
Instance container kemudian menerima sinyal SIGTERM
menunjukkan awal periode 10 detik
sebelum dimatikan (dengan sinyal SIGKILL
).
Selama periode ini, instance container akan diberi alokasi CPU dan ditagih.
Jika instance container tidak menangkap sinyal SIGTERM
,
langsung mematikannya.
Kecuali jika instance container harus tetap tidak ada aktivitas karena jumlah minimum instance penampung setelan konfigurasi, tidak akan dibiarkan tidak ada aktivitas selama lebih dari 15 menit.
Resource instance container
Permintaan resource untuk instance container Anda dijadwalkan di node dari cluster GKE Anda. Setiap {i>node<i} membagikan jumlah total komputasi yang tersedia untuk cluster GKE Anda.
Oleh karena itu, jumlah resource komputasi yang tersedia Layanan penayangan Knative hanya dibatasi pada jumlah resource dalam node tersebut. Pelajari selengkapnya tentang menghitung resource untuk permintaan.
Misalnya, jika Anda mengalokasikan 512 MiB memori untuk kontainer, container berjalan di satu-satunya pod di dalam node yang memiliki memori 8 GiB, {i>container<i} itu bisa mencoba menggunakan lebih banyak RAM.
CPU
Secara default, isian antrean proxy mencadangkan 25 milliCPU dan tidak ada batasan jumlah vCPU yang dapat digunakan oleh layanan penayangan Knative Anda. Antrean konsumsi sumber daya {i>proxy<i} tergantung pada berapa banyak permintaan yang dimasukkan ke dalam 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. Tujuan vCPU hanya dialokasikan selama startup dan permintaan instance container diproses, proses ini akan di-throttle jika tidak.
Untuk mengalokasikan nilai vCPU yang berbeda, baca dokumentasi untuk mengalokasikan CPU.
Memori
Secara default, isian antrean proxy tidak mencadangkan memori apa pun dan tidak ada batasan jumlah memori yang layanan penyaluran Knative Anda. Jika diinginkan, Anda dapat mengonfigurasi batas memori untuk layanan penyaluran Knative Anda. Untuk informasi selengkapnya tentang cara GKE menangani memori, lihat Memori dan resource CPU 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 penampung penayangan Knative secara default ditetapkan ke beberapa serentak, dengan setiap penampung instance dapat menerima lebih dari satu permintaan secara bersamaan. Anda dapat mengubahnya dengan menyetel konkurensi.
Sandbox instance container
Penayangan Knative tidak menggunakan sandbox container.
Server metadata instance container
Instance penampung penayangan Knative mengekspos server metadata yang dapat Anda gunakan untuk mengambil detail tentang instance container Anda, 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 penyaluran Knative ini |
/computeMetadata/v1/instance/id |
ID unik instance container (juga tersedia di log). |
/computeMetadata/v1/instance/service-accounts/default/token |
Menghasilkan token untuk akun layanan runtime layanan penayangan Knative ini |