Kubernetes คือเครื่องมือที่ทำให้องค์กรสามารถควบคุมจัดการ Container จำนวนมากให้เป็นไปตามที่เราต้องการได้อย่างอัตโนมัติ โดยผู้ดูแลสามารถกำหนดช่วงเวลาในการทำงาน ตรวจสอบสุขภาพ หรือกำหนดจำนวนของ Container เพื่อรองรับการให้บริการ เป็นต้น
แต่รู้หรือไม่ว่าความสามารถที่ชาญฉลาดนี้ได้ซ่อนเลเยอร์ความซับซ้อนไว้มากมาย ซึ่งในมุมของการทำ Kubernetes Monitoring เราจำเป็นต้องเข้าใจเรื่องเหล่านั้น ซึ่งในบทความนี้เราจะขอพาทุกท่านไปรู้จักกับองค์ประกอบเบื้องหลังและความซับซ้อนที่รออยู่ รวมถึงเครื่องมือแบบใดที่ช่วยให้งานของเรานั้นง่ายขึ้นครับ
องค์ประกอบภายในของ Kubernetes
เพื่อความเข้าใจได้ง่ายขึ้น เราจะขออธิบายโครงสร้างองค์ประกอบของ Kubernetes ด้วยรูปภาพประกอบดังนี้
PODS คือยูนิตที่เล็กที่สุดภายใน Kubernetes ที่แอดมินสามารถควบคุมได้ โดยภายในก็คือกลุ่มของ Containerized ที่จะถูกปฏิบัติเหมือนกันจากการตั้งค่าระดับ PODS โดยแต่ละ Container ยังรันคนละแอปพลิเคชันกันได้
PODS รันอยู่บนสิ่งที่เรียกว่าโหนดซึ่งเป็นเครื่อง VM หรือ Physical ก็ได้ และเมื่อโหนดรวมตัวกันเป็นกลุ่มก็จะนำไปสู่สิ่งที่เรียกว่า Clusters โดยจะมีเครื่องหนึ่งทำหน้าที่เป็นผู้รับผิดชอบหลักอย่างน้อยที่ตัวหรือ Master (ตามคำแนะนำควรมี Master มากกว่า 1 ตัวเพื่อการันตีเรื่อง HA) ส่วน Kubelet ทำหน้าที่การันตีว่าทุก Container ที่ถูกประกาศไว้ในไฟล์ PodSpec (พูดถึง อิมเมจที่ใช้ ลักษณะการได้มาของอิมเมจ ข้อกำหนดของ DNS และอื่นๆ) จะถูกรันอย่างแน่นอน
อีกหนึ่งคำศัพท์ที่ไม่ได้ปรากฏอยู่ในภาพ แต่ควรทราบด้วยคือคอนเซปต์ของ namespaces ซึ่งทำให้สามารถแบ่งทรัพยากรของ Cluster ออกเป็นกลุ่มย่อยได้อีก จุดประสงค์ก็เพื่อใช้ในสภาพแวดล้อมต่างๆที่อาจมีการทำงานร่วมกัน อย่างไรก็ดีเป็นสิ่งที่ต้องพิจารณาให้ถี่ถ้วนเหมาะสม
นอกจากนี้ยังมีเรื่องของ Replica Set ที่คอยรักษาให้มีจำนวนของ PODS ตรงตามที่กำหนดไว้เสมอ และเนื่องจาก PODS เกิดขึ้นและหายไปได้เสมอ ดังนั้น IP Address จึงไม่สเถียรทำให้การสื่อสารต้องผ่านสิ่งที่เรียกว่า Services ที่สามารถแมป IP Address ให้โลกภายนอกเข้าถึงได้ โดยไม่ต้องรู้ว่าเบื้องหลังมี PODS เกิดขึ้นและหายไปอย่างไร
4 ความท้าทายของ Kubernetes Monitoring
จากข้อมูลข้างต้นจะเห็นได้ว่า Kubernetes มีความซับซ้อนอยู่ไม่น้อยเลย ซึ่งนำไปสู่ความท้าทาย 4 เรื่อง ที่ท่านต้องคำนึงถึงเมื่อต้องการทำ Monitoring คือ
1.) กลไกการสร้าง Tag และ Label กลายเป็นเรื่องที่จำเป็นเพราะจะช่วยให้เข้าใจข้อมูลที่เก็บมาได้ เช่น Backend, Frontend, Staging เป็นต้น
2.) ในระบบของ Kubernetes คำถามที่ตอบได้ยากที่สุดคือ “แอปพลิเคชันของท่านรันอยู่ที่ใดกันแน่” แม้ว่าเราจะสามารถติดตามข้อมูลด้วยตนเองได้ แต่ธรรมชาติของ Container ที่เกิดและหายไปอยู่เสมอทำให้การติดตามไม่ง่ายนัก ด้วยเหตุนี้เองจึงมีเครื่องมือทำหน้าที่ช่วยค้นหาบริการ (Service Discovery) ซึ่งจะคอยตรวจสอบความเปลี่ยนแปลงใน Pod และการคอนฟิค Container กล่าวได้ว่า Service Discovery เป็นสิ่งที่ขาดไม่ได้สำหรับการทำ Monitoring
3.) Kubernetes เวอร์ชัน 1.3 เป็นต้นมา ความสามารถ ‘Kubernetes Cluster Federation’ ได้ทลายขีดจำกัดการใช้งานของ Kubernetes ให้กระจายออกในหลายดาต้าเซนเตอร์หรือข้ามผู้ให้บริการคลาวด์ได้ แต่เช่นกันความท้าทายที่เกิดขึ้นคือการรวมข้อมูลจากแหล่งต่างๆเข้าด้วยกัน
4.) การมาถึงของ Kubernetes ได้เพิ่มเลเยอร์ใหม่ที่สูงกว่า Container ย้อนกลับไปสมัยอดีตที่เรามีเพียงโฮสต์และแอปพลิเคชัน คำถามของ Monitoring คือทราบว่าแอปอะไรรันอยู่บนโฮสต์ แต่คำถามเหล่านี้ค่อยๆยากขึ้นเรื่อยมา โดยเฉพาะ Kubernetes ที่เราไม่สามารถทราบได้เลยว่ามี Container หรือแอปใดที่รันอยู่บนโฮสต์นั้น ผู้ดูแลต้องมีเครื่องมือที่สามารถเข้าถึงภายใน Kubernetes อย่างแท้จริง
สามารถดาวน์โหลด Whitepaper “How to monitoring Kubernetes effectively” ได้ที่https://www.datadoghq.com/resources/effective-kubernetes-monitoring-whitepaper/
เมื่อเจาะลึกถึงกลไกการทำงานของตัว Kubernetes และธรรมชาติของ Container จะเห็นได้ว่าการทำ Monitoring ไม่ใช่เรื่องง่ายเลย เพราะจำเป็นต้องทำงานแบบ Manual เองอีกมากมายถึงจะสกัดเอาคำตอบออกมาได้ อีกทั้งการติดตามก็ยากลำบาก แต่จะดีกว่าไหมหากมีเครื่องมือที่ถูกออกแบบมาให้งานของท่านง่ายขึ้นกว่าที่เคย
Datadog เครื่องมือ Kubernetes Monitoring ที่ช่วยให้งานของคุณง่ายขึ้นเยอะ!
เครื่องมือ Monitoring ที่ดีที่สุดคือเครื่องมือที่เข้าใจได้ง่ายที่สุดตั้งแต่ครั้งแรก ซึ่ง Datadog ได้ออกแบบบริการ Kubernetes Monitoring ด้วยจุดประสงค์นี้ เพียงแค่หน้า Overview ก็นำไปสู่การไขปัญหามากมาย
- จากภาพประกอบจะเห็นได้ว่าหน้า Overview ได้ฉายภาพให้เห็นถึงจำนวนของสิ่งที่เกี่ยวข้องได้ทั้งองค์กร ทำให้ทีมงานมองเห็นภาพรวมได้ตรงกันและสามารถกดเพื่อขยายผลปลีกย่อยต่อไปได้ แม้แต่ทีมงานหน้าใหม่ก็สามารถเข้ามาเริ่มเรียนรู้ได้ง่ายๆจากหัวข้อนี้ ผู้ใช้งานสามารถเข้าไปเจาะลึกรายละเอียดภายในได้เช่นจากตัวอย่างในหน้ากรอบของ PODS เมื่อมีการกดเข้าไปจะพบกับลิสต์รายการของ PODS ที่ขึ้นสถานะ CrashLoopBackOff ซึ่งหมายถึงเกิดปัญหาบางอย่างทำให้ POD มีการรีสตาร์ทอยู่เรื่อยๆ ทั้งนี้ Datadog สามารถแนะนำวิธีการแก้ปัญหาที่พบได้ทั่วไปให้แก่ผู้ใช้งานได้
- มีหน้าแนะนำ Best Practice ได้ว่าปัญหาควรถูกแก้ไขอย่างไร โดยมีการจัดหมวดหมู่ปัญหาที่พบได้บ่อยเชื่อมโยงเข้ากับสถานการณ์ขององค์กร ที่สามารถนำไปสู่ต้นตอของปัญหาได้ต่อไป
- ต้องยอมรับว่าปัญหาสามารถมองได้จากหลายมุม ทำให้ผู้ที่ยังไม่เชี่ยวชาญอาจจะนึกภาพไม่ออกว่าควรจะใช้แดชบอร์ดรูปแบบใด ซึ่งในหน้า Overview ท่านสามารถเลือกแดชบอร์ดแนะนำที่เสมือนเป็นทางลัดให้ตรงไปถึงปัญหาที่ต้องการได้
- การใช้งานทุกเครื่องมือจะต้องมีการตั้งค่าเสียก่อนเป็นเรื่องปกติ ในกรณีของเครื่องมือ Monitoring ท่านก็ต้องกำหนดก่อนว่าจะติดตามข้อมูลอะไร ซึ่งมีปัจจัยมากมาย ในกรณีที่ไม่ทราบหน้าจอแนะนำในส่วน Overview สามารถช่วยท่านเริ่มต้นได้ง่ายขึ้น
- การเข้าใจความสัมพันธ์ระหว่างองค์ประกอบในระบบเป็นเรื่องสำคัญอย่างยิ่ง ซึ่งความสามารถ Visualize จะทำให้ผู้ใช้งานเข้าใจความสัมพันธ์ต่างๆจากแผนภาพ โดยเฉพาะกับน้องใหม่ของทีมที่อาจเพิ่งเข้ามาร่วมงานก็จะเข้าใจได้ทันที ตลอดจนยังช่วยในเรื่องการวิเคราะห์คอนฟิคว่าดีพอหรือยัง เช่น สิทธิ์การแก้ไขเปลี่ยนแปลงคลัสเตอร์ ที่เราไม่จำเป็นต้องเข้าไปแกะเนื้อหาใน YAML เลย นอกจากนี้ยังสามารถทราบได้ว่าแต่ละ PODS มีการคอนฟิคการสื่อสารให้คุยกับส่วนไหนได้บ้าง เพราะหากตั้งค่าได้ไม่ดีการทำงานก็จะไม่ถูกต้องหรือใช้การไม่ได้เลย
- การกำหนดสิทธิ์ใน Kubernetes เป็นความท้าทายอย่างยิ่ง จากคอนเซปต์การทำงานภายในเช่น PODS, Cluster และ Namespace แต่ผู้ใช้งาน Datadog หมดห่วงกับเรื่องเหล่านี้ไปได้เลย เพราะสามารถตั้งค่าอย่างละเอียดด้วยสิทธิ์หลายระดับว่าจะกระทำการใดกับทรัพยากรใดได้บ้าง มากกว่านั้นยังครอบคลุมไปถึงการสร้าง Policy การใช้งานให้ Storage ได้อีกด้วย
- ความรู้คือหัวใจในทุกเรื่องราว หากผู้ใช้งานยังไม่มีความมั่นใจหรืออื่นใดสามารถเรียนรู้เพิ่มเติมจาก Datadog ได้ในหลายช่องทางทั้งเอกสารคู่มือ คอร์สเรียน หรือบล็อก
ท่านใดสนใจเครื่องมือของ Datadog สามารถรับสิทธิ์ทดลองใช้งานเป็นเวลา 14 วัน เพียงลงทะเบียนได้ที่ https://www.datadoghq.com/blog/unify-kubernetes-insights-with-the-kubernetes-overview-page/#
ท่านใดสนใจติดต่อทีมงาน Datadog Thailand เพื่อขอคำปรึกษาหรือการสาธิตโซลูชันได้ที่นี่
ที่มาและเครดิตรูปภาพ :
https://www.datadoghq.com/blog/unify-kubernetes-insights-with-the-kubernetes-overview-page/#
https://www.datadoghq.com/blog/the-power-of-tagged-metrics/
https://www.datadoghq.com/blog/navigate-kubernetes-resources-with-live-containers/