Kubernetes 101 Thai Guide DevOps

Kubernetes 101 Thai Guide

📅 2026-02-09 | โดย อ.บอม กิตติทัศน์ เจริญพนาสิทธิ์ — SiamCafe.net Since 1997

Kubernetes 101 Thai Guide คืออะไร / ทำไมถึงสำคัญ

น้องๆ เคยเจอปัญหาตอนทำเว็บหรือแอปฯ ที่ต้อง deploy ขึ้น server หลายๆ เครื่องมั้ย? สมัยผมทำร้านเน็ตฯ นี่ปวดหัวมาก! ต้องคอย remote เข้าไปจัดการทีละเครื่องๆ ถ้าเครื่องไหนเจ๊งก็ต้องรีบเข้าไปแก้ วุ่นวายสุดๆ

Kubernetes (K8s) เนี่ยแหละ คือพระเอกขี่ม้าขาวที่เข้ามาช่วยแก้ปัญหานี้ มันคือระบบ orchestration ที่ช่วยจัดการ container (เช่น Docker) ให้เราแบบอัตโนมัติ คิดซะว่ามันเป็น "หัวหน้า" ที่คอยสั่งงาน container ต่างๆ ให้ทำงานร่วมกันอย่างราบรื่น

ทำไมถึงสำคัญ? เพราะมันช่วยลดภาระการจัดการ server ของเราไปเยอะมากๆ เราไม่ต้องคอย remote เข้าไปแก้ปัญหาเองบ่อยๆ Kubernetes จะจัดการให้หมด ไม่ว่าจะเป็นการ scale แอปฯ, restart container ที่ตายไป, หรือ update version ใหม่

พื้นฐานที่ต้องรู้

Container คืออะไร?

Container ก็เหมือน "กล่อง" ที่บรรจุทุกอย่างที่แอปฯ ของเราต้องการ (code, library, dependencies) ทำให้แอปฯ ของเราสามารถทำงานได้ทุกที่ที่มี Docker ติดตั้งอยู่ สมัยก่อนเราต้องกังวลว่า server แต่ละเครื่องมี library เวอร์ชั่นไม่ตรงกัน แต่พอใช้ container ปัญหานี้ก็หมดไป

Pod คืออะไร?

Pod คือหน่วยที่เล็กที่สุดใน Kubernetes คิดซะว่ามันเป็น "บ้าน" ที่ container ของเราอาศัยอยู่ 1 Pod อาจจะมี 1 หรือหลาย container ก็ได้ โดย container ที่อยู่ใน Pod เดียวกันจะ share network และ storage กัน

Deployment คืออะไร?

Deployment คือตัวที่คอยสั่งให้ Kubernetes สร้างและจัดการ Pod ให้เรา มันจะคอยตรวจสอบว่ามี Pod ที่เราต้องการรันอยู่หรือไม่ ถ้า Pod ตายไป มันก็จะสร้าง Pod ใหม่ขึ้นมาทดแทนอัตโนมัติ

วิธีใช้งาน / เริ่มต้นยังไง

การเริ่มต้นใช้งาน Kubernetes อาจจะดูยากนิดนึง แต่ไม่ต้องกลัว! ผมจะค่อยๆ อธิบายให้ฟังแบบ step-by-step

Step 1: ติดตั้ง Minikube หรือ Docker Desktop

Minikube คือ Kubernetes เวอร์ชั่นเล็กๆ ที่เราสามารถติดตั้งบนเครื่องตัวเองเพื่อทดลองใช้งานได้ ส่วน Docker Desktop ก็มี Kubernetes ให้เราใช้งานได้เหมือนกัน เลือกอันที่ถนัดเลย

Step 2: สร้าง Deployment

เราจะสร้าง Deployment โดยใช้ไฟล์ YAML ซึ่งเป็นไฟล์ configuration ของ Kubernetes ไฟล์ YAML จะบอก Kubernetes ว่าเราต้องการรันแอปฯ อะไร, จำนวน Pod ที่ต้องการ, และอื่นๆ


apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: nginx:latest
        ports:
        - containerPort: 80

Step 3: Apply Deployment

หลังจากสร้างไฟล์ YAML แล้ว เราจะใช้คำสั่ง kubectl apply -f my-app.yaml เพื่อบอก Kubernetes ให้สร้าง Deployment ตามที่เรากำหนด

ขั้นตอนปฏิบัติจริง

Deploy แอปฯ ง่ายๆ ด้วย Nginx

ในตัวอย่างข้างบน เรา deploy Nginx ซึ่งเป็น web server ยอดนิยม ถ้าทุกอย่างเป็นไปด้วยดี เราจะได้ Nginx รันอยู่ 3 Pod

Expose แอปฯ ให้เข้าถึงได้จากภายนอก

โดยปกติ Pod จะไม่สามารถเข้าถึงได้จากภายนอก เราต้องใช้ Service เพื่อ expose แอปฯ ของเรา Service จะสร้าง endpoint ที่เราสามารถใช้เข้าถึงแอปฯ ได้


apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

Step 4: ตรวจสอบสถานะ

เราสามารถใช้คำสั่ง kubectl get pods, kubectl get deployments, และ kubectl get services เพื่อตรวจสอบสถานะของ Pod, Deployment, และ Service ของเราได้

Scale แอปฯ

ถ้า traffic เข้ามาเยอะ เราสามารถ scale แอปฯ ของเราได้ง่ายๆ โดยการเพิ่มจำนวน replicas ใน Deployment


kubectl scale deployment my-app --replicas=5

เปรียบเทียบกับทางเลือกอื่น

Kubernetes ไม่ใช่ทางเลือกเดียวในการจัดการ container ยังมีทางเลือกอื่นๆ เช่น Docker Swarm, Nomad, และ AWS ECS แต่ละตัวก็มีข้อดีข้อเสียต่างกัน

Docker Swarm ใช้งานง่ายกว่า Kubernetes เหมาะสำหรับโปรเจกต์เล็กๆ ที่ไม่ต้องการความซับซ้อนมากนัก Nomad ก็เป็นทางเลือกที่ดีสำหรับคนที่ต้องการระบบที่เรียบง่ายและมีประสิทธิภาพ AWS ECS เหมาะสำหรับคนที่ใช้ AWS อยู่แล้ว เพราะมัน integrated กับ AWS services อื่นๆ ได้ดี

แต่ Kubernetes ยังคงเป็นที่นิยมมากที่สุด เพราะมันมี ecosystem ที่ใหญ่ มี community ที่แข็งแกร่ง และมี features ที่หลากหลาย

Feature Kubernetes Docker Swarm Nomad
Complexity สูง ต่ำ กลาง
Scalability สูง กลาง สูง
Ecosystem ใหญ่ เล็ก กลาง
Learning Curve สูง ต่ำ กลาง

ถ้าอยากรู้เรื่อง IT เพิ่มเติม แวะไปอ่านบทความอื่นๆ ใน SiamCafe Blog ได้เลยนะ

หวังว่าน้องๆ จะเข้าใจ Kubernetes มากขึ้นนะครับ ถ้ามีคำถามอะไร ถามมาได้เลย ผมยินดีตอบ

อย่าลืมแวะไปดูบทความ DevOps อื่นๆ ที่ SiamCafe Blog ด้วยนะ!

🎬 วิดีโอแนะนำ

ดูวิดีโอเพิ่มเติมเกี่ยวกับKubernetes 101 Thai Guide:

Best Practices / เคล็ดลับจากประสบการณ์

เอาล่ะน้องๆ หลังจากที่เราปูพื้นฐาน Kubernetes กันไปแล้ว คราวนี้มาถึงส่วนสำคัญ นั่นคือ Best Practices หรือเคล็ดลับที่พี่สั่งสมมาจากการทำร้านเน็ต (SiamCafe.net) สมัยก่อนนู้นนนน จนถึงงาน DevOps ทุกวันนี้ มันคือสิ่งที่ช่วยให้ชีวิตเราง่ายขึ้นเยอะ ลดปัญหาที่อาจจะเกิดขึ้นได้ในอนาคต

