วิธียกเครื่อง Kubernetes บน Raspberry Pi เพื่อรันแอปคอนเทนเนอร์แบบส่วนตัว

ที่มาภาพ: 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 แสดง NotReadySwap ยังเปิดอยู่ หรือ 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

Related

บทความที่เกี่ยวข้อง

วิธีติดตั้งและใช้งาน llama.cpp บน macOS เพื่อเรียกใช้โมเดล LLM แบบออฟไลน์อย่างปลอดภัยGrowth
9 กรกฎาคม 2569 เวลา 11:30

วิธีติดตั้งและใช้งาน llama.cpp บน macOS เพื่อเรียกใช้โมเดล LLM แบบออฟไลน์อย่างปลอดภัย

การใช้ LLM แบบออฟไลน์บน macOS ให้ความปลอดภัยและสะดวกสบาย โดยไม่ต้องพึ่งคลาวด์ llama.cpp เป็นโครงการโอเพ่นซอร์สที่คอมไพล์โมเดลขนาดใหญ่ให้ทำงานได้เร็วบนเครื่องของคุณ บทความนี้จะอธิบายขั้นตอนตั้งแต่การเต…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีตั้งค่า Git Hooks เพื่ออัตโนมัติกระบวนการก่อนและหลังคอมมิตในโปรเจกต์ของคุณGrowth
8 กรกฎาคม 2569 เวลา 20:30

วิธีตั้งค่า Git Hooks เพื่ออัตโนมัติกระบวนการก่อนและหลังคอมมิตในโปรเจกต์ของคุณ

Git Hooks เป็นสคริปต์ที่ทำงานอัตโนมัติเมื่อเกิดเหตุการณ์ต่าง ๆ ใน Git เช่น ก่อนคอมมิตหรือหลังคอมมิต การใช้ Hook ช่วยบังคับกฎคุณภาพโค้ดและทำกระบวนการเสริมได้โดยไม่ต้องจำคำสั่งด้วยมือ บทความนี้จะพาคุณตั…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธีตั้งค่าและใช้ Rustup จัดการเวอร์ชันของ Rust บน Windows, macOS และ Linux อย่างปลอดภัยGrowth
8 กรกฎาคม 2569 เวลา 19:00

วิธีตั้งค่าและใช้ Rustup จัดการเวอร์ชันของ Rust บน Windows, macOS และ Linux อย่างปลอดภัย

Rustup เป็นเครื่องมือจัดการ Rust toolchain อย่างเป็นทางการ ช่วยให้คุณติดตั้งและสลับเวอร์ชันของคอมไพเลอร์ได้อย่างปลอดภัยบน Windows, macOS และ Linux การใช้ Rustup ทำให้ไม่ต้องกังวลเรื่อง dependency ขัดก…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีตั้งค่า Rclone เพื่อสำรองข้อมูลอัตโนมัติข้ามคลาวด์หลายผู้ให้บริการGrowth
8 กรกฎาคม 2569 เวลา 11:30

วิธีตั้งค่า Rclone เพื่อสำรองข้อมูลอัตโนมัติข้ามคลาวด์หลายผู้ให้บริการ

**บทความนี้จะสอนการตั้งค่า Rclone เพื่อสำรองข้อมูลอัตโนมัติข้ามคลาวด์หลายผู้ให้บริการ ทั้งการติดตั้ง การกำหนด Remote และการทำงานแบบ Schedule อย่างง่าย ๆ**

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
คัดลอกลิงก์แล้ว!