Marathon vs Kubernetes vs Docker Swarm บน DC / OS พร้อมคอนเทนเนอร์ Docker


101

ฉันกำลังมองหาข้อดีข้อเสียว่าจะใช้งาน Marathon และ Chronos, Docker Swarm หรือ Kubernetes เมื่อใช้งาน Docker container บน DC / OS

ตัวอย่างเช่นเมื่อใดควรใช้ Marathon / Chronos ดีกว่า Kubernetes และในทางกลับกัน

ตอนนี้ฉันกำลังทดลองใช้เป็นส่วนใหญ่ แต่หวังว่าเราจะเริ่มใช้หนึ่งในบริการเหล่านี้ในการผลิตหลังฤดูร้อน สิ่งนี้อาจตัดสิทธิ์ Docker Swarm เนื่องจากฉันไม่แน่ใจว่าจะพร้อมผลิตหรือไม่ในตอนนั้น

สิ่งที่ฉันชอบเกี่ยวกับ Docker Swarm คือโดยพื้นฐานแล้วมันเป็นเพียง "คำสั่ง Docker" และคุณไม่จำเป็นต้องเรียนรู้อะไรใหม่ ๆ เลย เรากำลังใช้งานอยู่แล้วdocker-composeและจะใช้งานได้ทันทีกับ Docker Swarm (อย่างน้อยก็ในทางทฤษฎี) นั่นจะเป็นข้อดีอย่างมาก ข้อกังวลหลักของฉันกับ Docker Swarm คือหากจะครอบคลุมกรณีการใช้งานทั้งหมดที่จำเป็นในการเรียกใช้ระบบในการผลิต

คำตอบ:


167

ฉันจะพยายามแยกแง่มุมที่เป็นเอกลักษณ์ของกรอบการจัดเรียงคอนเทนเนอร์แต่ละรายการใน Mesos

ใช้Docker Swarmหาก:

  • คุณต้องการใช้ Docker API ที่คุ้นเคยเพื่อเปิดใช้งานคอนเทนเนอร์ Docker บน Mesos
  • ในที่สุด Swarm อาจให้ API เพื่อพูดคุยกับ Kubernetes (แม้แต่ K8s-Mesos) ด้วย
  • ดู: http://www.techrepublic.com/article/docker-and-mesos-like-peanut-butter-and-jelly/

ใช้Kubernetes-Mesosหาก:

  • คุณต้องการเปิดตัว K8s Pods ซึ่งเป็นกลุ่มของคอนเทนเนอร์ที่กำหนดเวลาร่วมกันและอยู่ร่วมกันโดยใช้ทรัพยากรร่วมกัน
  • คุณต้องการเปิดใช้บริการควบคู่ไปกับคอนเทนเนอร์ด้านข้างอย่างน้อยหนึ่งรายการ (เช่นตัวเก็บบันทึกตัวตรวจสอบเมตริก) ที่อยู่ถัดจากคอนเทนเนอร์หลัก
  • คุณต้องการใช้ K8s label-based service-discovery, load-balancing และ replication control
  • ดูhttp://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

ใช้Marathonถ้า:

  • คุณต้องการเปิดใช้งานแอพ / บริการ Docker หรือที่ไม่ใช่ Docker
  • คุณต้องการใช้แอตทริบิวต์ Mesos สำหรับการจัดกำหนดการตามข้อ จำกัด
  • คุณต้องการใช้กลุ่มแอปพลิเคชันและการอ้างอิงเพื่อเปิดใช้งานปรับขนาดหรืออัปเกรดบริการที่เกี่ยวข้อง
  • คุณต้องการใช้การตรวจสอบความสมบูรณ์เพื่อเริ่มบริการที่ไม่แข็งแรงโดยอัตโนมัติหรือย้อนกลับการปรับใช้ / อัปเกรดที่ไม่แข็งแรง
  • คุณต้องการรวม HAProxy หรือกงสุลเพื่อการค้นพบบริการ
  • คุณต้องการเปิดและตรวจสอบแอปผ่าน UI ของเว็บหรือ REST API
  • คุณต้องการใช้กรอบงานที่สร้างขึ้นตั้งแต่เริ่มต้นโดยคำนึงถึง Mesos

ใช้Chronosหาก:

  • คุณต้องการเปิดใช้งาน Docker หรืองานที่ไม่ใช่ Docker ที่คาดว่าจะออก
  • คุณต้องการกำหนดเวลาให้งานทำงานตามเวลา / กำหนดการที่กำหนด (a la cron)
  • คุณต้องการกำหนดเวลาเวิร์กโฟลว์ DAG ของงานที่ต้องพึ่งพา
  • คุณต้องการเปิดใช้งานและตรวจสอบงานผ่านเว็บ UI หรือ REST API
  • คุณต้องการใช้กรอบงานที่สร้างขึ้นตั้งแต่เริ่มต้นโดยคำนึงถึง Mesos

1
ฉันแค่อยากจะเพิ่มสิ่งนั้นใน K8s 1.6 เพื่อรองรับสิ่งต่อไปนี้ (บางอันใช้มานานแล้ว): * Docker-CRI (beta) และ cri-o, frakti, rkt (alpha) สำหรับคอนเทนเนอร์ที่ไม่ใช่ Docker * การตรวจสอบความสมบูรณ์เพื่อดูว่าเมื่อใดที่คอนเทนเนอร์เริ่มทำงาน / ไม่ตอบสนองอีกต่อไป * การสร้างฝักที่ไม่แข็งแรง * Cron เหมือนงานทั้งที่เกิดซ้ำและครั้งเดียว * งานแบทช์ (เริ่มด้วยตนเองและดำเนินการจนเสร็จสิ้นครั้งเดียว) เนื่องจากMesosphere เองก็บอกว่า K8s เป็นพลเมืองชั้นหนึ่งของ Mesos การโต้แย้งที่ "สร้างขึ้นตั้งแต่เริ่มต้น" ก็รู้สึกแย่เช่นกัน ...
Jonas Schubert Erlandsson

15

แม้ว่าจะล้าสมัยไปบ้าง แต่การอ่านความแตกต่างระหว่าง Apache's Mesos และ Kubernetes ของ Googleอาจเป็นประโยชน์เพื่อให้ได้ข้อมูลพื้นฐานที่ถูกต้อง นอกจากนี้โปรดทราบว่า Mesos ทำงานในระดับที่แตกต่างจาก Kubernetes / Marathon / Chronos สุดท้าย แต่ไม่ท้ายสุดโปรดดูDocker Swarm + Mesosโดย Timothy Chen โปรดทราบว่า Marathon และ Swarm สามารถทำงานพร้อมกันบนคลัสเตอร์ Mesos เดียวกันได้

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