Kubernetes Production Guide DevOps

Kubernetes Production Guide

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

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

น้องๆ หลายคนคงเคยได้ยินคำว่า Kubernetes (K8s) กันมาบ้างแล้วใช่มั้ย? สมัยผมทำร้านเน็ต SiamCafe ยุคแรกๆ เรื่องพวกนี้ยังไม่มีหรอกครับ ตอนนั้นแค่เซ็ตอัพ Windows Server ให้เครื่องลูกข่ายเล่นเกมได้ก็แทบแย่แล้ว (หัวเราะ) แต่โลกมันเปลี่ยนไปไวมาก K8s กลายเป็นของจำเป็นสำหรับใครที่อยาก deploy application แบบ scale ได้จริงจัง

Production Guide ในที่นี้ก็คือ คู่มือฉบับใช้งานจริง ว่าเราจะเอา K8s ไปใช้ในสภาพแวดล้อมจริงจังยังไง ไม่ใช่แค่ lab หรือ playground นะครับ ทำไมมันถึงสำคัญ? ก็เพราะว่า K8s มันซับซ้อนมาก! ถ้า setup ไม่ดี มีหวังระบบล่มไม่รู้ตัว แถม security holes เพียบ บอกเลยว่าปวดหัว

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

ก่อนจะไปต่อ เรามาทบทวนพื้นฐานกันก่อนนิดนึงนะ จะได้ไม่งง

Containerization (Docker)

K8s มัน manage container ครับ เพราะฉะนั้นเราต้องเข้าใจ Docker ก่อน Docker คืออะไร? มันคือการแพ็ค application ของเรา พร้อมกับ dependencies ทุกอย่าง (libraries, runtime) ลงใน package ที่เรียกว่า container ข้อดีคือมัน run ได้ทุกที่ที่มี Docker runtime ไม่ว่าจะ Windows, Linux, macOS เหมือนกันเป๊ะ

สมัยก่อนตอน deploy application แต่ละทีนี่ปวดหัวมากครับ ต้องมานั่งไล่ลง dependencies บน server ทีละตัว เวอร์ชั่นก็ต้องตรงกันอีก ไม่งั้นก็ error แต่พอมี Docker ชีวิตง่ายขึ้นเยอะ อยากรู้เรื่อง Docker เพิ่มเติมลองไปอ่าน SiamCafe Blog ดูนะ มีเขียนไว้เยอะเลย


# ตัวอย่าง Dockerfile
FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3 python3-pip
WORKDIR /app
COPY . /app
RUN pip3 install -r requirements.txt
CMD ["python3", "app.py"]

Kubernetes Architecture

K8s มี components หลักๆ ดังนี้

ลองนึกภาพว่า Master Node เป็นเหมือนผู้จัดการร้านเน็ต ที่คอยสั่งงานให้ลูกน้อง (Worker Node) ทำงานต่างๆ เช่น เปิด/ปิดเครื่อง, ลงเกมใหม่, ซ่อมเครื่องเสีย ส่วน Pods ก็เหมือนเครื่องคอมพิวเตอร์แต่ละเครื่องในร้านเรา, Deployments ก็คือการที่เราจัดเครื่องคอมพิวเตอร์ในร้านใหม่, Services ก็คือการที่เราทำป้ายบอกทางให้ลูกค้ามาเล่นเกมที่เครื่องนั้นๆ ได้ง่ายๆ

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

เอาล่ะ ทีนี้เรามาดูวิธีใช้งาน K8s แบบคร่าวๆ กันบ้าง

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

Setting up a Kubernetes Cluster

การสร้าง K8s cluster ทำได้หลายวิธีครับ

สมัยผมหัด K8s แรกๆ ก็ใช้ Minikube นี่แหละครับ ง่ายดี แต่พอเริ่มใช้งานจริงจัง ก็ไปใช้ GKE ของ Google Cloud เพราะมัน manage ให้เราเกือบหมดทุกอย่าง


# ติดตั้ง Minikube
brew install minikube

