เมื่อบังเอิญไปเจอว่า EKZ ใช้ทรัพยากรน้อยกว่า k3s
ทุกคนที่คุ้นเคยกับ Kubernetes น่าจะรู้จัก k3s กันดี เนื่องจาก k3s ของ Rancher เป็นตัวเปิดเกม distro ขนาดเล็กในโลกของ Kubernetes
2 ปีก่อน ตอนผมลอง k3s ก็ประทับใจมากเพราะใช้ memory แค่ 500 MB ในการรัน Kubernetes แบบ 1 โหนด
ก่อนสร้าง EKZ ก็มองหาไว้หลายวิธี เคยคิดเหมือนกันว่าจะใช้ k3s เป็นเปลือกให้ EKZ แต่พอลองดู code แล้วกลไกการ patch เพื่อให้ได้ผลลัพธ์อย่างที่ต้องการมันซับซ้อนกว่า k0s เลยเลือกไปทาง k0s
หลักจากที่รันทดสอบ EKZ หลายครั้ง พบว่ามันจะใช้ RAM อยู่ประมาณ 800 MB ก็คิดในใจว่าก็ดีแล้วมากแล้วหล่ะ กิน RAM มากกว่า k3s (ในความทรงจำ) แถว ๆ 300 MB เอง
วันนี้คิดอยากแกะ k3s อีกรอบเลยทดลองรันดูผ่าน k3d (ระบบที่รัน k3s ใน docker) เจอภาพนี้
ตอนแรกก็ตกใจเล็กน้อย คิดว่ารันอะไรผิดเปล่า เลย double check อีกรอบ ปรากฎว่าก็ได้ผลเหมือนเดิม
ตอนนี้ EKZ เลยดีกว่า k3s อยู่เล็กน้อยในแง่การใช้หน่วยความจำ ซึ่งก็ต้องยกความดีความชอบให้ architecture ของ k0s ที่ลดการใช้ทรัพยากรไปได้จนแซง k3s แล้ว
แต่ก็ได้ข้อสรุปว่า Kubernetes ขนาดเล็กสำหรับงาน Edge, IoT ตอนนี้ไม่มีตัวไหนดีหรือแย่ไปกว่ากันแบบชัดเจน คิดว่าเป็นเพราะการ optimize ของ Kubernetes รุ่นหลัง ๆ ด้วย (ตัวที่ผมลองคือ 1.20.4 ของ EKZ และ 1.20.7 ของ k3s) จุดที่จะทำให้การใช้ทรัพยากรมากขึ้นหรือน้อยลงแบบชัดเจนน่าจะเป็นตัว container ที่เราติดตั้งเข้ามาแบบ out-of-the-box มากกว่า