ประกาศเกี่ยวกับ Kubernetes Web View (และภาพรวมโดยย่อของ UI ทางเว็บอื่นๆ สำหรับ Kubernetes)

บันทึก. แปล: ผู้เขียนเนื้อหาต้นฉบับคือ Henning Jacobs จาก Zalando เขาสร้างเว็บอินเทอร์เฟซใหม่สำหรับการทำงานกับ Kubernetes ซึ่งอยู่ในตำแหน่ง "kubectl สำหรับเว็บ" เหตุใดโครงการโอเพ่นซอร์สใหม่จึงปรากฏขึ้นและโซลูชันที่มีอยู่ไม่ตรงตามเกณฑ์ - อ่านบทความของเขา

ประกาศเกี่ยวกับ Kubernetes Web View (และภาพรวมโดยย่อของ UI ทางเว็บอื่นๆ สำหรับ Kubernetes)

ในโพสต์นี้ ฉันจะตรวจสอบเว็บอินเทอร์เฟซแบบโอเพ่นซอร์ส Kubernetes ต่างๆ วางโครงร่างข้อกำหนดของฉันสำหรับ UI สากล และอธิบายว่าทำไมฉันถึงพัฒนา Kubernetes WebView — อินเทอร์เฟซที่ออกแบบมาเพื่อให้ง่ายต่อการสนับสนุนและแก้ไขปัญหาหลายคลัสเตอร์ในคราวเดียว

กรณีการใช้งาน

ที่ Zalando เราให้บริการผู้ใช้ Kubernetes จำนวนมาก (900+) และคลัสเตอร์ (100+) มีกรณีการใช้งานทั่วไปสองสามกรณีที่จะได้รับประโยชน์จากเครื่องมือเว็บเฉพาะ:

  1. การสื่อสารกับเพื่อนร่วมงานเพื่อขอความช่วยเหลือ
  2. การตอบสนองต่อเหตุการณ์และการสอบสวนสาเหตุ

สนับสนุน

จากประสบการณ์ของฉัน การสื่อสารเพื่อสนับสนุนมักจะมีลักษณะเช่นนี้:

— ช่วยด้วย บริการของเรา XYZ ไม่พร้อมใช้งาน!
— คุณเห็นอะไรเมื่อคุณแสดง kubectl describe ingress ...?

หรือสิ่งที่คล้ายกันสำหรับ CRD:

— ฉันมีปัญหากับบริการระบุตัวตน...
- คำสั่งสร้างอะไร? kubectl describe platformcredentialsset ...?

การสื่อสารดังกล่าวมักจะเกิดจากการป้อนคำสั่งในรูปแบบต่างๆ kubectl เพื่อระบุปัญหา เป็นผลให้ทั้งสองฝ่ายในการสนทนาถูกบังคับให้สลับระหว่างเทอร์มินัลและแชทบนเว็บอย่างต่อเนื่อง อีกทั้งพวกเขายังสังเกตเห็นสถานการณ์ที่แตกต่างกันอีกด้วย

ดังนั้น ฉันต้องการให้ส่วนหน้าของเว็บ Kubernetes อนุญาตสิ่งต่อไปนี้:

  • ผู้ใช้สามารถทำได้ แลกเปลี่ยนลิงค์ และสังเกตสิ่งเดียวกัน
  • จะช่วยได้ หลีกเลี่ยงความผิดพลาดของมนุษย์ ในการสนับสนุน: ตัวอย่างเช่น การเข้าสู่คลัสเตอร์ที่ไม่ถูกต้องบนบรรทัดคำสั่ง การพิมพ์ผิดในคำสั่ง CLI ฯลฯ
  • จะอนุญาต สร้างมุมมองของคุณเอง เพื่อส่งให้เพื่อนร่วมงานคือเพิ่มคอลัมน์แท็กแสดงทรัพยากรหลายประเภทในหน้าเดียว
  • ตามหลักการแล้ว เครื่องมือเว็บนี้ควรให้คุณตั้งค่าได้ ลิงก์ "ลึก" ไปยังส่วนเฉพาะของ YAML (เช่น การชี้ให้เห็นพารามิเตอร์ที่ไม่ถูกต้องซึ่งทำให้เกิดความล้มเหลว)

การตอบสนองและการวิเคราะห์เหตุการณ์

