ความแตกต่างระหว่าง Mesos ของ Apache และ Kubernetes ของ Google คืออะไร


385

อะไรคือความแตกต่างระหว่าง Mesos ของ Apache และ Kubernetes ของ Google ฉันเข้าใจว่าทั้งสองเป็นซอฟต์แวร์การจัดการคลัสเตอร์เซิร์ฟเวอร์ ใครบ้างที่สามารถอธิบายความแตกต่างที่สำคัญ - เมื่อใดที่กรอบการทำงานที่ต้องการ?

ทำไมคุณต้องการใช้Kubernetes บน Mesosphere ?

คำตอบ:


516

Kubernetes เป็นโครงการโอเพนซอร์ซที่นำความสามารถในการจัดการคลัสเตอร์ 'สไตล์ Google' มาสู่โลกของเครื่องเสมือนหรือสถานการณ์ 'บนโลหะ' มันทำงานได้ดีมากกับสภาพแวดล้อมระบบปฏิบัติการที่ทันสมัย ​​(เช่น CoreOS หรือ Red Hat Atomic) ที่ให้ 'โหนด' ของคอมพิวเตอร์น้ำหนักเบาที่จัดการให้คุณ มันเขียนใน Golang และมีน้ำหนักเบาเป็นโมดูลพกพาและยืดได้ เรา (ทีม Kubernetes) กำลังทำงานร่วมกับ บริษัท เทคโนโลยีต่างๆ (รวมถึง Mesosphere ผู้ดูแลโครงการโอเพ่นซอร์ส Mesos) เพื่อสร้าง Kubernetes เป็นวิธีมาตรฐานในการโต้ตอบกับกลุ่มคอมพิวเตอร์ แนวคิดคือการทำซ้ำรูปแบบที่เราเห็นผู้คนจำเป็นต้องสร้างแอปพลิเคชันคลัสเตอร์ตามประสบการณ์ของเราที่ Google บางแนวคิดเหล่านี้รวมถึง:

  • ฝัก - วิธีจัดกลุ่มคอนเทนเนอร์เข้าด้วยกัน
  • ตัวควบคุมการจำลองแบบ - วิธีจัดการวงจรชีวิตของคอนเทนเนอร์
  • ป้ายกำกับ - วิธีในการค้นหาและสืบค้นตู้คอนเทนเนอร์และ
  • บริการ - ชุดของคอนเทนเนอร์ที่ทำหน้าที่ทั่วไป

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

ด้วย Mesos มีการทับซ้อนจำนวนพอสมควรในแง่ของการมองเห็นพื้นฐาน แต่ผลิตภัณฑ์มีจุดที่แตกต่างกันในวงจรชีวิตของพวกเขาและมีจุดหวานที่แตกต่างกัน Mesos เป็นเคอร์เนลระบบแบบกระจายที่รวมเข้าด้วยกันหลาย ๆ เครื่องในคอมพิวเตอร์เชิงตรรกะ มันเกิดมาเพื่อโลกที่คุณมีทรัพยากรทางกายภาพมากมายเพื่อสร้างคลัสเตอร์การคำนวณขนาดใหญ่ สิ่งที่ยอดเยี่ยมเกี่ยวกับมันคือแอพพลิเคชั่นการประมวลผลข้อมูลที่ปรับขนาดได้จำนวนมากทำงานได้ดีบน Mesos (Hadoop, Kafka, Spark) และเป็นเรื่องที่ดีเพราะคุณสามารถเรียกใช้พวกมันทั้งหมดในแหล่งทรัพยากรพื้นฐานแบบเดียวกัน . มันค่อนข้างหนักกว่าโครงการ Kubernetes แต่การจัดการทำได้ง่ายขึ้นและง่ายขึ้นด้วยการทำงานของคนอย่าง Mesosphere

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

เมื่อถูกถามฉันมักจะพูดว่า:

  1. Kubernetes เป็นสถานที่ที่เหมาะสำหรับการเริ่มต้นหากคุณยังใหม่ต่อโลกแห่งการรวมกลุ่ม มันเป็นวิธีที่เร็วที่สุดง่ายที่สุดและเบาที่สุดในการเตะยางและเริ่มทดลองกับการพัฒนาแบบกลุ่ม มันมีการพกพาในระดับสูงมากเนื่องจากได้รับการสนับสนุนจากผู้ให้บริการหลายราย (Microsoft, IBM, Red Hat, CoreOs, MesoSphere, VMWare และอื่น ๆ )

  2. หากคุณมีเวิร์กโหลดที่มีอยู่ (Hadoop, Spark, Kafka และอื่น ๆ ) Mesos ให้คุณมีเฟรมเวิร์กที่ให้คุณสอดแทรกเวิร์กโหลดเหล่านั้นเข้าด้วยกันและผสมผสานสิ่งใหม่ ๆ รวมถึงแอพ Kubernetes

  3. Mesos จัดทำวาล์วหนีภัยให้คุณหากคุณต้องการความสามารถที่ยังไม่ได้นำไปใช้โดยชุมชนในกรอบ Kubernetes


