1. ออกแบบโครงสร้างระบบ (Architecture)
วางแผนจำนวนเครื่องและหน้าที่การทำงาน
ใน Workshop นี้ เราจะจำลอง Kubernetes Cluster โดยใช้เครื่องคอมพิวเตอร์ (หรือ VM) จำนวน 3 เครื่อง โดยเชื่อมต่อกันผ่านวง LAN เดียวกัน
| Hostname | Role | IP Address (Ex.) | Min Spec |
|---|---|---|---|
| k8s-master | Control Plane | 192.168.1.10 | 2 CPU / 4GB RAM |
| k8s-node1 | Worker | 192.168.1.11 | 1 CPU / 2GB RAM |
| k8s-node2 | Worker | 192.168.1.12 | 1 CPU / 2GB RAM |
- IP Address: ควรตั้งเป็น Static IP เพื่อไม่ให้เปลี่ยนเมื่อรีสตาร์ท
- OS: แนะนำ Ubuntu Server 22.04 LTS หรือ 24.04 LTS
- Network: ทุกเครื่องต้อง Ping หากันเจอ และออกเน็ตได้
Kubernetes Cluster Architecture: Master ควบคุม Worker Nodes ผ่าน API Server
2. ขั้นตอนการติดตั้ง (Installation)
ทำตามทีละขั้นตอนอย่างละเอียด
ALL NODES เตรียมสภาพแวดล้อม (Pre-requisites)
ทำขั้นตอนนี้กับทุกเครื่อง (Master, Node1, Node2) เพื่อปิด Swap และเปิด Kernel Modules ที่จำเป็น
ALL NODES ติดตั้ง Container Runtime
เราใช้ Containerd เป็นตัวรัน Container แทน Docker (ตามมาตรฐานใหม่ของ K8s)
ALL NODES ติดตั้ง Kubeadm, Kubelet, Kubectl
Initialize Cluster
รันที่เครื่อง k8s-master เท่านั้น
🎉 เมื่อสำเร็จ หน้าจอจะแสดงข้อความว่า:
Your Kubernetes control-plane has initialized successfully!
To start using your cluster, you need to run the following as a regular user:
...
Then you can join any number of worker nodes by running the following on each as root:
kubeadm join 192.168.1.10:6443 --token ...
ตั้งค่าสิทธิ์ให้ User ปัจจุบัน (บน Master):
ติดตั้ง Network Plugin (Flannel) (บน Master):
Join Worker Nodes
ไปที่เครื่อง k8s-node1 และ k8s-node2 แล้วรันคำสั่ง Join ที่ได้จากขั้นตอนที่ 4
3. ตัวอย่างการใช้งานจริง (Workshop)
Deploy เว็บไซต์แรกของคุณด้วย Nginx
3.1 สร้าง Deployment
สั่งให้ Kubernetes สร้าง Pod ที่รัน Nginx ขึ้นมา
ผลลัพธ์: K8s จะไปดาวน์โหลด image 'nginx' และรันใน Worker Node
3.2 ตรวจสอบสถานะ Pod
เช็คว่า Pod รันขึ้นมาสำเร็จหรือไม่ (Status: Running)
nginx-app-5c8f58d97-abcde 1/1 Running 0 30s
3.3 เปิด Port (Expose Service)
เพื่อให้คนภายนอกเข้าถึงเว็บได้ เราต้องสร้าง Service แบบ NodePort
nginx-app NodePort 10.100.50.1 <none> 80:31000/TCP
สังเกตเลข Port หลัง 80 (เช่น 31000) นี่คือ Port ที่เราจะใช้เข้าเว็บ
3.4 ทดสอบเข้าใช้งาน
เปิด Browser แล้วเข้า IP ของ Node เครื่องใดก็ได้ ตามด้วย Port
เช่น http://192.168.1.11:31000
ยินดีด้วย! Cluster ของคุณใช้งานได้แล้ว