จำไว้ว่า Kubernetes มัน powerful มาก แต่ถ้าเราใช้ไม่ถูกวิธี มันก็อันตรายเหมือนกัน ดังนั้น ตั้งใจอ่าน ตั้งใจทำความเข้าใจ แล้วเอาไปปรับใช้ให้เข้ากับงานของน้องๆ นะ

3 เทคนิคที่ใช้ได้จริง

1. Monitoring and Logging is Key

สมัยพี่ทำร้านเน็ต สิ่งที่สำคัญที่สุดคือ "รู้" ว่าเครื่องไหนมีปัญหา ลูกค้าคนไหนเล่นเกมอะไรอยู่ bandwidth เป็นยังไง Kubernetes ก็เหมือนกัน น้องต้อง Monitoring และ Logging อย่างละเอียด

Kubernetes มี tools ให้ใช้เยอะแยะ ตั้งแต่ Prometheus, Grafana, ELK Stack (Elasticsearch, Logstash, Kibana) เลือกใช้ให้เหมาะกับ budget และความถนัดของทีม แล้วตั้ง Alert ไว้ด้วย ถ้าเกิดอะไรผิดปกติจะได้รู้ตัวทัน


# ตัวอย่าง Alerting rule ใน Prometheus
alert: HighCpuUsage
expr: sum(rate(container_cpu_usage_seconds_total{namespace="production"}[5m])) > 0.8
for: 5m
labels:
severity: critical
annotations:
summary: "High CPU usage detected on production namespace"
description: "CPU usage is above 80% for more than 5 minutes."

2. Resource Limits and Requests are Your Friends

เคยไหม ลูกค้าในร้านแย่งกันเล่นเกม จนเครื่องกระตุก? Kubernetes ก็เหมือนกัน ถ้า Pod ไหนใช้ resource เยอะเกินไป มันจะกิน resource ของ Pod อื่นๆ ทำให้ระบบโดยรวมช้าลง

ดังนั้น กำหนด Resource Limits และ Requests ให้ชัดเจน ว่าแต่ละ Pod จะใช้ CPU, Memory เท่าไหร่ ถ้า Pod ไหนเกิน limit Kubernetes จะจัดการให้เอง (อาจจะ kill หรือ throttle แล้วแต่ config)


apiVersion: v1
kind: Pod
metadata:
name: resource-demo
spec:
containers:
- name: resource-demo-ctr
image: nginx
resources:
requests:
cpu: "100m"
memory: "128Mi"
limits:
cpu: "200m"
memory: "256Mi"

3. Automate Everything!

สมัยพี่ทำร้านเน็ต พี่แทบจะ automate ทุกอย่าง ตั้งแต่การเปิดปิดเครื่อง การ update เกม การ backup ข้อมูล Kubernetes ก็เหมือนกัน น้องต้อง automate ทุกอย่างเท่าที่จะทำได้

ใช้ CI/CD tools อย่าง Jenkins, GitLab CI, GitHub Actions เพื่อ automate การ build, test, deploy application ใช้ tools อย่าง Terraform, Ansible เพื่อ automate การ provision infrastructure ยิ่ง automate ได้เยอะ ชีวิตน้องก็จะสบายขึ้นเยอะ

อย่ากลัวที่จะเรียนรู้ tools ใหม่ๆ นะน้อง Tool มันเปลี่ยนไปเรื่อยๆ แต่ concept เดิมๆ มันก็ยังใช้ได้อยู่

4. Namespace is Your Friend

Namespace เหมือนห้องในร้านเน็ต ที่แบ่งลูกค้าเป็นกลุ่มๆ Kubernetes ก็ใช้ Namespace เพื่อแบ่ง resource และ isolate environment ออกจากกัน เช่น แบ่งเป็น development, staging, production