4
ภาพรวมที่ดี สองความคิดสั้น ๆ : 1) ฉันเชื่อว่า Kubernetes ตอนนี้เป็นรุ่นเบต้าแทนที่จะเป็นอัลฟ่าหรือไม่ 2) เพิ่มข้อมูลเกี่ยวกับมาราธอนหรือไม่
knite

57
เพื่อสรุปผล (สำหรับการอ่านอย่างรวดเร็ว - ฉันหวังว่าจะทำให้ถูกต้อง): kubernetes เป็นตัวจัดการคลัสเตอร์สำหรับคอนเทนเนอร์ (เท่านั้น?) ในขณะที่ mesos เป็นเคอร์เนลระบบแบบกระจายที่จะทำให้คลัสเตอร์ของคุณดูเหมือนระบบคอมพิวเตอร์ยักษ์หนึ่งระบบ และแอพที่สร้างขึ้นเพื่อใช้งานบน mesos ยัง kubernetes เป็นหนึ่งในกรอบการทำงานที่สามารถทำงานบน mesos ดังนั้นการรวมทั้งคุณท้ายด้วยคลัสเตอร์ที่ไม่มีคลัสเตอร์และตัวจัดการคลัสเตอร์ที่ไม่มีคลัสเตอร์ที่จะจัดการ โลกใหม่ที่ยิ่งใหญ่ :-) (J / K มีประโยชน์มากมายที่คุณได้รับจากสิ่งนี้ตั้งแต่ kub มากกว่า clst. ฟิสิกส์. res.)
masi

7
นี่คือ Mesosphere ที่พูดถึงสิ่งนี้ในงาน Kubernetes 1.0 Launch: youtube.com/… - ข้อจำกัดความรับผิดชอบ: นี่คือฉัน
อากาศ

68

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

ในการปรับใช้แอปพลิเคชันที่ด้านบนของ Mesos หนึ่งสามารถใช้ Marathon หรือ Kubernetes สำหรับ Mesos

Marathon เป็นระบบเริ่มต้นและควบคุมทั่วทั้งคลัสเตอร์สำหรับการเรียกใช้บริการ Linux ใน cgroups และ Docker container มาราธอนมีคุณสมบัติปรับใช้นกขมิ้นที่แตกต่างกันจำนวนมากและเป็นโครงการที่โตเต็มที่

Marathon ทำงานบน Mesos ซึ่งเป็นผู้จัดการทรัพยากรที่ปรับขนาดได้ทดสอบและมีความยืดหยุ่นสูง มาราธอนได้รับการพิสูจน์แล้วว่าสามารถขยายขนาดและทำงานในสภาพแวดล้อมการผลิตจำนวนมาก

สแต็คเทคโนโลยี Mesos และ Mesosphere มอบสภาพแวดล้อมแบบคลาวด์สำหรับการใช้งานปริมาณงาน Linux ที่มีอยู่ แต่ก็ยังให้สภาพแวดล้อมดั้งเดิมสำหรับการสร้างระบบกระจายแบบใหม่

Mesos เป็นเคอร์เนลระบบแบบกระจายพร้อม API แบบเต็มสำหรับการเขียนโปรแกรมโดยตรงกับดาต้าเซ็นเตอร์ มันเป็นนามธรรมฮาร์ดแวร์พื้นฐาน (เช่นโลหะเปลือยหรือ VMs) ออกไปและเพียงแค่เปิดเผยทรัพยากร มันมีพื้นฐานสำหรับการเขียนแอพพลิเคชั่นแบบกระจาย (เช่น Spark เดิมเป็น Mesos App, Chronos, ฯลฯ ) เช่น Message Passing, Task Execution เป็นต้นดังนั้นจึงมีแอปพลิเคชั่นใหม่ ๆ Apache Spark เป็นอีกตัวอย่างหนึ่งของกรอบงานใหม่ (ในศัพท์แสง Mesos ที่เรียกว่า) ซึ่งสร้างขึ้นสำหรับ Mesos โดยเฉพาะ สิ่งนี้เปิดใช้การพัฒนาอย่างรวดเร็วจริง ๆ - นักพัฒนาของ Spark ไม่ต้องกังวลเกี่ยวกับระบบเครือข่ายเพื่อแจกจ่ายงานระหว่างโหนดเนื่องจากนี่เป็นพื้นฐานดั้งเดิมของ Mesos

ตามความรู้ของฉัน Kubernetes ไม่ได้ใช้ภายใน Google ในการปรับใช้การผลิตในปัจจุบัน สำหรับการผลิต Google ใช้ Omega / Borg ซึ่งคล้ายกับรุ่น Mesos / Marathon อย่างไรก็ตามสิ่งที่ยอดเยี่ยมเกี่ยวกับการใช้ Mesos เป็นพื้นฐานคือทั้ง Kubernetes และ Marathon สามารถวิ่งได้เหนือกว่า

