หลังจากบทความแรกๆ ที่เคยเขียนเกี่ยวกับการทำ K8S หรือ Kubernetes แบบ Single Node ไว้ใช้งานเองไปแล้วนั้น
แต่.. พอมาวันนี้ อยากบอกว่า ทำไม่ได้แล้วครับ เอิ๊กๆ

เหตุผลก็เพราะว่าตัว K8S ดันไม่รองรับกับ Docker 18.09 (เป็น Version ปัจจุบันในขณะนี้ครับ) และอีกเหตุผลหนึ่งก็คือ Docker For Windows ไม่ยอมปล่อย Hard disk ให้สามารถเอาไปใช้งานอย่างอื่นได้เลยครับ (Hyper-V วิ่งเล่นซะอย่างกับสนามแข่งรถ F1) ก็เลยลองๆ หาดูว่าพอจะมีวิธีทำอย่างอื่นบ้างหรือเปล่า ก็เลยมาจบตรงที่ใช้ VM เอาเหมือนเดิม เพิ่มเติมคือลงแค่ Ubuntu และใช้คำสั่งแค่ ไม่กี่คำสั่งเท่านั้นครับ สงสัยแล้วละสิว่าทำยังไง มาเริ่มกันเลยดีกว่าเนาะครับ

ขั้นตอนแรกเราก็จะไปสร้าง VM ขึ้นมา 1 ตัว โดยใช้สเปกตามนี้เลยครับ

K8S VM Spec

ส่วนวิธีการสร้าง VM และติดตั้ง Ubuntu Server ผมขอข้ามนะครับ และสำหรับในบทความนี้จะใช้ Ubuntu 18.04.1 ครับ และเพิ่มเติมเกี่ยวกับการเลือกติดตั้ง Feature ของ Ubuntu เราจะไม่เลือกลงอะไรเลยนะครับ กดผ่านไปได้เลยครับ
(ในภาพข้างล่างครับ)

Ubuntu Features

ต่อจากนั้นหลังจากที่เราติดตั้ง Server เราเสร็จแล้วเราก็จะทำการอัพเดทด้วยคำสั่ง ดังนี้

Ubuntu update

หลังจากนั้นก็ทิ้งเอาไปแล้วไปห้องน้ำก่อน หรือใครจะไปหากาแฟมากิน หรือจะงีบหลับรอไปก่อนเลยก็ได้ครับ

Ubuntu Update finish

หลังจากที่อัพเดทเสร็จแล้วจากนั้นเราก็จะมาทำการติดตั้ง K8S กัน โดยเราจะติดตั้งผ่าน Snap ของ Ubuntu กันครับ โดยเราจะใช้คำสั่งนี้ เพื่อติดตั้ง MicroK8s ครับ

สำหรับถ้าใครต้องการเช็คดูว่ามี Version ไหนบ้างก็ใช้คำสั่งนี้สำหรับแสดง version

และสำหรับคำสั่งติดตั้งแบบระบุ version เราก็จะใช้คำสั่ง

แต่ผมแนะนำว่าตัวล่าสุดดีกว่าครับ

MicroK8s install progress

หลังจาที่รอจนหน้าจอแสดงเหมือนภาพข้างล่างแล้วก็เสร็จแล้วครับ สำหรับขั้นตอนติดตั้ง Kubernetes ตอนนี้ก็พร้อมใช้งานแล้วครับ ของผมใช้คำสั่งแค่ 2 คำสั่ง
คืออัพเดท Ubuntu และติดตั้ง MicroK8s เท่านั้นครับ

MicrroK8s Install Success

ถ้าไม่เชื่อลองใช้คำสั่งนี้เช็คดูก็ได้ครับ

kubernetes namespaces

หรือจะเช็คดูข้อมูลของ cluster ก็ใช้คำสั่งนี้ครับ

Kubernetes cluster info

ส่วนคำสั่งนี้สำหรับดูข้อมูลของ Node ครับ

Kubernetes Node info