การใช้ Namespace ช่วยให้เราจัดการ resource ได้ง่ายขึ้น และป้องกันไม่ให้ Pod ใน environment หนึ่ง ไปรบกวน Pod ใน environment อื่น


apiVersion: v1
kind: Namespace
metadata:
name: production

5. Security First

สมัยพี่ทำร้านเน็ต Security สำคัญมาก ต้องคอยระวังพวกแฮกเกอร์มาเจาะระบบ Kubernetes ก็เช่นกัน ต้องให้ความสำคัญกับ Security ตั้งแต่แรก

ใช้ Network Policies เพื่อควบคุม traffic ระหว่าง Pods, ใช้ RBAC (Role-Based Access Control) เพื่อกำหนดสิทธิ์การเข้าถึง Kubernetes resources, scan images เพื่อหา vulnerabilities และ update Kubernetes version เป็นประจำ

FAQ คำถามที่พบบ่อย

Kubernetes ยากไหม? ต้องเริ่มจากตรงไหนดี?

มันก็ไม่ได้ง่ายขนาดนั้นแหละน้อง แต่ก็ไม่ได้ยากเกินไปถ้าเราตั้งใจเรียนรู้ พี่แนะนำให้เริ่มจาก concept พื้นฐานก่อน เข้าใจว่า Pod, Deployment, Service คืออะไร แล้วค่อยๆ ลองทำตาม tutorial ไปเรื่อยๆ

อย่าเพิ่งไป focus เรื่อง advance มากเกินไป เอาพื้นฐานให้แน่นก่อน แล้วค่อยๆ เรียนรู้เพิ่มเติมตามความจำเป็น

Minikube, Kind, K3s ต่างกันยังไง? เลือกใช้อะไรดี?

ทั้งหมดเป็น tools ที่ใช้สำหรับ run Kubernetes ในเครื่อง local Minikube เหมาะสำหรับคนที่อยากลอง Kubernetes แบบ full-fledged แต่ resource intensive Kind เหมาะสำหรับคนที่ต้องการ run Kubernetes cluster หลาย node ในเครื่อง local K3s เหมาะสำหรับคนที่ต้องการ Kubernetes ที่ lightweight และง่ายต่อการติดตั้ง

ถ้าเพิ่งเริ่มต้น พี่แนะนำให้ลอง Minikube ก่อน ถ้าเครื่องน้อง resource ไม่พอ ค่อยลอง K3s

ควรใช้ Managed Kubernetes Service ดีไหม (เช่น GKE, EKS, AKS)?

ถ้าบริษัทน้องมีทีม DevOps ที่แข็งแกร่ง และต้องการ control ทุกอย่างเอง การ run Kubernetes เองก็เป็นทางเลือกที่ดี แต่ถ้าบริษัทน้อง resource น้อย และต้องการ focus ที่ application มากกว่า พี่แนะนำให้ใช้ Managed Kubernetes Service

ข้อดีของ Managed Kubernetes Service คือ มันจัดการเรื่อง infrastructure ให้เราเกือบทั้งหมด เราแค่ deploy application อย่างเดียว

มี Certification อะไรที่น่าสนใจบ้าง?

CKA (Certified Kubernetes Administrator), CKAD (Certified Kubernetes Application Developer), CKS (Certified Kubernetes Security Specialist) พวกนี้เป็น certification ที่เป็นที่ยอมรับในวงการ ถ้ามีติดตัวไว้ จะช่วยเพิ่มโอกาสในการทำงานได้เยอะเลย

สรุป

Kubernetes เป็น technology ที่มีประโยชน์มากๆ แต่ก็ต้องใช้ให้เป็น น้องๆ ต้องเรียนรู้ concept พื้นฐานให้แน่น และ practice บ่อยๆ แล้วน้องจะเก่งเอง

อย่ากลัวที่จะลองผิดลองถูก เพราะการลองผิดลองถูกคือวิธีที่ดีที่สุดในการเรียนรู้

ขอให้สนุกกับการทำ DevOps นะน้อง!

iCafeForex
SiamCafe Blog