Basic Kubernetes Part 1 - Kubernetes คืออะไร และ เตรียมเครื่องเพื่อใช้งาน
เกริ่นก่อนเข้าเรื่อง
ก่อนจะเริ่มเนื้อหาผมขอออกตัวก่อนเลยว่าผมไม่ใช่ผู้เชี่ยวชาญด้านการใช้งาน Kubernetes ผมเป็นแค่ Developer ที่ต้องใช้งาน Kubernetes ซึ่งกว่าจะใช้งานเป็นนั้นใช้เวลาานานมาก Video ที่สอนก็เป็นภาษาต่างประเทศฟังก็ไม่ค่อยเข้าใจ พอจะเรียนของไทยคอร์สเรียนก็มีราคา ซึ่งเป็นไปได้ยากที่บริษัทเล็กๆนั้นจะต้องแบกภาระส่ง Developer ไปเรียน ผมจึงเห็นว่ามันคงดีถ้ามีคนสอน Kubernetes แบบพื้นฐานให้ ดังนั้นผมก็เลยทำเองเลยละกัน สอนมันแบบไร้ใบ Certificate นี่แหละ สอนตามที่ทดลองที่เคยทำรู้เท่าไหร่ก็สอนเท่านั้น ดังนั้นผมจึงไม่การันตีว่าเนื้อหาทั้งหมดจะถูกต้องตามหลักการและเป็น Best practice
Kubernetes คืออะไร
Kubernetes หรือเรียกสั้นๆว่า k8s ( ตัว k เป็นตัวแรกและอีก 8 ตัวตามมาก่อนลงท้ายด้วย s ) เป็นตัวโปรแกรมที่มีไว้จัดการตัว Container ศัพท์ทางการเรียกว่า Container Orchestration โดยมันมีหน้าที่ทำการสร้าง container ตามที่เราต้องการ เช่น มีค่า config อะไร ใช้ storage ที่ไหน เชื่อมต่อกับ network อะไร จะให้ contianer ไปอยู่ที่เครื่องไหน container นั้นต้องใช้ RAM , CPU เท่าไหร่ ถ้าเกิดเกินจะต้อง scale out แบบไหน นี่เป็นสิ่งที่ Container Orchestration สามารถทำได้ ซึ่งตัว Container Orchestration นั้นไม่ได้มีแค่ Kubernetes จริงๆยังมี Docker Swarm , Mesos แต่ผู้ที่ได้รับความนิยมในการใช้มากที่สุดคือ Kubernetes (การที่มีคนนิยมใช้มากที่สุดไม่ได้แปลว่ามันดีที่สุด ตัว Docker Swarm , Mesos ก็มีข้อดีของมันซึ่งเหนือกว่า Kubernetes ) จนตอนนี้กลายเป็นเรื่องพื้นฐานที่ Developer ควรจะต้องรู้เหมือน docker
Install Kubernetes
เราสามารถ Install Kubernetes ใช้งานเองได้โดยสามารถดูได้ตาม OS ที่เราใช้
- Linux : https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/
- Windows : https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/
- MacOs : https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/
แต่หากใครไม่สะดวกจะลงเองหรือคิดว่าลงแล้วจะติดผมก็มีตัว VM ที่ลง k8s (จริงๆคือ k3s) และโปรแกรมที่จำเป็นต้องใช้งานไว้เรียบร้อยแล้ว คุณสามารถลงตัว Virtualbox แล้ว config network ก็สามารถนำมาใช้งานได้เลย
ใช้งาน Kubernetes ผ่าน VM
ทำการ Install VirtualBox โดยเข้าไปที่ Link นี้ : https://www.virtualbox.org/wiki/Downloads แล้วเลือกตาม OS ที่ใช้
ทำการ Download ตัว VM ตาม Link
ทำการแตก zip แล้วกด double click ที่ไฟล์ training-rocky-k8s.vbox ตัว Virtual box จะเปิดขึ้นมา
ทำการ Setting Network โดยทำการเลือกตามภาพและกดสร้าง
จากนั้นทำการเลือก Network adapter ที่ทำการสร้างขึ้นมา ของผมคือ VirtualBox Host-Only Ethernet Adapter #3(ของคุณอาจไม่เหมือนกับของผม) ให้เป็นดังภาพ
จากนั้นให้ทำการเลือกที่ VM : training-rocky-k8s แล้วเลือก Setting แล้วเลือก Network ดังภาพ
เลือก Adapter 1 เลือกชนิดของ Attach เป็น Host Only Adapter แล้วเลือก Adapter ที่คุณสร้างโดยของผมคือ VirtualBox Host-Only Ethernet Adapter #3 (ของคุณอาจไม่เหมือนของผม)
เลือก Adapter 2 เลือกชนิดของ Attach เป็น NAT
- ทำการ Start ตัว VM ขึ้นมา เปิด Browser ขึ้นมาจากนั้นเปิดไปที่ URL : http://192.168.156.101:8080/ ซึ่งถ้าไม่มีอะไรผิดพลาดจะได้ดังภาพ
ซึ่งที่คุณเปิดขึ้นมามันคือ Visual Code ที่ใช้งานบน Server ดังนั้นคุณสามารถสร้างไฟล์ แก้ไขไฟล์ สามารถสั่งใช้งานคำสั่งต่างๆผ่าน Terminal ใน Visual code ได้เลย
ทดสอบการใช้งาน Kubernetes
ส่วนนี้เรามาลองทดสอบว่าที่เราทำการ Install Kubernetes นั้นสำเร็จหรือไม่ โดยมีขั้นตอนดังต่อไปนี้
- สร้างไฟล์ test-deploy.yml โดยจะวางที่ไหนก็ได้ตามใจ โดยตัวไฟล์จะมีข้อมูลตามด้านล่าง
1 | apiVersion: v1 |
- ทำการสั่งให้ Kubernetes ทำการสร้าง container ในรูปแบบที่เราต้องการ
1 | kubectl apply -f test-deploy.yml |
- ทำการสั่ง Command ด้านล่างเพื่อเช็คว่า Kubernetes ทำการสร้าง container ให้เราตามที่ต้องการหรือไม่
1 | kubectl get pods |
- เปิด Web browser จากนั้นไปที่ URL : http://<ip ของเครื่องที่ลง Kubernetes>:31040 โดยของผม ip ของเครื่องที่ลง Kubernetes คือ 192.168.156.101 ดังนั้น URL ของผมจึงเป็น http://192.168.156.101:31040
อธิบายว่าเราทำอะไรไป
ไฟล์ test-deploy.yml นั้นเป็นไฟล์ที่ใส่ข้อมูลที่จะสั่งให้ Kubernetes นั้นทำการสร้าง container แบบไหน เปิด Port อะไร และให้เข้ามาจาก Port อะไร โดยไฟล์ test-deploy.yml เป็นการสั่งให้สร้าง container nginx ขึ้นมาโดยกำหนดว่าให้มี 3 container คอยช่วยงานกัน (เห็นได้จากสั่ง kubectl get pods แล้วเห็นว่ามี 3 ตัวที่ run อยู่) จากนั้นทำการบอกว่าให้สามารถเข้าถึง container นี้ได้จาก Port 31040 จากเครื่องที่ลง ( เห็นได้จากสั่ง kubectl get service แล้วเห็นว่ามีการ Bind Port 31040 กับ service nginx ) ซึ่งเมื่อทดลองเปิด Browser แล้วเข้าไปที่ http://<ip ของเครื่องที่ลง Kubernetes>:31040 ก็จะเห็นว่าเราสามารถเข้าไปใช้งาน nginx ที่เราสร้างได้
ลบสิ่งที่สร้าง
ทำการสั่งคำสั่งด้านล่างเพื่อลบ container ที่ทำการสร้าง
1 | kubectl delete -f test-deploy.yml |
สรุป
ตอนนี้เราได้รู้กันแล้วว่า Kubernetes คืออะไรใช้ทำอะไร จากนั้นเราก็ได้ทำการ Install Kubernetes เพื่อจะนำมาทำการใช้งาน โดยมีวิธีให้ลงทั้งแบบลงบน OS เลย หรือจะใช้ผ่าน VM ที่ผมสร้างขึ้นมาให้ และสุดท้ายเราได้ลองสั่งใช้งานตัว Kubernetes ให้ทำการสร้าง Container nginx เพื่อให้เรามาทดลองใช้งาน
สำหรับตอนต่อไปเราจะมาทำความรู้จักเกี่ยวกับ Pod ว่ามันคืออะไร เวลาจะสร้างมันจะทำอย่างไร