Search this site
Embedded Files
  • หลักสูตรอบรม
    • หลักสูตร e-Document 2
    • หลักสูตร K8s
    • หลักสูตร CI/CD
  • แผนการอบรมประจำปี
    • แผนการอบรมประจำปี
    • สถิติการเข้าอบรม
  • SamartSkills
  • NUSkill
  • ติดต่อเรา
 
  • หลักสูตรอบรม
    • หลักสูตร e-Document 2
    • หลักสูตร K8s
    • หลักสูตร CI/CD
  • แผนการอบรมประจำปี
    • แผนการอบรมประจำปี
    • สถิติการเข้าอบรม
  • SamartSkills
  • NUSkill
  • ติดต่อเรา
  • More
    • หลักสูตรอบรม
      • หลักสูตร e-Document 2
      • หลักสูตร K8s
      • หลักสูตร CI/CD
    • แผนการอบรมประจำปี
      • แผนการอบรมประจำปี
      • สถิติการเข้าอบรม
    • SamartSkills
    • NUSkill
    • ติดต่อเรา

⌂ หน้าแรก

วิทยากร : พิชญา แสนคำ

บุคลากรสังกัดงานระบบสารสนเทศ

กองบริการเทคโนโลยีสารสนเทศและการสื่อสาร

มหาวิทยาลัยนเรศวร

ตรวจสอบรายชื่อ

รายละเอียดหลักสูตร

  • แนะนำภาพรวมหลักสูตรและเป้าหมายการเรียนรู้

  • ทบทวน 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 เท่านั้น   



Email : citcoms_training@nu.ac.thWebsite : citcoms.nu.ac.thFacebook : @citcomsnuTel : 055 96 1575
Report abuse
Report abuse