Let's learn about K3s and Argo CD
2025-04-24 18:13:01
💡 K3s คืออะไร?
K3s เป็น Kubernetes เวอร์ชันที่เบาและง่ายต่อการติดตั้ง พัฒนาโดยบริษัท Rancher (ปัจจุบันคือ SUSE) เพื่อให้ใช้งาน Kubernetes ได้ง่ายขึ้นบนอุปกรณ์ทรัพยากรจำกัด
- Raspberry Pi
- ระบบ IoT
- Edge computing
- หรือแม้แต่ในเครื่อง dev เล็ก ๆ
🔍 จุดเด่นของ K3s
- ✅ เบา – ไฟล์ไบนารีเดียว ขนาดเล็กกว่า Kubernetes ปกติ
- ✅ ติดตั้งง่าย – ใช้คำสั่งเดียวก็ขึ้นคลัสเตอร์ได้เลย
- ✅ ลดความซับซ้อน – ตัดบาง component ที่ไม่จำเป็นออก เช่น etcd (ใช้ SQLite แทนโดย default)
- ✅ เหมาะกับ resource น้อย – ทำงานได้ดีในสภาพแวดล้อมที่มี RAM/CPU จำกัด
🚀 ใช้ทำอะไรได้บ้าง?
- สร้าง dev/test environment ที่เร็วและเบา
- ใช้งาน Kubernetes บนอุปกรณ์ IoT หรือ edge device
- เรียนรู้และทดลอง Kubernetes โดยไม่ต้องใช้ของหนักอย่าง Minikube หรือ k8s เต็มตัว
📊 เปรียบเทียบ K3s vs Kubernetes (K8s)
หัวข้อ |
K3s |
Kubernetes (K8s ปกติ) |
|---|---|---|
| 🔧 การติดตั้ง | ง่ายมาก ใช้แค่คำสั่งเดียว | ซับซ้อน ต้องติดตั้งหลาย component แยกกัน |
| 🧱 ขนาด/ทรัพยากร | เบา ใช้ RAM และ CPU น้อย | หนักกว่า ใช้ทรัพยากรมาก |
| 🧠 ความซับซ้อน | ลดความซับซ้อน (ตัด component บางตัวออก) | เต็มรูปแบบ ฟีเจอร์ครบ |
| 📦 Etcd / ฐานข้อมูล | ใช้ SQLite เป็น default (เบากว่า) | ใช้ etcd (เหมาะกับการ scale และ HA) |
| 🔄 การอัปเกรด/ดูแลระบบ | ง่ายกว่า จัดการได้เร็ว | ต้องใช้ความรู้ลึกขึ้น |
| 🚀 กรณีการใช้งาน | เหมาะกับ dev, IoT, edge, lab/test | เหมาะกับ production scale ขนาดใหญ่ |
⚙️ ขั้นตอนการติดตั้ง K3s
ตัวอย่างระบบที่จะติดตั้งจะเป็นแบบ Single Server โดยจะเป็นการ ติดตั้งตัว Server node ขึ้นมา 1 node และจะเชื่อมต่อ Agent node ไปยัง server node ตามภาพที่แสดงข้างล่าง
สิ่งที่ต้องเตรียม :
- คอมพิวเตอร์ หรือ อุปกรณ์ที่จะใช้ติดตั้งระบบในที่นี้เราจะใช้เป็น VM โดย spec hardware จะอ้างอิงจากความต้องการขั้นต่ำของ ตัว K3s ถ้าเพื่อนๆมีเหลือก็จัดเลยครับ
- Server Node : 2 Cores CPU / 2 GB Ram / 10 GB Disk (1 node)
- Agent Node : 1 Core CPU / 512 MB Ram / 10 GB Disk (2 node ถ้าไม่ต้องการก็ไม่ต้องเพราะสามารถลงแบบ server node ตัวเดียวได้)
- OS ในที่นี้จะใช้เป็น ubuntu server 24.04 ทำให้ใน command ส่วนใหญ่ในบทความนี้จะเป็นของ ubuntu แต่ที่จริงแล้วตัว K3s สามารถจะติดตั้งใน os ประเภท linux ได้หลากหลาย สามารถเหลือได้ตามที่อุปกรณ์หรือเครื่องคอมนั้น support
- ถ้าเครื่องเปิดใช้งานตัว swap อยู่ ให้ทำการ disable swap ด้วย
ศึกษาเพิ่มเติม :
➡️ how-to-permanently-disable-swap-in-linux
ขั้นตอนการติดตั้ง :
1. ทำการ update ระบบให้เรียบร้อย (สามารถข้ามไปได้เลย)
sudo apt update && sudo apt upgrade -y
2. ติดตั้งตัว K3s ที่ server node โดยจะ ตั้งค่าให้ disable ตัว traefik (เนื่องจากจะไปใช้แบบอื่น)
curl -sfL https://get.k3s.io | K3S_KUBECONFIG_MODE="644" INSTALL_K3S_EXEC="server" sh -s - --disable=traefik
**โดยตัว script ของ K3s จะติดตั้งตัว Kubectl มาให้เราเรียบร้อยแล้ว
ตรวจสอบว่าตัว node ติดตั้งเรียบร้อยแล้วหรือยัง โดยใช้คำสั่งของ kubectl
kubectl get nodes
3. ก่อนที่ติดตั้ง K3s ที่ agent node จะต้องใช้ IP address หรือ hostname ของเครื่อง server node ด้วย สามารถหาได้ดังนี้
ip addr | grep eth0
![]()
** เป็นเพียงตัวอย่าง IP และ interface ของเพื่อนๆอาจไม่เหมือนกัน
จากนั้นต้องเอา token ที่ใช้ในการ register จาก server node โดยจะอยู่ที่ไฟล์ /var/lib/rancher/k3s/server/node-token
sudo cat /var/lib/rancher/k3s/server/node-token
![]()
4. ติดตั้ง K3s ที่ agent node ตัวอย่างคำสั่งที่ใช้ติดตั้ง K3s ที่ agent node
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="agent" K3S_TOKEN="server-node-token" sh -s - --server https://server-node-ip:6443
ให้เราแก้ คำสั่งโดยใส่ข้อมูลของ server node ลงไป ให้ทำการรันคำสั่งนี้ใน agent node ทุกตัว
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="agent" K3S_TOKEN="K10f445512011d792d7a4c8644e4c401845cdfbe0a6a92f48225e4b25fc9ab20c78::server:8db954fdf8618f0decbd7b20744432a8" sh -s - --server https://192.168.1.221:6443
kubectl get nodes
![]()
จะพบว่ามี node เพิ่มเข้ามาจากตอนแรก และในตอนนี้ ตัว k3s cluster ก็พร้อมใช้งานแล้ว แต่ถ้าเราต้องการ access ตัว cluster จากภายนอก server node เราสามารถใช้ตัวไฟล์ kube config ได้ โดยตัวไฟล์ จะอยู่ที่ /etc/rancher/k3s/k3s.yaml
sudo cat /etc/rancher/k3s/k3s.yaml
เมื่อจะนำไปใช้ให้เปลี่ยน IP address ไปเป็นของ server node ด้วย
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: """ """ """
server: https://127.0.0.1:6443 // เปลี่ยนตรงนี้
name: default
""" """ """
Optional : ติดตั้ง kubectl completion เพื่อความสะดวกในการใช้งาน
kubectl completion SHELL
คำสั่งในการติดตั้งอาจจะแตกต่างไปต่าง OS และ shell ที่ใช้ โดยในที่นี้จะใช้เป็น bash shell
source <(kubectl completion bash)
echo "source <(kubectl completion bash)" >> ~/.bashrc
💡 Argo CD คืออะไร?
Argo CD (ย่อมาจาก Argo Continuous Delivery) คือ เครื่องมือสำหรับจัดการการ Deploy แอปพลิเคชันบน Kubernetes โดยใช้ GitOps
![]()
🔧 คำว่า “GitOps” หมายถึงอะไร?
Argo CD จะ ดู Git Repo แล้ว Deploy ตามนั้นให้เอง
✅ สรุปง่าย ๆ
- Argo CD ช่วยให้เรา Deploy จาก Git ไปยัง Kubernetes โดยอัตโนมัติ
- เราไม่ต้องไปรัน kubectl apply เอง
- มันจะ sync สถานะของแอปบน cluster ให้ ตรงกับไฟล์ YAML ใน Git
🎯 ทำไมคนถึงใช้ Argo CD?
- ควบคุมทุกอย่างผ่าน Git
- ตรวจสอบง่าย ใครแก้อะไร เมื่อไหร่
- ลด human error (ไม่ต้อง deploy มือ)
- มี UI สวย ๆ ให้ดูสถานะแอป
⚙️ ขั้นตอนการติดตั้ง Argo CD
1. ไปที่เครื่อง server node หรือ เครื่องที่ใช้ kube config ของ k3s cluster ที่ติดตั้งไป และทำการสร้าง namespace
kubectl create namespace argocd
2. ติดตั้งตัว argo cd
kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/stable/manifests/install.yaml
รอจะจนกว่าระบบจะติดตั้งเสร็จ โดยสามารถตรวจสอบได้ดังนี้
kubectl get deployments -n argocd
![]()
ให้รอจนกว่าจะ ready ทั้งหมด ดังภาพบนด้านบน
3. ในการเข้าใช้งานตัว web ต้องทำการเปิด port ให้สามารถเข้าถึง service ได้จากภายนอก เราจะทำการ patch ตัว service ให้เป็น type LoadBalancer
kubectl patch svc argocd-server -n argocd -p '{"spec": {"type": "LoadBalancer"}}'
จากนั้นก็ดูว่าต้องใช้ port อะไร
kubectl get svc argocd-server -n argocd
จากรูปด้านบนจะเห็นได้ว่า มี port 32343(http) และ 30756(https) โดยระบบจะสุ่มขึ้นมาทำให้อาจจะไม่เหมือนกันในทุกเครื่อง
4. เข้าใช้งานหน้าเว็บ โดยจะได้ server node ip และ port (http หรือ https ก็ได้) เปิด web browser แล้วใส่ที่อยู่เว็บได้เลย ในที่นี้จะเป็น https://192.168.1.221:30756
kubectl -n argocd get secret argocd-initial-admin-secret -o jsonpath="{.data.password}" | base64 -d; echo
จากนั้นก็ login เข้าใช้งานได้เลย ให้เราทำการเปลี่ยน password โดยไปที่ "User Info" แล้วทำการเปลี่ยน password ให้เรียบร้อย ทีนี้ตัว Argo CD ก็พร้อมใช้งาน
![]()
📝 ตัวอย่างการใช้งาน Argo CD
1. connect repo เข้ากับตัว argo cd ให้ไปที่ "Settings" > "Repositories" > "Connect Repo" นั้นก็ใส่ข้อมูลของ project ที่เก็บตัว deployment ไว้ จากนั้นก็กด "Connect"
2. สร้างตัว Application สำหรับการ deploy ให้ไปที่ "Application" > "New app" สร้างรายละเอียดของ app จากนั้น กด "Create"
3. รอให้ตัว Application sync ให้สำเร็จ แล้วจะปรากฎข้อมูลต่างๆ เช่น deployment, service, pods และอื่น โดยจะอ้างดิงตาม component ที่อยู่ในไฟล์ deployment
!!! เพื่อความเข้าใจที่มากขึ้นรบกวนศึกษาเพิ่มเติม links ข้อมูลที่จำเป็นต่างๆได้รวบรวมไว้ให้แล้ว !!!
เนื้อหาเพิ่มเติม :
➡️ K3s Document - Official Website
➡️ Argo CD Document - Official Website
▶️ SchoolTechX | K3S Setup: K8s ขนาดเล็กแต่แรงไม่ธรรมดา
▶️ TechWorld with Nana | ArgoCD Tutorial for Beginners - GitOps CD for Kubernetes
▶️ DevOps Journey | ArgoCD Starter Guide: Full Tutorial for ArgoCD in Kubernetes
