สมุดบันทึกการเรียน Kubernetes Part 2
จากตอนที่ผ่านมาเราน่าจะรู้จัก Kubernetes และโครงสร้างของเค้าคร่าวๆ แล้ว
ตอนนี้เรามาลองสร้างหน่วยที่เล็กที่สุดที่จะมา Run application ของเรากัน นั้นก็คือ Pod
อธิบายเพิ่มเติมจากตอนที่แล้ว Pod เป็นเหมือนบ้านหลังหนึ่งที่มีของเพียงพอต่อการให้คน 1 คนหรือหลายคนมาอยู่ ที่เปรียบเสมือน Container โดยมี Container Runtime เพื่อให้สามารถ Run application ที่เป็น Container ได้
ซึ่งใน Pod 1 Pod จะประกอบไปด้วย
- Container ของ Application
- Volume หรือ Storage ที่เก็บข้อมูลของ Application
- IP Address ของ Pod
ก่อนเราจะมา Run Application บน Kubernetes จะต้อง Install Docker Desktop สามารถ Download ได้ที่: https://www.docker.com/products/docker-desktop/ และ Enable Kubernetes ที่ Settings > Kubernetes
มาเริ่มกันเลย
- สร้าง Configuration file หรือที่เรียกกันว่า Manifest file ของ Kubernetes ที่เป็นประเภท Resource ของ Kubernetes ที่เป็น Pod
2. Run command ด้านล่างเพื่อทำการ Run Pod ขึ้นมา
kubectl apply -f pod-sample-app.yml
3. ตรวจสอบการ Run ของ Pod ได้ด้วย command
kubectl get pod
ตอนนี้ Pod sample-app ได้ถูก Run ขึ้นมาแล้ว แต่ๆๆๆๆ ยังไม่สามารถเรียกใช้งานได้
ดังนั้นจะต้องทำการ Port Forward ออกมาบน host ก่อนโดย Run command
kubectl port-forward pod/sample-app 4000:3000
เป็นการ forward port บนเครื่องเราที่ 4000 ไปยัง port ใน pod ที่ 3000 ดังนั้นตอนนี้เราสามารถเข้า http://localhost:4000/ ได้ที่เครื่องเราแล้ว
สรุป
บนความนี้เป็นเพียงการนำ Application ตัวอย่างมา Run บน Pod เพื่อให้รู้จัก
- การใช้ manifest file และองค์ประกอบใน file เพื่อสร้าง Pod เบื้องต้น
- รู้จักการ Apply manifest file
- รู้จักการทำ Port Forward
หมายเหตุ
การ Deploy application จริงๆ เราจะไม่สร้าง Pod ขึ้นมาเดี่ยวๆ และ Port Forward ออกมาเพราะการสร้าง Pod ขึ้นมาเดี่ยวๆ ถ้า Pod นั้นตายหรือ exit เราก็จะไม่สามารถใช้งาน Application ได้เลย
และการทำ Port Forward ในบทความนี้เป็นการให้รู้จักการทำ Port Forward และไว้ใช้ทดสอบ Application เท่านั้น
ซึ่งในบทความถัดไปจะเป็นการเล่าประเภท Resource อีกประเภทหนึ่งของ Kubernetes ที่เกี่ยวข้องกับ Pod ที่เราสร้าง นั้นก็คือ Resource ประเภท ReplicaSet ที่ไว้รักษาให้มี Pod ทำงานตามจำนวนได้ตลอดเวลา
Go to Part 3 : ReplicaSet