วิทยากร : พิชญา แสนคำ
บุคลากรสังกัดงานระบบสารสนเทศ
กองบริการเทคโนโลยีสารสนเทศและการสื่อสาร
มหาวิทยาลัยนเรศวร
รายละเอียดหลักสูตร
แนะนำภาพรวมหลักสูตรและเป้าหมายการเรียนรู้
ทบทวน Container : Container คืออะไร? ทำไมต้องใช้? ปัญหาของการจัดการ Container จำนวนมาก (The Scaling Problem)
Kubernetes คืออะไร? : K8s เข้ามาแก้ปัญหาอะไร (Orchestration, Self-healing, Scaling) และประวัติความเป็นมา
ปฏิบัติ (Lab 1) : การติดตั้งและเตรียมเครื่องมือ
ติดตั้ง kubectl (เครื่องมือ Command Line สำหรับคุยกับ K8s)
ติดตั้ง Local Kubernetes Cluster ด้วย Minikube หรือ Kind
ตรวจสอบสถานะของ Cluster ด้วยคำสั่ง kubectl cluster-info และ kubectl get nodes
สถาปัตยกรรม K8s :
• Control Plane (ฝั่ง Master) : api-server, scheduler, etcd, controller-manager
ทำหน้าที่อะไรบ้าง
• Worker Node (ฝั่ง Worker) : kubelet, kube-proxy, Container Runtime
ทำหน้าที่อะไรบ้าง
รู้จักกับ Pod : หน่วยที่เล็กที่สุดใน K8s คืออะไร ประกอบด้วยอะไรได้บ้าง
ปฏิบัติ (Lab 2) : การ Deploy และจัดการ Pod
Deploy แอปพลิเคชัน Node.js ด้วยคำสั่ง kubectl run
ตรวจสอบสถานะของ Pod ด้วย kubectl get pods
ดูรายละเอียดเชิงลึกของ Pod ด้วย kubectl describe pod <ชื่อ pod>
ดู Log ของแอปพลิเคชันด้วย kubectl logs <ชื่อ pod>
ทดลองเข้าถึงแอปพลิเคชันภายใน Cluster ด้วย kubectl port-forward
• ลบ Pod ทิ้งด้วย kubectl delete pod <ชื่อ pod>
Declarative vs. Imperative : ทำไมเราควรใช้ไฟล์ YAML (Declarative) แทนการใช้คำสั่ง (Imperative)
รู้จักกับ Deployment : Object ที่ช่วยให้การ Deploy และอัปเดตแอปพลิเคชันเป็นเรื่องง่าย จัดการเรื่อง Scaling และ Rolling Update
ปฏิบัติ (Lab 3) : การ Deploy แอปพลิเคชันด้วยไฟล์ YAML
เรียนรู้โครงสร้างพื้นฐานของไฟล์ YAML สำหรับ K8s (apiVersion, kind, metadata, spec)
สร้างไฟล์ deployment.yaml สำหรับแอปพลิเคชัน Node.js
นำไฟล์ไปใช้งานด้วย kubectl apply -f deployment.yaml
ทดลอง Scale Out (เพิ่มจำนวน Pods) และ Scale In (ลดจำนวน Pods) โดยการแก้ไข
ไฟล์ YAML
ทดลองทำ Rolling Update โดยการเปลี่ยนเวอร์ชันของ Image
Pod Networking : Pods คุยกันได้อย่างไร?
รู้จักกับ Service : Object ที่ทำหน้าที่เป็น "ตัวกลาง" และสร้าง End-point ที่คงที่สำหรับเข้าถึงกลุ่มของ Pods
ประเภทของ Service : ClusterIP, NodePort, และ LoadBalancer แตกต่างและใช้งานเมื่อไหร่
ปฏิปฏิบัติ (Lab 4) : การเปิดให้ภายนอกเข้าถึงแอปพลิเคชัน
สร้างไฟล์ service.yaml เพื่อเปิดการเชื่อมต่อให้กับ Deployment ของ Node.js
เลือกใช้ Service ประเภท NodePort เพื่อให้สามารถเข้าถึงได้จากภายนอก Local Cluster
นำไฟล์ไปใช้งาน และทดลองเข้าถึงแอปพลิเคชันผ่าน Web Browser
ทำไมไม่ควรเก็บค่า Config ไว้ใน Docker Image?
รู้จักกับ ConfigMap : Object สำหรับเก็บค่า Config ทั่วไปที่ไม่ใช่ข้อมูลลับ
รู้จักกับ Secret : Object สำหรับเก็บข้อมูลลับโดยเฉพาะ (เช่น API Key, Password)
ปฏิบัติ (Lab 5) : การส่งค่า Config และ Secret ให้แอปพลิเคชัน
สร้าง ConfigMap และ Secret
แก้ไขไฟล์ deployment.yaml เพื่อส่งค่าจาก ConfigMap และ Secret เข้าไปเป็น Environment Variables ให้กับ Container
ตรวจสอบว่าแอปพลิเคชันได้รับค่า Config ที่ถูกต้อง
Stateless vs. Stateful : ความท้าทายในการรันแอปพลิเคชันที่ต้องเก็บข้อมูล
รู้จักกับ Volumes: การใช้งาน Storage ภายใน Pod
รู้จักกับ Persistent Storage : PersistentVolume (PV) และ PersistentVolumeClaim (PVC) คืออะไร และทำงานร่วมกันอย่างไร
ปฏิบัติ (Lab 6) : ทำให้แอปพลิเคชันเก็บข้อมูลแบบถาวร
สร้างไฟล์ pvc.yaml เพื่อร้องขอพื้นที่จัดเก็บข้อมูล
แก้ไขไฟล์ deployment.yaml เพื่อนำ PVC ที่สร้าง ไป mount เป็น Volume ให้กับ Container
ทดสอบโดยการเขียนไฟล์ลงใน Volume, ลบ Pod ทิ้ง, และดูว่าเมื่อ Pod ใหม่ถูกสร้างขึ้นมา ข้อมูลยังคงอยู่
K8s รู้ได้อย่างไรว่าแอปพลิเคชันของเรา "พร้อมใช้งาน" หรือ "แฮงค์" ไปแล้ว?
รู้จักกับ Health Probes :
• Liveness Probe : สำหรับตรวจสอบว่าแอปพลิเคชันยังทำงานอยู่หรือไม่ (ถ้าไม่ จะถูก Restart)
• Readiness Probe : สำหรับตรวจสอบว่าแอปพลิเคชันพร้อมรับ Traffic ใหม่หรือไม่ (ถ้าไม่ จะถูกนำออกจาก Service ชั่วคราว)
ปฏิบัติ (Lab 7) : การเพิ่ม Health Probes
แก้ไขไฟล์ deployment.yaml เพื่อเพิ่ม livenessProbe และ readinessProbe
กำหนด Probe ให้เรียกใช้ Endpoint /healthz ที่มีอยู่ใน Node.js API ตัวอย่าง
สังเกตสถานะของ Pod และทดลองทำให้ Probe Fail เพื่อดูพฤติกรรมการกู้คืนของ K8s
ภาพรวม Helm : Package Manager สำหรับ K8s ช่วยให้การติดตั้งแอปพลิเคชันซับซ้อนง่ายขึ้น
ภาพรวม Ingress : วิธีการจัดการเส้นทาง (Routing) จากภายนอกเข้ามายัง Service ต่างๆ ภายใน Cluster
สรุปเนื้อหาทั้งหมด และแนวทางการเรียนรู้ต่อ (CI/CD, Service Mesh, CKA/CKAD Certification)
ช่วงถาม-ตอบ (Final Q&A)
ความรู้พื้นฐานของผู้เข้ารับการอบรม
-
โปรแกรมที่ใช้ในการอบรม
-
เอกสารประกอบการอบรม
-
* หลักสูตรสำหรับผู้ดูแลระบบเครือข่าย และ Programmer เท่านั้น