# เริ่มต้น Minikube cluster
minikube start

Deploying an Application

หลังจากที่เรามี K8s cluster แล้ว เราก็สามารถ deploy application ของเราได้

  1. สร้าง Docker image ของ application
  2. Push image ไปยัง container registry (เช่น Docker Hub, Google Container Registry)
  3. สร้าง K8s deployment และ service

# ตัวอย่าง deployment.yaml
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: your-docker-hub-username/my-app:latest
        ports:
        - containerPort: 8080

# ตัวอย่าง service.yaml
apiVersion: v1
kind: Service
metadata:
  name: my-app-service
spec:
  selector:
    app: my-app
  ports:
  - protocol: TCP
    port: 80
    targetPort: 8080
  type: LoadBalancer

จากโค้ดข้างบน deployment จะสร้าง Pods 3 replicas ที่ run Docker image ของเรา ส่วน service จะ expose Pods เหล่านั้นผ่าน Load Balancer ทำให้เรา access application ของเราได้จากภายนอก

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

K8s ไม่ใช่ทางเลือกเดียวในการ deploy application นะครับ ยังมีทางเลือกอื่นๆ อีก เช่น

แต่ละทางเลือกก็มีข้อดีข้อเสียต่างกันไป เราต้องเลือกให้เหมาะสมกับ use case ของเรา

ทางเลือก ข้อดี ข้อเสีย
Virtual Machines (VMs) ง่าย Resource utilization ไม่ดี, Scaling ยาก
Docker Swarm ใช้ง่าย, Lightweight Features น้อยกว่า K8s
Kubernetes (K8s) Scalable, Feature-rich ซับซ้อน
Serverless ไม่ต้อง manage server, Scale อัตโนมัติ จำกัด use cases, Cold start

สรุปง่ายๆ ถ้า project เล็กๆ ไม่ซับซ้อน Docker Swarm ก็เพียงพอ แต่ถ้าต้องการ scale application แบบจริงจัง K8s คือตัวเลือกที่ดีที่สุด ส่วน Serverless เหมาะสำหรับงานที่เป็น event-driven เล็กๆ น้อยๆ

หวังว่าน้องๆ จะได้ไอเดียไปลองเล่น K8s กันนะครับ อย่ากลัวที่จะลองผิดลองถูก K8s มันซับซ้อนก็จริง แต่ถ้าเข้าใจหลักการแล้ว มันจะช่วยให้ชีวิตเราง่ายขึ้นเยอะเลย ลองเข้าไปดูบทความอื่นๆ ที่ SiamCafe Blog นะครับ มีเรื่อง DevOps อีกเยอะเลย

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

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

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

เอาล่ะ มาถึงส่วนสำคัญที่อยากจะแชร์กันจริงๆ จากประสบการณ์ที่คลุกคลีกับ IT มา 28 ปีเนี่ย มันสอนอะไรผมเยอะมาก โดยเฉพาะเรื่อง Kubernetes ที่ไม่ได้มีแค่ command line แต่เป็นเรื่องของการวางแผนและการจัดการระยะยาว

สมัยผมทำร้านเน็ต SiamCafe ยุคแรกๆ ปัญหาจุกจิกเยอะแยะไปหมด ตั้งแต่เครื่องแฮงค์ ไวรัสลง ไปจนถึงสายแลนหลุด (ฮา) Kubernetes ก็เหมือนกัน ถ้าไม่วางแผนให้ดี ปัญหาจะถาโถมเข้ามาแบบไม่ทันตั้งตัวเลยล่ะ

เทคนิคที่ 1: Monitoring is King

เรื่องนี้สำคัญสุดๆ อย่าคิดว่า deploy เสร็จแล้วจะจบ ต้อง monitor ทุกอย่างตั้งแต่ CPU, Memory, Network ไปจนถึง Log files ถ้าเจออะไรผิดปกติ จะได้แก้ทันท่วงที

