K8 (Kubernetes)
โซลูชั่นเพื่อการจัดการ Container
Date : 26/03/2024
เครื่องมือ Open Source จาก Google ที่จะช่วยในเรื่อง Automating Deployment บริหารจัดการทรัพยากรได้อย่างอัตโนมัติ
Kubernetes คืออะไร?
Kubernetes (K8s) คือ เครื่องมือ Open Source จาก Google ที่จะช่วยในเรื่อง Automating Deployment บริหารจัดการทรัพยากรได้อย่างอัตโนมัติ, Scaling Application และ Containerized Applications ช่วยจัดการ Container ให้มีประสิทธิภาพสูงสุด เพื่อทำให้ Application ของเราทำงานได้ตลอดเวลา ถ้าหากนึกภาพไม่ออก ให้ลองนึกถึงวง Orchestra ขนาดใหญ่ที่มี Conductor เป็นผู้ควบคุมวง โดย Container ก็เปรียบเสมือนนักดนตรีในวงที่มี Kubernetes เป็น Conductor นั่นเอง (Container Orchestration)
ซึ่งตัว Kubernetes นี้เองที่จะช่วยให้เราสามารถ deploy application อีกทั้งสามารถบริหารจัดการทรัพยากรได้อย่างอัตโนมัติ และที่สำคัญที่สุดคือสามารถทำให้ Application ของเราทำงานได้ตลอดเวลา นับเป็นหนึ่งในเครื่องมือยอดนิยมในการทำงาน DecSecOps ในปัจจุบัน
Docker
แพลตฟอร์มซอฟต์แวร์ที่ช่วยสร้าง ทดสอบ และปรับขนาดแอปพลิเคชั่นให้เหมาะกับทุกสภาพแวดล้อม เพื่อติดตั้งใช้งานจริงได้อย่างรวดเร็ว ซึ่ง Docker จะบรรจุซอฟต์แวร์ลงไปในหน่วยที่เป็นมาตรฐานที่เรียกว่า คอนเทนเนอร์ และจะมีทุกสิ่งที่ซอฟต์แวร์ต้องใช้ในการเรียกใช้งาน รวมทั้งไลบรารี เครื่องมือสำหรับระบบ โค้ด และรันไทม์
Docker architecture
Containers & VM
คอนเทนเนอร์ถูกสร้างขึ้นมาเพื่อแก้ปัญหาข้างต้น โดยมีฮาร์ดแวร์และ OS เพียงชุดเดียวกัน ลดความซ้ำซ้อนของการใช้ทรัพยากรลง ส่วนตัวแอพพลิเคชันและซอฟต์แวร์ซึ่งเป็นจุดที่แตกต่างกันไปก็จะมี "container" จุดเด่นของคอนเทนเนอร์จึงเป็นเรื่องการใช้ทรัพยากรที่น้อยกว่า virtualization มาก เพราะอิมเมจของคอนเทนเนอร์อาจมีขนาดเพียงไม่กี่สิบ MB ในขณะที่อิมเมจของ VM ต้องใช้พื้นที่หลาย GB ในบางครั้ง คอนเทนเนอร์ถูกเรียกชื่อในทางเทคนิคว่า Operating-system-level virtualization หรือการสร้าง VM ที่ระดับ OS โดยเราไม่ต้องสร้างเครื่องคอมพิวเตอร์ขึ้นมาทั้งตัว แต่ข้อเสียของคอนเทนเนอร์ก็ย่อมเป็นความยืดหยุ่นที่น้อยกว่า virtualization แบบดั้งเดิม โดยเฉพาะไม่สามารถใช้ OS ที่แตกต่างกันระหว่าง Guest และ Host ได้
Kubernetes (K8s)
เครื่องมือ Open Source จาก Google ที่จะช่วยในเรื่อง AutomatingDeployment บริหารจัดการทรัพยากรได้อย่างอัตโนมัติ Scaling Application และ Containerized Applications ช่วยจัดการ Container ให้มีประสิทธิภาพสูงสุด เพื่อทำให้ Application ทำงานได้ตลอดเวลาถ้าหากนึกภาพไม่ออก ให้ลองนึกถึงวง Orchestra ขนาดใหญ่ที่มี Conductor เป็นผู้ควบคุมวง โดย Container ก็เปรียบเสมือนนักดนตรีในวงที่มี Kubernetes เป็น Conductor นั่นเอง
PODs Deployment
เป็นหน่วยที่เล็กที่สุดใน k8s มี Applications Run อยู่ใน Container การบริหาร PODs โดยให้ระบบ kubernetes ทำการควบคุมให้
Services
1. Node Port
เป็นทางเข้าเพื่อติดต่อกับ pod
2. Cluster IP
เปิดการสื่อสาร ระหว่าง Pod กับ Service ที่อยู่ภายในเท่านั้น
3. Load Balancer
เป็น IP กลางสำหรับแบ่งช่องทางการเข้าถึง
เป็น IP กลางสำหรับแบ่งช่องทางการเข้าถึง
4. External (Ingress)
เป็น IP กลางสำหรับแบ่งช่องทางการเข้าถึง
เป็น IP กลางสำหรับแบ่งช่องทางการเข้าถึง
DNS Service เป็นผู้บริหารจัดการ IP ภายในอัตโนมัติ
1. Connection String
DNS Service จะทำหน้าที่จัดการ IP ให้อัตโนมัติ และการใช้งานใน Source Code ก็จะเรียกใช้งานแค่ชื่อ service เท่านั้น ที่เหลือ DNS ทำหน้าที่จัดการ IP
2. Ingress
ใช้สำหรับกระจาย Traffic (จราจร) ไปยัง Service ต่างๆ โดยขึ้นอยู่กับ routing rules ต้นทางที่กำหนด
ใช้สำหรับกระจาย Traffic (จราจร) ไปยัง Service ต่างๆ โดยขึ้นอยู่กับ routing rules ต้นทางที่กำหนด
3. Storage (Persistent Volume)
ช่วยเก็บข้อมูลในกรณีที่ Pod เสียหาย
ช่วยเก็บข้อมูลในกรณีที่ Pod เสียหาย