
ที่มาภาพ: Unknown Source
วิธียกเครื่อง Kubernetes บน Raspberry Pi เพื่อรันแอปคอนเทนเนอร์แบบส่วนตัว
⚡ สรุป 30 วิ
Kubernetes บน Raspberry Pi ให้คุณสร้างคลัสเตอร์ขนาดเล็กเพื่อรันแอปคอนเทนเนอร์แบบส่วนตัวได้อย่างประหยัดและยืดหยุ่น โครงงานนี้เหมาะกับผู้เริ่มต้นที่ต้องการเรียนรู้พื้นฐานของ K8s พร้อมทดลองบนฮาร์ดแวร์จริ…
ภาพรวม — Overview
Kubernetes บน Raspberry Pi ให้คุณสร้างคลัสเตอร์ขนาดเล็กเพื่อรันแอปคอนเทนเนอร์แบบส่วนตัวได้อย่างประหยัดและยืดหยุ่น โครงงานนี้เหมาะกับผู้เริ่มต้นที่ต้องการเรียนรู้พื้นฐานของ K8s พร้อมทดลองบนฮาร์ดแวร์จริง
ต่อไปจะอธิบายขั้นตอนตั้งแต่เตรียมอุปกรณ์จนถึงการ Deploy แอปแรกของคุณ
เตรียมอุปกรณ์ — Prerequisites
การเริ่มต้นต้องมีอุปกรณ์พื้นฐานที่พร้อมทำงานร่วมกัน
- Raspberry Pi 4 (หรือรุ่นที่รองรับ 64‑bit) จำนวนอย่างน้อย 2 ตัว
- การ์ด microSD Class 10 ขนาด 16 GB หรือมากกว่า
- พาวเวอร์แอดอัปเตอร์ 5 V 3 A สำหรับแต่ละบอร์ด
- สวิตช์หรือเร้าเตอร์ที่รองรับ Ethernet (แนะนำใช้สาย LAN เพื่อความเสถียร)
**Tip: หากต้องการคลัสเตอร์ 3‑node ให้เพิ่ม Raspberry Pi อีกเครื่องหนึ่งเพื่อทำเป็น etcd node เพิ่มความทนทานของข้อมูล
ติดตั้งระบบปฏิบัติการ — OS Installation
ใช้ Raspberry Pi OS (64‑bit) หรือ Ubuntu Server for ARM เพื่อให้รองรับ Kubernetes อย่างเต็มที่
- ดาวน์โหลดอิมเมจจากเว็บไซต์ทางการ
- ใช้โปรแกรม *Balena Etcher* ใส่ไฟล์ลง microSD
- ตั้งค่า `ssh` และ `wpa_supplicant.conf` (ถ้าใช้ Wi‑Fi) ก่อนบูตเครื่อง
เมื่อบูตแล้ว ให้ทำการอัปเดตแพคเกจพื้นฐาน
```bash sudo apt update && sudo apt upgrade -y ```
ตั้งค่าเครือข่ายและโฮสต์ — Network & Host Setup
ให้แต่ละ Pi มี IP คงที่หรือใช้ DHCP reservation เพื่อให้ง่ายต่อการอ้างอิง
- แก้ไขไฟล์ `/etc/hosts` เพิ่มบรรทัด `<IP> <hostname>` สำหรับทุกโหนด
- ปิด Swap (Kubernetes ต้องการ)
```bash sudo swapoff -a sudo sed -i '/swap/d' /etc/fstab ```
- เปิดใช้งาน IP forwarding
```bash echo "net.ipv4.ip_forward=1" | sudo tee -a /etc/sysctl.conf sudo sysctl -p ```
ติดตั้ง Docker Engine — Docker Installation
Docker เป็น runtime ที่ Kubernetes ใช้เป็นค่าเริ่มต้น
- ตั้งค่า repository ของ Docker
```bash curl -fsSL https://download.docker.com/linux/raspbian/gpg | sudo apt-key add - echo "deb [arch=arm64] https://download.docker.com/linux/raspbian $(lsb_release -cs) stable" \ | sudo tee /etc/apt/sources.list.d/docker.list ```
- ติดตั้ง Docker
```bash sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io ```
- เพิ่มผู้ใช้ `pi` เข้าในกลุ่ม `docker` เพื่อรันคอนเทนเนอร์โดยไม่ต้อง `sudo`
```bash sudo usermod -aG docker pi newgrp docker ```
ติดตั้ง kubeadm, kubelet และ kubectl — Kubernetes Packages
ใช้ apt repository ของ Kubernetes
```bash curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb http://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl ```
**Tip: ตรวจสอบเวอร์ชันให้ตรงกันทั้งหมด (`kubelet --version`, `kubectl version --client`)
สร้างคลัสเตอร์ด้วย kubeadm — Cluster Bootstrap
เลือก Pi ตัวหนึ่งเป็น Master แล้วรันคำสั่งต่อไปนี้
```bash sudo kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ --apiserver-advertise-address=$(hostname -I | awk '{print $1}') ```
ขั้นตอนสำคัญ
- `--pod-network-cidr` ใช้กับ Flannel (หรือ Calico)
- เก็บค่า kubeadm join ที่แสดงผลไว้เพื่อใช้เชื่อม Node ต่อไป
ตั้งค่า kubeconfig สำหรับผู้ใช้ปกติ
```bash mkdir -p $HOME/.kube sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config sudo chown $(id -u):$(id -g) $HOME/.kube/config ```
เชื่อม Node เข้ากับคลัสเตอร์ — Join Workers
บน Raspberry Pi แต่ละเครื่องที่เป็น Worker ให้รันคำสั่ง `kubeadm join` ที่ได้จากขั้นตอนก่อนหน้า
```bash sudo kubeadm join <master-ip>:6443 --token <token> \ --discovery-token-ca-cert-hash sha256:<hash> ```
ตรวจสอบสถานะโดยใช้
```bash kubectl get nodes ```
ผลลัพธ์ควรแสดง Master + Worker(s) ทั้งหมดในสภาพ Ready
ติดตั้งเครือข่าย Pod (Flannel) — Pod Network
Kubernetes ต้องการ overlay network เพื่อให้ pod ติดต่อกันได้
```bash kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml ```
ตรวจสอบว่า `kube-system` namespace มี pods ที่อยู่ในสถานะ Running
Deploy แอปพลิเคชันแรกของคุณ — First Deployment
สร้างไฟล์ YAML ง่าย ๆ เพื่อรัน Nginx ใน container
```yaml apiVersion: apps/v1 kind: Deployment metadata: name: nginx-demo spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers:
- name: nginx
image: nginx:stable-alpine ports:
- containerPort: 80
```
- บันทึกเป็น `nginx.yaml` แล้วรัน
```bash kubectl apply -f nginx.yaml ```
- ตรวจสอบ Deployment และ Service
```bash kubectl get deployments kubectl get pods -o wide # ดู IP ของแต่ละ pod ```
เพื่อให้เข้าถึงจากภายนอก สร้าง Service แบบ `NodePort` หรือใช้ Ingress ตามต้องการ
การจัดการและอัปเดตคลัสเตอร์ — Maintenance
- เพิ่ม/ลบ Node : ใช้ `kubeadm join` / `kubectl drain … && kubeadm reset`
- อัพเกรดเวอร์ชัน : ปฏิบัติตามขั้นตอน “kubeadm upgrade” เพื่อไม่ให้แอปหยุดทำงาน
**Tip: ก่อนอัปเกรดทุกครั้ง ควรสำรองไฟล์ `etcd` ด้วยการใช้ `etcdctl snapshot save`
ปัญหาที่พบบ่อย & วิธีแก้ — Troubleshooting
| ปัญหา | สาเหตุที่เป็นไปได้ | วิธีแก้ |
|---|---|---|
| Pod อยู่ในสถานะ *Pending* | ไม่มี IP จากเครือข่าย overlay | ตรวจสอบว่า Flannel (หรือ Calico) ทำงานและไม่มี firewall บน Pi |
| Node แสดง NotReady | Swap ยังเปิดอยู่ หรือ time sync ไม่ตรง | ปิด swap อีกครั้ง, ใช้ `timedatectl set-ntp true` |
| คอนเทนเนอร์ไม่สามารถดึงภาพจาก Docker Hub | ไม่มีอินเตอร์เน็ตหรือ DNS ผิดพลาด | ตรวจสอบ `/etc/resolv.conf`, เชื่อมต่อ Ethernet แทน Wi‑Fi |
สรุป — Summary
- เตรียม Raspberry Pi อย่างครบถ้วน (Power, SD Card, Network)
- ติดตั้ง OS Docker Kubernetes packages
- ใช้ `kubeadm init` สร้าง Master แล้วเชื่อม Worker ด้วย `kubeadm join`
- ตั้งค่าเครือข่าย Pod (Flannel) เพื่อให้ pod สื่อสารกันได้
- Deploy แอปแรกด้วย YAML ง่าย ๆ เช่น Nginx
สิ่งที่ควรจำ
- ปิด Swap และเปิด IP forwarding ก่อนติดตั้ง K8s
- เก็บคำสั่ง `kubeadm join` ไว้ใช้ต่อ Node ใหม่
- ตรวจสอบเครือข่าย overlay เป็นหัวใจของการทำงานคลัสเตอร์บน Pi
ด้วยขั้นตอนเหล่านี้ คุณจะมี Kubernetes คลัสเตอร์ส่วนตัวบน Raspberry Pi พร้อมรันคอนเทนเนอร์ได้ทันที — เหมาะสำหรับการทดลอง, โครงการ IoT หรือเซิร์ฟเวอร์ส่วนบุคคลขนาดเล็ก.
แชร์บทความนี้:
ชอบบทความแบบนี้?
สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม
แหล่งข่าวต้นฉบับ
- ชื่อต้นฉบับ
- วิธียกเครื่อง Kubernetes บน Raspberry Pi เพื่อรันแอปคอนเทนเนอร์แบบส่วนตัว
- ผู้เขียน
- กองบรรณาธิการ Thai Tech News
- แหล่ง
- บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
- วันที่เผยแพร่
- 9 กรกฎาคม 2569 เวลา 17:51
- URL ต้นฉบับ
- https://thaitech.news/articles/growth-889605