ผมเคยเจอเคสที่ pod consume memory เยอะเกินไป เพราะโค้ดมี memory leak แก้ได้เพราะ monitor เจอตั้งแต่เนิ่นๆ ไม่งั้น production site ล่มแน่นอน


apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  template:
    spec:
      containers:
      - name: my-container
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"

เทคนิคที่ 2: Automate Everything Possible

Kubernetes เนี่ย เหมาะกับการ automation สุดๆ ใช้ Helm chart, Terraform, Ansible หรืออะไรก็ได้ที่คุณถนัด ทำให้ทุกอย่างเป็น code จะได้ deploy ง่ายๆ ทำซ้ำได้ และลดความผิดพลาด

สมัยก่อน deploy ทีต้อง ssh เข้าเครื่อง แก้ config ทีละไฟล์ ตอนนี้แค่ push code ขึ้น git ระบบก็จะ deploy ให้เอง ชีวิตง่ายขึ้นเยอะ iCafeForex ก็ใช้หลักการนี้แหละ

เทคนิคที่ 3: Backups are Your Best Friend

อย่ามองข้ามเรื่อง backup เด็ดขาด ทำ snapshot ของ etcd database เป็นประจำ และทดสอบ restore ด้วย เพราะถ้า etcd พัง Kubernetes ก็พังไปด้วย

ผมเคยเจอเหตุการณ์ data center ไฟดับ ทำให้ etcd เสียหาย โชคดีที่มี backup ก็เลยกู้คืนได้ทัน

เทคนิคที่ 4: Network Policies for Security

Kubernetes network policies ช่วยให้คุณควบคุม traffic ระหว่าง pods ได้ อย่างละเอียด กำหนดได้ว่า pod ไหนคุยกับ pod ไหนได้บ้าง เพื่อป้องกันการโจมตี

ลองนึกภาพว่ามี hacker เจาะเข้ามาใน pod นึง ถ้าไม่มี network policies hacker ก็สามารถเข้าถึง pod อื่นๆ ได้หมด แต่ถ้ามี policy กำหนดไว้ hacker ก็จะติดอยู่ใน pod นั้น ทำให้ความเสียหายจำกัด

เทคนิคที่ 5: Resource Quotas and Limits

กำหนด resource quotas และ limits ให้แต่ละ namespace เพื่อป้องกันไม่ให้ pod ใด pod หนึ่ง consume resources มากเกินไป จนทำให้ pod อื่นๆ ทำงานไม่ได้

เหมือนกับการแบ่งโควต้าอินเทอร์เน็ตในร้านเน็ต ถ้าไม่จำกัด bandwidth ใครโหลดบิท ก็จะทำให้คนอื่นเล่นเกมไม่ได้

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

ทำไม Kubernetes ถึงซับซ้อนจัง?

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

ควรใช้ Managed Kubernetes Service หรือ Self-Managed ดี?

ถ้าไม่มีทีมที่มีความเชี่ยวชาญด้าน Kubernetes มากนัก แนะนำให้ใช้ Managed Kubernetes Service เช่น Google Kubernetes Engine (GKE), Amazon Elastic Kubernetes Service (EKS) หรือ Azure Kubernetes Service (AKS) เพราะ provider จะดูแลเรื่อง infrastructure ให้เรา

Pod ติด Loop CrashBackOff แก้ยังไง?

CrashLoopBackOff หมายถึง pod พยายาม restart ตัวเองอยู่เรื่อยๆ สาเหตุอาจจะมาจากหลายอย่าง เช่น application error, memory leak, หรือ configuration ผิดพลาด ตรวจสอบ log ของ pod เพื่อหาสาเหตุ SiamCafe Blog มีบทความเกี่ยวกับเรื่องนี้ด้วยนะ

ต้องใช้ CI/CD tool อะไรดี?

มี CI/CD tool ให้เลือกใช้เยอะมาก เช่น Jenkins, GitLab CI, CircleCI, Travis CI เลือก tool ที่เหมาะกับ workflow ของคุณ และ integrate กับ Kubernetes ได้ง่าย

สรุป

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