หลังจากนั้นเราก็จะมาเปิดใช้งาน DNS Dashboard กันด้วยคำสั่งนี้ครับ

Kubernetes dns dashboard enable

สำหรับการเข้าดูข้อมูลใน DNS Dashboard เราจะใช้คำสั่งนี้ครับ

Kubernetes DNS Dashboard

ถ้าไม่ชอบหน้าจอดำๆ เราก็มีหน้าจอแบบเดิมๆ ที่สามารถเข้าใช้งานจากเครื่องอื่นได้เหมือนกัน โดยเราจะใช้คำสั่ง enable dns dashboard เหมือนเดิม แต่เพิ่มเติมคือ ตามนี้ครับ

Kubernetes enable ingress dashboard

จากนั้นก็จะใช้คำสั่งนี้เพื่อให้เครื่องอื่นสามารถเข้าใช้ Dashboard ได้จาก Browser ครับ

Kubernetes proxy start

สำหรับการเข้าหน้า Dashboard ผ่าน Browser ก็จะใช้ url นี้ครับ

เมื่อเข้ามาแล้วก็จะเจอหน้าต่างนี้ กด Skip ไปเบาๆ เลยครับ

Kubernetes Dashboard login

แล้วเราก็จะเข้าสู่หน้า Dashboard ที่คุ้นเคยแบบนี้ครับ

Kubernetes Ingress dashboard

แต่ถ้าการเรียกใช้ microk8s.kubectl ยาวไป เราก็จะมาทำให้สั้น ด้วยการใช้คำสั่งนี้

ก็จะสามารถเรียกใช้คำสั่งแบบสั้นๆ ได้แบบนี้ครับ

ถ้าเกิดว่าเราจะใช้ Docker เราก็สามารถใช้คำสั่งเหมือนกับ docker ทุกอย่างเลยครับ อย่างเช่น Pull image เหมือนในภาพ

Docker pull redis image

เราสามารถใช้คำสั่งนี้ เพื่อดูคำแนะนำและรายชื่อของ Add-On ที่ติดตั้งมาด้วยได้ครับ

Kubernetes enable add-on

สำหรับคำสั่งสำหรับตรวจสอบว่า Kubernetes ที่เราติดตั้งมีปัญหาในการทำงานอะไรบ้างที่ทำให้เราไม่สามารถ Access หรือ Start ได้จะใช้คำสั่งนี้ครับ

Kubernetes inspect

และสุดท้ายสำหรับการลบ Kubernetes ออก เราก็จะใช้คำสั่งนี้ครับ

Remove Kubernetes

สำหรับบทความนี้ก็จะออกแนวๆ แนะนำการใช้งานซะมากกว่าครับ ไม่ได้เป็นแนวขายของใดๆ นะครับ แหะๆ หวังว่าพอจะมีประโยชน์ไม่มากก็น้อยสำหรับคนที่ต้องการเริ่มต้นกับ K8s กันนะครับ

หากมีข้อผิดพลาดประการใดก็ขอกราบขออภัยมา ณ ที่นี้ด้วยครับ
ขอบคุณครับ

** Update 12/12/2018 **

เพิ่มเติมสำหรับ pod ที่เราสร้างขึ้นมาแล้วไม่สามารถ Access เข้า Internet ได้ เช่นเราติดตั้ง Jenkins แล้วต้องมีการ Install Plug-In ในตอนแรก แต่ติดปัญหาโหลดไฟล์ไม่ได้ ให้ใช้คำสั่งนี้ครับ

หรือถ้าใครใช้งาน UFW อยู่ ก็สามารถใช้คำสั่งนี้ได้ครับ

ส่วนการ Restart เราจะใช้คำสั่ง stop และ start ครับ

และเพิ่มเติมสำหรับการ Remove แนะนำให้ใช้คำสั่ง reset ก่อน เพื่อหยุดการทำงานของ pod ทุกตัวก่อนที่จะทำการ remove ครับ สำหรับคำสั่งก็ตามนี้ครับ

Reference : MicroK8s, MicroK8s Github