Tags:
Node Thumbnail

รอบหลายปีที่ผ่านมา โลกไอทีขยับจากเทคโนโลยี virtualization (VM) มาสู่ container กันมากขึ้น โดย container มีข้อดีกว่าเรื่องประหยัดทรัพยากร เพราะไม่ต้องยัด VM ทั้งตัวเข้ามา แต่ก็มีข้อเสียเรื่องความปลอดภัย เพราะงานใน container อาจไม่ถูกจับแยก (isolation) ขาดจากโฮสต์เหมือนกับ virtualization ถ้าเกิดปัญหาอะไรขึ้นมาก็อาจส่งผลกระทบต่อเครื่องที่เป็นโฮสต์ได้

ที่ผ่านมามีความพยายามทำ container isolation อยู่บ้าง เช่นโครงการ Kata ที่เป็นลูกผสมระหว่าง container กับ VM โดยใช้เทคนิค VM แต่ลดขนาดและฟีเจอร์ลง

ล่าสุดกูเกิลเปิดตัวโครงการ gVisor ที่พยายามแก้ปัญหานี้เช่นกัน แนวทางของกูเกิลจะคล้ายกับ Kata แต่เบากว่านั้นอีก โดยจะสร้างเคอร์เนลของตัวเองขึ้นมา (ด้วยภาษา Go จากเหตุผลเรื่อง memory/type safety) และแอพพลิเคชันจะรันแบบ sandbox และมีเคอร์เนลของตัวเอง (แยกจากเคอร์เนลของโฮสต์)

No Description

ภาพจาก Pexels

container ปกติ

No Description

แนวทางของ Kata

No Description

แนวทางของ gVisor

No Description

จุดเด่นของ gVisor คือยังคงภาวะการแยกขาดจากโฮสต์ (isolation) ผ่านเคอร์เนล แอพพลิเคชันไม่มีทางได้เข้าถึงเคอร์เนลของโฮสต์เลย แต่ก็บริหารทรัพยากรได้ดีกว่าการใช้ VM (แน่นอนว่าย่อมเสีย overhead จากการเรียกเคอร์เนลซ้อนสองชั้นอยู่บ้าง)

gVisor สามารถทำงานกับ Dcker และ Kubernetes ได้เป็นอย่างดี การใช้งานต้องใช้คำสั่ง runsc (run Sandboxed Container) แทนคำสั่ง runc ปกติของ Docker

กูเกิลระบุว่าตอนนี้ gVisor รองรับ system call ของลินุกซ์ประมาณ 200 ประเภท แต่ก็ยังไม่รองรับทั้งหมด 100% ส่งผลให้อาจไม่สามารถรันแอพพลิเคชันได้ทุกชนิดบน gVisor อย่างไรก็ตาม แอพดังๆ ที่ใช้กันเยอะๆ อย่าง Node.js, Java 8, MySQL, Apacher, Redis, MongoDB ก็สามารถทำงานบน gVisor ได้อย่างไม่มีปัญหา (แอพที่ยังไม่รองรับคือ Nginx, PostgreSQL, Elastic Search)

ตอนนี้ gVisor เปิดซอร์สแล้วบน GitHub ใช้สัญญาอนุญาตแบบ Apache

ที่มา - Google Cloud Platform Blog

Get latest news from Blognone

Comments

By: PH41
ContributorAndroidUbuntuWindows
on 5 May 2018 - 23:38 #1048012
PH41's picture

Dcker -> Docker