การตอบสนองต่อเหตุการณ์โครงสร้างพื้นฐานจำเป็นต้องมีการตระหนักรู้ในสถานการณ์ ความสามารถในการประเมินผลกระทบ และมองหารูปแบบในกลุ่ม ตัวอย่างชีวิตจริงบางส่วน:

  • บริการการผลิตที่สำคัญกำลังประสบปัญหา และคุณจำเป็นต้องดำเนินการ ค้นหาทรัพยากร Kubernetes ทั้งหมดตามชื่อในทุกคลัสเตอร์เพื่อแก้ไขปัญหา;
  • โหนดเริ่มลดลงเมื่อปรับขนาดและคุณต้องการ ค้นหาพ็อดทั้งหมดที่มีสถานะ "รอดำเนินการ" ในทุกคลัสเตอร์เพื่อประเมินขอบเขตของปัญหา
  • ผู้ใช้แต่ละรายกำลังรายงานปัญหาเกี่ยวกับ DaemonSet ที่ใช้งานในทุกคลัสเตอร์และจำเป็นต้องทราบ ปัญหาคือทั้งหมดหรือไม่?.

วิธีแก้ปัญหามาตรฐานของฉันในกรณีเช่นนี้คือประมาณนั้น for i in $clusters; do kubectl ...; done. แน่นอนว่ามีความเป็นไปได้ที่จะพัฒนาเครื่องมือที่มีความสามารถคล้ายคลึงกัน

เว็บอินเตอร์เฟส Kubernetes ที่มีอยู่

โลกโอเพ่นซอร์สของเว็บอินเทอร์เฟซสำหรับ Kubernetes นั้นมีขนาดไม่ใหญ่มาก* ดังนั้นฉันจึงพยายามรวบรวมข้อมูลเพิ่มเติมโดยใช้ Twitter:

ประกาศเกี่ยวกับ Kubernetes Web View (และภาพรวมโดยย่อของ UI ทางเว็บอื่นๆ สำหรับ Kubernetes)

*คำอธิบายของฉันเกี่ยวกับเว็บอินเทอร์เฟซสำหรับ Kubernetes ในจำนวนจำกัด: บริการคลาวด์และผู้ขาย Kubernetes มักจะเสนอส่วนหน้าของตนเอง ดังนั้นตลาดสำหรับ Kubernetes UI ฟรีที่ "ดี" จึงค่อนข้างน้อย

ฉันได้เรียนรู้ผ่านทวีต K8แดช, คูเบอร์เนเตอร์ и ออกเทน. ลองดูพวกเขาและโซลูชันโอเพ่นซอร์สอื่น ๆ ที่มีอยู่ลองทำความเข้าใจว่ามันคืออะไร

K8แดช

“K8Dash เป็นวิธีที่ง่ายที่สุดในการจัดการคลัสเตอร์ Kubernetes”

ประกาศเกี่ยวกับ Kubernetes Web View (และภาพรวมโดยย่อของ UI ทางเว็บอื่นๆ สำหรับ Kubernetes)

K8แดช ดูดีและให้ความรู้สึกรวดเร็ว แต่มีข้อเสียหลายประการสำหรับกรณีการใช้งานที่ระบุไว้ข้างต้น:

  • ทำงานภายในขอบเขตของคลัสเตอร์เดียวเท่านั้น
  • สามารถเรียงลำดับและกรองได้ แต่ไม่มีลิงก์ถาวร
  • ไม่มีการรองรับข้อกำหนดทรัพยากรที่กำหนดเอง (CRD)

คูเบอร์เนเตอร์

“Kubernator เป็น UI ทางเลือกสำหรับ Kubernetes ต่างจากแดชบอร์ด Kubernetes ระดับสูงตรงที่ให้การควบคุมระดับต่ำและการมองเห็นออบเจ็กต์ทั้งหมดในคลัสเตอร์ได้อย่างยอดเยี่ยม พร้อมความสามารถในการสร้างใหม่ แก้ไข และแก้ไขข้อขัดแย้ง เนื่องจากเป็นแอปพลิเคชันฝั่งไคลเอ็นต์ทั้งหมด (เช่น kubectl) จึงไม่ต้องการแบ็คเอนด์ใดๆ นอกเหนือจากเซิร์ฟเวอร์ Kubernetes API และยังเคารพกฎการเข้าถึงคลัสเตอร์ด้วย”

ประกาศเกี่ยวกับ Kubernetes Web View (และภาพรวมโดยย่อของ UI ทางเว็บอื่นๆ สำหรับ Kubernetes)