แหล่งข้อมูลเพิ่มเติมเกี่ยวกับมาราธอน:

https://mesosphere.github.io/marathon/

วิดีโอ: https://www.youtube.com/watch?v=hZNGST2vIds


37

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

จากREADME ของ Kubernetes-Mesos


18

Mesos และ Kubernetes สามารถใช้ในการจัดการคลัสเตอร์ของเครื่องจักรและแยกฮาร์ดแวร์ออกได้

Mesos โดยการออกแบบไม่ได้มีตัวจัดตารางเวลาให้คุณ (ในการตัดสินใจว่าเมื่อใดและเมื่อใดที่จะเรียกใช้กระบวนการและจะทำอย่างไรถ้ากระบวนการล้มเหลว) คุณสามารถใช้บางอย่างเช่น Marathon หรือ Chronos หรือเขียนของคุณเอง

Kubernetes จะทำการจัดตารางเวลาให้คุณนอกกรอบและสามารถใช้เป็นตัวกำหนดเวลาสำหรับ Mesos (โปรดแก้ไขให้ฉันถ้าฉันผิดที่นี่!) ซึ่งเป็นที่ที่คุณสามารถใช้งานร่วมกันได้ Mesos สามารถมีตัวกำหนดตารางเวลาหลายตัวที่แชร์คลัสเตอร์เดียวกันดังนั้นในทางทฤษฎีคุณสามารถเรียกใช้ kubernetes และ chronos ร่วมกันบนฮาร์ดแวร์เดียวกัน

ง่ายสุด ๆ : ถ้าคุณต้องการควบคุมวิธีกำหนดตู้คอนเทนเนอร์ของคุณให้ไปหา Mesos หรือหิน Kubernetes


1
คำตอบนี้ไม่ถูกต้องและสับสน ไม่มีวิธีที่ง่ายในการใช้ Mesos บน Kubernetes - และในความเป็นจริงแล้วนั่นจะเป็นการพลิกกลับของสถาปัตยกรรม เนื่องจาก Kubernetes นั้นให้ความสนใจน้อยกว่า Mesos จึงเหมาะสมกว่าที่จะใช้มันบน Mesos
ssk2

1
ใช่ฉันหมายถึง kubernetes ที่ทำงานอยู่ด้านบนของ Mesos .. Kubernetes ให้ตรรกะการจัดตารางเวลาสำหรับเฟรมเวิร์ก mesos และ mesos จะดูแลงานที่กำลังดำเนินการ ฯลฯ ขออภัยที่ไม่ชัดเจน
2851943

2
@air ฉันสนใจที่จะทราบว่าคุณจะกำหนดตารางเวลาได้อย่างไร Mesos เองไม่ปรากฏว่ามีการจัดตารางเวลาใด ๆ ใช่หรือไม่ ทั้งหมดนี้จัดการใน Chronos / Marathon / etc หรือไม่ (บางทีฉันอาจพลาดบางสิ่งบางอย่าง! :))
user2851943

6
ฉันคิดว่าฉันเห็นสิ่งที่คุณได้รับ - Mesos เป็นกรอบการทำงานที่ช่วยให้ตัวกำหนดตารางเวลาเสียบเข้าด้วยกันฉันสับสนกับถ้อยคำที่บอกว่า Mesos ละเว้นบางสิ่งที่สำคัญ ("Mesos ไม่ได้ให้คุณ") เมื่อเป็น ออกแบบ. ฉันลบ downvote ของฉัน
อากาศ

5
คำตอบนี้ถูกต้อง Mesos มุ่งเน้นไปที่การจัดการทรัพยากรและมัน decouples การกำหนดเวลาโดยอนุญาตให้กรอบ pluggable ตัวอย่างที่ดีคือสิ่งที่ Netflix ทำโดยการเขียนกรอบการจัดกำหนดการ: Fenzo techblog.netflix.com/2015/08/…
Camilo Crespo

5

ฉันชอบวิดีโอสั้น ๆ ที่นี่ที่mesos สื่อการเรียนรู้

ด้วยกลุ่มโลหะเปลือยคุณจะต้องวางไข่กองเช่น HDFS, SPARK, MR ฯลฯ ... ดังนั้นถ้าคุณเริ่มงานที่เกี่ยวข้องกับสิ่งเหล่านี้โดยใช้การจัดการคลัสเตอร์โลหะเปลือยเท่านั้นจะมีเวลาเริ่มต้นที่เย็นมาก

ด้วย mesos คุณสามารถติดตั้งบริการเหล่านี้บนโลหะเปลือยและคุณสามารถหลีกเลี่ยงเวลานำขึ้นใช้ของบริการพื้นฐานเหล่านั้น นี่คือสิ่งที่ Mesos ทำได้ดี และสามารถนำมาใช้โดย kubernetes สร้างอยู่ด้านบนของมัน


3

"ฉันเข้าใจว่าทั้งสองเป็นซอฟต์แวร์การจัดการคลัสเตอร์เซิร์ฟเวอร์"

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

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.