AWC memperkenalkan Firecracker - virtualisasi mikro untuk Linux



Di AWS re: Invent 2018, yang sedang berlangsung hari ini di Las Vegas, pengumuman Firecracker , sebuah teknologi virtualisasi open source baru berbasis Linux KVM, berlangsung . Para penulis berjanji bahwa dengan itu, "dalam sepersekian detik, Anda dapat menjalankan mesin micro-virtual ringan (microVMs) dalam lingkungan non-virtual, mendapatkan keuntungan dari VM tradisional - dalam bentuk keamanan dan isolasi beban kerja, dan wadah - dalam bentuk penggunaan sumber daya yang efisien."

Latar belakang


Firecracker sedang dikembangkan oleh karyawan Amazon Web Services yang berangkat untuk meningkatkan konsumsi sumber daya dan kehidupan keseluruhan untuk pengguna layanan seperti AWS Lambda (diluncurkan pada 2014 dan hari ini memungkinkan kita untuk mengatakan bahwa model serverless akan terus ada) dan AWS Fargate (muncul setahun yang lalu )

Proyek ini didasarkan pada pengembangan Open Source Google, crosvm dari Chromium OS, yang ditulis dalam Rust dan bertanggung jawab untuk meluncurkan sistem operasi dengan virtualisasi perangkat (tetapi tanpa meniru perangkat keras nyata). Oleh karena itu, kode Firecracker juga ditulis dalam bahasa Rust , dan penulisnya berjanji untuk mengembalikan koreksi mereka ke basis kode proyek induk, meskipun proyek itu sendiri memiliki tujuan yang sangat berbeda.

Rilis publik pertama Firecracker - 0.1.0 - berlangsung pada bulan Maret tahun ini, dan rilis terbaru terakhir - 0.11.0 - hanya beberapa hari yang lalu. Saya mulai menulis artikel ini tidak lama setelah pengumuman Internet Firecracker, ketika proyek memiliki 76 bintang di GitHub, dan pada saat publikasi angka ini melebihi 500.



Fitur Petasan


Komponen utama Firecracker adalah monitor mesin virtual (VMM), yang menggunakan Linux KVM untuk membuat dan menjalankan apa yang disebut microVM. Para penulis menyebut produk mereka "alternatif berbasis cloud untuk QEMU" [digunakan oleh Kata Containers], "ditujukan hanya untuk peluncuran kontainer yang aman dan efisien."

Dan berikut ini adalah contoh dari sistem host yang menjalankan microVM yang disebutkan:



Pengembang berusaha untuk minimalis, termasuk dalam produk hanya yang paling diperlukan dan dengan demikian memastikan biaya memori minimal, dan pada saat yang sama mengurangi potensi kerentanan potensial. Di Firecracker, hanya 4 perangkat yang ditiru: virtio-net, virtio-block, konsol serial dan keyboard dengan 1 tombol, yang digunakan untuk menghentikan operasi microVM. Sebagai sistem operasi host dan guest, OS berbasis pada kernel Linux versi 4.14 ( rilis dari November tahun lalu) dan lebih tinggi saat ini didukung, dan rencana saat ini dari pengembang adalah untuk mendukung dua cabang stabil terakhir dari kernel Linux. Dalam hal perangkat keras, sejauh ini hanya prosesor Intel yang didukung, tetapi AMD dan ARM ada di agenda.

Firecracker sendiri terdiri dari satu proses VMM, yang saat startup membuat API endpoint (RESTful) tersedia di mesin host. API itu sendiri dijelaskan dalam format OpenAPI dan, khususnya, memungkinkan Anda untuk memulai microVM dengan parameter yang ditentukan (gambar kernel, sistem file root, argumen boot) dan menghentikannya, mengkonfigurasi mesin virtual (jumlah vCPU, RAM, template untuk CPU), menambah ke antarmuka jaringan, disk (disajikan sebagai perangkat blok, mode baca-tulis dan baca-saja tersedia), konfigurasikan sistem untuk log dan metrik.

Keuntungan utama Firecracker adalah keselamatan (fokus pada komputasi multi-tenant, beberapa tingkat isolasi), kinerja tinggi (microVM dapat diluncurkan dalam 125 ms , dan penulis berjanji untuk meningkatkan angka ini tahun depan), overhead minimal (setiap microVM mengkonsumsi sekitar 5 megabyte memori). Apa yang menambah bobot proyek - ini telah diuji "dalam pertempuran" dan menyediakan karya sejumlah layanan AWS (termasuk Lambda dan Fargate yang disebutkan).

Detail Keamanan


Di antara fitur-fitur utama Firecracker, yang difokuskan untuk memastikan tingkat keamanan yang tinggi, berikut ini disebutkan:

  1. Model tamu sederhana (untuk semua tamu hanya disediakan minimum - lihat di atas sekitar 4 perangkat).
  2. Mengisolasi proses Petasan dengan cgroups dan seccomp BPF, serta serangkaian panggilan sistem yang diizinkan.
  3. Menghubungkan statis proses Firecracker untuk memulainya secara terpisah dari lingkungan host.

Demo Petasan


Blog AWS menunjukkan bagaimana Anda dapat mencoba microVMs dalam aksi. Untuk melakukan ini, cukup buat instance i3.metal dan unggah 3 file ke dalamnya (file yang dapat dieksekusi firecracker, root image FS, kernel Linux):



Setelah itu - tetapkan hak yang diperlukan untuk / dev / kvm:

 $ sudo setfacl -mu:${USER}:rw /dev/kvm 

Atur konfigurasi untuk mesin tamu pertama:

 $ curl --unix-socket /tmp/firecracker.sock -i \ -X PUT "http://localhost/machine-config" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ -d "{ \"vcpu_count\": 1, \"mem_size_mib\": 512 }" 

... maka intinya untuknya:

 $ curl --unix-socket /tmp/firecracker.sock -i \ -X PUT "http://localhost/boot-source" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ -d "{ \"kernel_image_path\": \"./hello-vmlinux.bin\", \"boot_args\": \"console=ttyS0 reboot=k panic=1 pci=off\" }" 

... dan root FS:

 $ curl --unix-socket /tmp/firecracker.sock -i \ -X PUT "http://localhost/drives/rootfs" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ -d "{ \"drive_id\": \"rootfs\", \"path_on_host\": \"./hello-rootfs.ext4\", \"is_root_device\": true, \"is_read_only\": false }" 

Tetap meluncurkan tamu:

 # curl --unix-socket /tmp/firecracker.sock -i \ -X PUT "http://localhost/actions" \ -H "accept: application/json" \ -H "Content-Type: application/json" \ -d "{ \"action_type\": \"InstanceStart\" }" 

Hasil:



Bagaimana dengan proyek kontainer lainnya?


Meskipun penulis Firecracker berjanji akan "berintegrasi dengan runtime kontainer populer," inilah yang mereka jawab ketika ditanya apakah proyek tersebut dapat digunakan dengan wadah Kubernetes, Docker, atau Kata:

"Belum. Kami mengembangkan Firecracker sebagai proyek Open Source karena menawarkan pendekatan keamanan yang sangat berbeda dalam meluncurkan kontainer. Kami berharap komunitas lain yang menciptakan teknologi Open Source untuk wadah akan merasakan manfaatnya. “Kami berupaya memastikan bahwa Firecracker terintegrasi secara mulus ke dalam ekosistem wadah - dengan tujuan integrasi tanpa batas di masa depan, memberikan lebih banyak opsi untuk mengisolasi beban kerja kontainer.”

PS


Baca juga di blog kami:

Source: https://habr.com/ru/post/id431192/


All Articles