นี่เป็นคำอธิบายที่ค่อนข้างแม่นยำ คูเบอร์เนเตอร์. น่าเสียดายที่ไม่มีคุณสมบัติบางอย่าง:

  • ให้บริการเพียงคลัสเตอร์เดียวเท่านั้น
  • ไม่มีโหมดมุมมองรายการ (เช่น คุณไม่สามารถแสดงพ็อดทั้งหมดที่มีสถานะ "รอดำเนินการ")

แดชบอร์ด Kubernetes

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

ประกาศเกี่ยวกับ Kubernetes Web View (และภาพรวมโดยย่อของ UI ทางเว็บอื่นๆ สำหรับ Kubernetes)

แต่น่าเสียดายที่ แดชบอร์ด Kubernetes ไม่ได้ช่วยอะไรกับกิจกรรมการสนับสนุนและการตอบสนองต่อเหตุการณ์ของฉันจริงๆ เพราะ:

  • ไม่มีลิงก์ถาวร เช่น เมื่อฉันกรองทรัพยากรหรือเปลี่ยนลำดับการจัดเรียง
  • ไม่มีวิธีง่ายๆ ในการกรองตามสถานะ - ตัวอย่างเช่น ดูพ็อดทั้งหมดที่มีสถานะ "รอดำเนินการ"
  • รองรับเพียงคลัสเตอร์เดียวเท่านั้น
  • ไม่รองรับ CRD (ฟีเจอร์นี้อยู่ระหว่างการพัฒนา)
  • ไม่มีคอลัมน์ที่กำหนดเอง (เช่น คอลัมน์ที่มีป้ายกำกับตามประเภท kubectl -L).

มุมมองการดำเนินงาน Kubernetes (kube-ops-view)

"ผู้สังเกตการณ์แดชบอร์ดระบบสำหรับพื้นที่คลัสเตอร์ K8s"

ประกาศเกี่ยวกับ Kubernetes Web View (และภาพรวมโดยย่อของ UI ทางเว็บอื่นๆ สำหรับ Kubernetes)

У มุมมองการทำงานของ Kubernetes วิธีการที่แตกต่างไปจากเดิมอย่างสิ้นเชิง: เครื่องมือนี้แสดงเฉพาะโหนดคลัสเตอร์และพ็อดโดยใช้ WebGL โดยไม่มีรายละเอียดออบเจ็กต์ที่เป็นข้อความ เป็นการดีสำหรับการดูภาพรวมโดยสรุปเกี่ยวกับสภาพของคลัสเตอร์ (พ็อดกำลังพังหรือไม่)* แต่ไม่เหมาะกับกรณีการใช้งานการสนับสนุนและการตอบสนองต่อเหตุการณ์ที่อธิบายไว้ข้างต้น

* บันทึก. แปล: ในแง่นี้ คุณอาจสนใจปลั๊กอินของเราด้วย แผนที่สถานะกราฟาน่าซึ่งเราได้พูดถึงรายละเอียดเพิ่มเติมใน บทความนี้.

รายงานทรัพยากร Kubernetes (รายงานทรัพยากร kube)

“รวบรวมคำขอทรัพยากรคลัสเตอร์พ็อดและ Kubernetes เปรียบเทียบกับการใช้ทรัพยากร และสร้าง HTML แบบคงที่”

ประกาศเกี่ยวกับ Kubernetes Web View (และภาพรวมโดยย่อของ UI ทางเว็บอื่นๆ สำหรับ Kubernetes)

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

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

ออกเทน

"แพลตฟอร์มเว็บที่ขยายได้สำหรับนักพัฒนาที่ได้รับการออกแบบมาเพื่อให้เข้าใจความซับซ้อนของคลัสเตอร์ Kubernetes ได้ดียิ่งขึ้น"

ประกาศเกี่ยวกับ Kubernetes Web View (และภาพรวมโดยย่อของ UI ทางเว็บอื่นๆ สำหรับ Kubernetes)

ออกเทนที่สร้างโดย VMware เป็นผลิตภัณฑ์ใหม่ที่ฉันได้เรียนรู้เมื่อไม่นานมานี้ ด้วยความช่วยเหลือดังกล่าว การสำรวจคลัสเตอร์บนเครื่องภายในเครื่องจึงสะดวก (มีการแสดงภาพด้วย) แต่จะจัดการปัญหาด้านการสนับสนุนและการตอบสนองต่อเหตุการณ์ในขอบเขตที่จำกัดเท่านั้น ข้อเสียของออคแทนท์:

  • ไม่มีการค้นหาคลัสเตอร์
  • ใช้งานได้บนเครื่องท้องถิ่นเท่านั้น (ไม่ปรับใช้กับคลัสเตอร์)
  • ไม่สามารถจัดเรียง/กรองวัตถุได้ (รองรับเฉพาะตัวเลือกป้ายกำกับเท่านั้น)
  • คุณไม่สามารถระบุคอลัมน์ที่กำหนดเองได้
  • คุณไม่สามารถแสดงรายการวัตถุตามเนมสเปซได้

