Dokumen ini menjelaskan cara mengonfigurasi penyajian Knative yang berjalan di Google Kubernetes Engine (GKE) untuk menggunakan GKE Sandbox untuk meningkatkan isolasi beban kerja dari kernel host.
Tujuan
- Pelajari cara mengaktifkan GKE Sandbox di cluster inferensi Knative Anda.
- Deploy layanan yang ditentukan untuk dijalankan pada node dengan sandbox.
Biaya
Dalam dokumen ini, Anda menggunakan komponen Google Cloud yang dapat ditagih berikut:
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda,
gunakan kalkulator harga.
Sebelum memulai
- Tutorial ini mengasumsikan bahwa Anda telah menginstal dan mengonfigurasi layanan Knative pada cluster.
- Pastikan lingkungan command line Anda sudah disiapkan dan alatnya adalah yang terbaru:
Menambahkan kumpulan node GKE Sandbox ke Cluster penayangan Knative yang sudah ada
Ikuti langkah-langkah untuk menambahkan node pool yang diaktifkan untuk menggunakan GKE Sandbox ke cluster inferensi Knative yang sudah ada. Di sinilah workload yang Anda pilih untuk dijalankan menggunakan GKE Sandbox.
Men-deploy workload di node pool GKE Sandbox
Setelah Anda memiliki cluster GKE dengan kumpulan node yang mendukung GKE Sandbox, update konfigurasi inferensi Knative Anda. Selain itu, perbarui setiap spesifikasi layanan untuk memanfaatkan node baru. Pembaruan ini hanya diperlukan satu kali.
Mengaktifkan tombol fitur class runtime
Di bagian ini, Anda akan mengaktifkan class runtime Kubernetes menggunakan fitur Knative dan flag ekstensi di config-features
ConfigMap di namespace knative-serving
. Untuk mengaktifkan class runtime, tetapkan flag ConfigMap kubernetes.podspec-runtimeclassname
ke enabled
. Untuk mengetahui informasi selengkapnya, baca class runtime Kubernetes dan Mengonfigurasi flag dalam dokumentasi Fitur dan ekstensi Knative.
Buka ConfigMap
config-features
untuk mengedit:kubectl edit configmap config-features -n knative-serving
Tambahkan tombol fitur
kubernetes.podspec-runtimeclassname: enabled
ke kolomdata
.Sebagai alternatif langkah sebelumnya, Anda dapat menjalankan perintah berikut untuk mem-patch flag ini ke fitur Knative Anda:
kubectl patch configmap config-features \ --type='json' \ -p="[{'op': 'replace', 'path': '/data/kubernetes.podspec-runtimeclassname', 'value': 'enabled'}]" \ -n knative-serving
Untuk memverifikasi hasil edit Anda, jalankan perintah berikut untuk melihat ConfigMap:
kubectl get configmap config-features -n knative-serving -o yaml
ConfigMap akan terlihat seperti berikut:
apiVersion: v1 kind: ConfigMap metadata: name: config-features namespace: knative-serving labels: serving.knative.dev/release: v0.22.0 data: kubernetes.podspec-runtimeclassname: enabled
Men-deploy Layanan yang dikonfigurasi untuk dijalankan di GKE Sandbox
Setelah mengaktifkan flag fitur class runtime, Anda dapat membuat Layanan
yang menentukan runtimeClassName
dalam spesifikasi. Setel runtimeClassName
ke
gvisor
untuk menunjukkan bahwa layanan harus dijalankan di kumpulan node GKE Sandbox.
Deploy aplikasi Knative "Hello World" dengan menjalankan perintah berikut:
cat <<EOF | kubectl apply -f - apiVersion: serving.knative.dev/v1 kind: Service metadata: name: helloworld-go spec: template: spec: runtimeClassName: gvisor containers: - image: gcr.io/knative-samples/helloworld-go env: - name: TARGET value: "gVisor User" EOF
Jika fitur nama class runtime Kubernetes diaktifkan, perintah akan selesai tanpa error.
Jalankan pod untuk layanan Anda beserta class runtime-nya yang telah dikonfigurasi dengan menjalankan:
kubectl get pods \ -o=custom-columns='NAME:.metadata.name,RUNTIME CLASS:.spec.runtimeClassName,STATUS:.status.phase'
Output akan terlihat seperti berikut:
NAME RUNTIME CLASS STATUS helloworld-go-00001-deployment-55f58477f-fxm6m gvisor Running
Langkah selanjutnya
Setelah memastikan bahwa Anda dapat men-deploy aplikasi tidak tepercaya di node pool GKE Sandbox yang baru dibuat, Anda siap menambahkan runtimeClassName: gvisor
ke spesifikasi Kubernetes untuk layanan tidak tepercaya lainnya yang ingin Anda jalankan di node pool GKE Sandbox.
Bacaan tambahan:
- Dokumentasi GKE Sandbox untuk memahami batasan yang dapat merusak kompatibilitas dengan beberapa layanan.
- Dokumen gVisor tentang men-deploy layanan Knative untuk panduan yang lebih terperinci terkait cara men-deploy aplikasi Knative di gVisor (juga disebut GKE Sandbox).