การเปิดเผยข้อมูล: ฉันเป็นวิศวกรนำเกี่ยวกับ Kubernetes
ฉันคิดว่า Mesos และ Kubernetes ส่วนใหญ่มีเป้าหมายเพื่อแก้ไขปัญหาที่คล้ายกันของการเรียกใช้แอปพลิเคชันแบบกลุ่มพวกเขามีประวัติที่แตกต่างกันและวิธีการที่แตกต่างกันในการแก้ปัญหา
Mesos ให้ความสำคัญกับพลังงานในการจัดตารางเวลาทั่วไปและเสียบเข้ากับกำหนดการที่แตกต่างหลากหลาย ซึ่งหมายความว่าจะช่วยให้ระบบเช่น Hadoop และ Marathon มีอยู่ในสภาพแวดล้อมการจัดตารางเวลาเดียวกัน Mesos มุ่งเน้นที่การใช้ภาชนะบรรจุน้อยกว่า มี Mesos อยู่ก่อนที่จะมีความสนใจอย่างกว้างขวางในตู้คอนเทนเนอร์และได้รับการแยกส่วนในการรองรับตู้คอนเทนเนอร์
ในทางตรงกันข้าม Kubernetes ได้รับการออกแบบจากพื้นดินขึ้นเพื่อเป็นสภาพแวดล้อมสำหรับการสร้างแอพพลิเคชั่นแบบกระจายจากตู้คอนเทนเนอร์ ซึ่งรวมถึงการทำซ้ำสำหรับการจำลองแบบและการค้นพบบริการเป็นหลักพื้นฐานซึ่งสิ่งนั้นถูกเพิ่มเข้ามาผ่านเฟรมเวิร์กใน Mesos เป้าหมายหลักของ Kubernetes คือระบบสำหรับการสร้างการรันและการจัดการระบบแบบกระจาย
เรือเดินสมุทรเป็นตัวแทนจำหน่ายภารกิจระดับล่าง มันมีประโยชน์สำหรับการบูตระบบคลัสเตอร์เช่น CoreOS ใช้เพื่อแจกจ่ายเอเจนต์ kubernetes และไบนารีออกไปยังเครื่องในคลัสเตอร์เพื่อเปิดคลัสเตอร์ kubernetes มันไม่ได้มีจุดประสงค์เพื่อแก้ปัญหาการพัฒนาแอพพลิเคชั่นแบบเดียวกันลองคิดดูเพิ่มเติมเช่น systemd / init.d / upstart สำหรับคลัสเตอร์ของคุณ ไม่จำเป็นถ้าคุณเรียกใช้ kubernetes คุณสามารถใช้เครื่องมืออื่น ๆ (เช่น Salt, Puppet, Ansible, Chef, ... ) เพื่อให้ได้การแจกแจงแบบไบนารีที่เหมือนกัน
Swarm เป็นความพยายามของนักเทียบท่าเพื่อขยาย Docker API ที่มีอยู่เพื่อให้กลุ่มของเครื่องดูเหมือน Docker API เดียว โดยพื้นฐานแล้วประสบการณ์ของเราที่ Google และที่อื่น ๆ บ่งชี้ว่าโหนด API ไม่เพียงพอสำหรับ API คลัสเตอร์ คุณสามารถดูการสนทนามากมายได้ที่นี่: https://github.com/docker/docker/pull/8859และที่นี่: https://github.com/docker/docker/issues/8781
หวังว่าจะช่วย! เข้าร่วมกับเราใน IRC @ # google-container ถ้าคุณต้องการพูดคุยเพิ่มเติม