ฉันยังมีปัญหากับความเสถียรของ Octant กับคลัสเตอร์ Zalando: บน CRD บางตัว เขากำลังล้มลง.

ขอแนะนำ Kubernetes Web View

"kubectl สำหรับเว็บ"

ประกาศเกี่ยวกับ Kubernetes Web View (และภาพรวมโดยย่อของ UI ทางเว็บอื่นๆ สำหรับ Kubernetes)

หลังจากวิเคราะห์ตัวเลือกอินเทอร์เฟซสำหรับ Kubernetes แล้ว ฉันจึงตัดสินใจสร้างใหม่: Kubernetes WebView. จริงๆ แล้ว ฉันแค่ต้องการพลังทั้งหมดเท่านั้น kubectl บนเว็บ ได้แก่

  • ความพร้อมใช้งานของการดำเนินการทั้งหมด (อ่านอย่างเดียว) ที่ผู้ใช้ต้องการใช้ kubectl
  • URL ทั้งหมดจะต้องเป็นแบบถาวรและเป็นตัวแทนของเพจในรูปแบบดั้งเดิม เพื่อให้เพื่อนร่วมงานสามารถแบ่งปันและใช้ในเครื่องมืออื่น ๆ ได้
  • รองรับออบเจ็กต์ Kubernetes ทั้งหมดซึ่งจะช่วยให้คุณสามารถแก้ไขปัญหาประเภทใดก็ได้
  • ควรดาวน์โหลดรายการทรัพยากรเพื่อการทำงานต่อไป (ในสเปรดชีต เครื่องมือ CLI เช่น grep) และการเก็บรักษา (เช่น สำหรับการชันสูตรพลิกศพ)
  • รองรับการเลือกทรัพยากรตามป้ายกำกับ (คล้ายกับ kubectl get .. -l);
  • ความสามารถในการสร้างรายการรวมของทรัพยากรประเภทต่างๆ (คล้ายกับ kubectl get all) เพื่อให้ได้ภาพการปฏิบัติงานร่วมกันระหว่างเพื่อนร่วมงาน (เช่น ในระหว่างการตอบสนองต่อเหตุการณ์)
  • ความสามารถในการเพิ่มลิงก์ในรายละเอียดอัจฉริยะที่กำหนดเองไปยังเครื่องมืออื่นๆ เช่น แดชบอร์ด ตัวบันทึก การลงทะเบียนแอปพลิเคชัน เป็นต้น เพื่ออำนวยความสะดวกในการแก้ไขปัญหา/แก้ไขข้อผิดพลาดและการตอบสนองต่อเหตุการณ์
  • ส่วนหน้าควรเรียบง่ายที่สุดเท่าที่จะเป็นไปได้ (HTML ล้วนๆ) เพื่อหลีกเลี่ยงปัญหาแบบสุ่ม เช่น JavaScript ที่ค้าง
  • รองรับหลายคลัสเตอร์เพื่อลดความซับซ้อนของการโต้ตอบระหว่างการให้คำปรึกษาระยะไกล (เช่น จดจำ URL เดียวเท่านั้น)
  • หากเป็นไปได้ ควรทำให้การวิเคราะห์สถานการณ์ง่ายขึ้น (เช่น มีลิงก์สำหรับดาวน์โหลดทรัพยากรสำหรับคลัสเตอร์/เนมสเปซทั้งหมด)
  • โอกาสเพิ่มเติมในการสร้างลิงก์ที่ยืดหยุ่นและเน้นข้อมูลข้อความ เพื่อให้คุณสามารถชี้เพื่อนร่วมงานไปยังส่วนเฉพาะในคำอธิบายทรัพยากร (บรรทัดใน YAML)
  • ความสามารถในการปรับแต่งตามความต้องการของลูกค้าเฉพาะ เช่น ช่วยให้คุณสร้างเทมเพลตการแสดงผลพิเศษสำหรับ CRD มุมมองตารางของคุณเอง และเปลี่ยนสไตล์ CSS
  • เครื่องมือสำหรับการสำรวจบรรทัดคำสั่งเพิ่มเติม (เช่น การแสดงคำสั่งแบบเต็ม kubectlพร้อมสำหรับการคัดลอก);

นอกเหนือจากงานที่ได้รับการแก้ไขใน Kubernetes Web View (ไม่ใช่เป้าหมาย) ยังคงอยู่:

  • นามธรรมของวัตถุ Kubernetes
  • การจัดการแอปพลิเคชัน (เช่น การจัดการการใช้งาน แผนภูมิ Helm ฯลฯ)
  • การดำเนินการเขียน (ต้องทำผ่านเครื่องมือ CI/CD และ/หรือ GitOps ที่ปลอดภัย)
  • อินเทอร์เฟซที่สวยงาม (JavaScript ธีม ฯลฯ );
  • การแสดงภาพ (ดู kube-ops-view);
  • การวิเคราะห์ต้นทุน (ดู รายงานทรัพยากร kube).

Kubernetes Web View ช่วยในการสนับสนุนและการตอบสนองต่อเหตุการณ์อย่างไร

สนับสนุน

  • ลิงก์ทั้งหมดเป็นแบบถาวรซึ่งทำให้การแลกเปลี่ยนข้อมูลกับเพื่อนร่วมงานง่ายขึ้น
  • คุณสามารถสร้างได้ ความคิดของคุณตัวอย่างเช่น แสดงการปรับใช้และพ็อดทั้งหมดด้วยเลเบลเฉพาะในสองคลัสเตอร์เฉพาะ (สามารถระบุชื่อคลัสเตอร์และประเภททรัพยากรได้หลายรายการในลิงก์ โดยคั่นด้วยเครื่องหมายจุลภาค)
  • คุณสามารถอ้างถึง บรรทัดเฉพาะในไฟล์ YAML วัตถุ ระบุปัญหาที่อาจเกิดขึ้นในข้อกำหนดวัตถุ

ประกาศเกี่ยวกับ Kubernetes Web View (และภาพรวมโดยย่อของ UI ทางเว็บอื่นๆ สำหรับ Kubernetes)
ค้นหาตามคลัสเตอร์ใน Kubernetes Web View

การตอบสนองต่อเหตุการณ์

  • ค้นหาทั่วโลก (การค้นหาทั่วโลก) ช่วยให้คุณค้นหาวัตถุในทุกคลัสเตอร์
  • มุมมองรายการ สามารถแสดงออบเจ็กต์ทั้งหมดที่มีสถานะ/คอลัมน์ที่แน่นอนในทุกคลัสเตอร์ (เช่น เราจำเป็นต้องค้นหาพ็อดทั้งหมดที่มีสถานะ "รอดำเนินการ")
  • สามารถดาวน์โหลดรายการวัตถุได้ ในรูปแบบค่าที่คั่นด้วยแท็บ (TSV) เพื่อการวิเคราะห์ในภายหลัง
  • ลิงก์ภายนอกที่ปรับแต่งได้ ช่วยให้คุณสลับไปยังแดชบอร์ดที่เกี่ยวข้องและเครื่องมืออื่นๆ

ประกาศเกี่ยวกับ Kubernetes Web View (และภาพรวมโดยย่อของ UI ทางเว็บอื่นๆ สำหรับ Kubernetes)
Kubernetes Web View: รายการพ็อดที่มีสถานะ "รอดำเนินการ" ในทุกคลัสเตอร์

หากคุณต้องการลองใช้ Kubernetes Web View ฉันแนะนำให้ลองดู เอกสาร หรือดูที่ การสาธิตสด.

แน่นอนว่าอินเทอร์เฟซอาจดีกว่านี้ แต่สำหรับตอนนี้ Kubernetes Web View เป็นเครื่องมือสำหรับ "ผู้ใช้ขั้นสูง" ที่ไม่อายที่จะจัดการกับเส้นทาง URL ด้วยตนเองหากจำเป็น หากมีความคิดเห็น/เพิ่มเติม/ข้อเสนอแนะ โปรดติดต่อ กับฉันบน Twitter!

บทความนี้เป็นประวัติโดยย่อเกี่ยวกับความเป็นมาที่นำไปสู่การสร้าง Kubernetes Web View จะตามมาอีก! (บันทึก. แปล: พวกเขาควรจะคาดหวังใน บล็อกของผู้เขียน.)

ป.ล. จากนักแปล

อ่านเพิ่มเติมในบล็อกของเรา:

ที่มา: will.com

เพิ่มความคิดเห็น