Sự khác biệt giữa Mesos của Apache và Kubernetes của Google


Câu trả lời:


516

Kubernetes là một dự án nguồn mở mang lại khả năng quản lý cụm 'kiểu Google' cho thế giới máy ảo, hoặc 'trên các kịch bản kim loại'. Nó hoạt động rất tốt với các môi trường hệ điều hành hiện đại (như CoreOS hoặc Red Hat Atomic) cung cấp các 'nút' tính toán nhẹ được quản lý cho bạn. Nó được viết bằng Golang và nhẹ, mô-đun, di động và mở rộng. Chúng tôi (nhóm Kubernetes) đang hợp tác với một số công ty công nghệ khác nhau (bao gồm cả Mesosphere, người quản lý dự án nguồn mở Mesos) để thiết lập Kubernetes như một cách tiêu chuẩn để tương tác với các cụm máy tính. Ý tưởng là tái tạo các mẫu mà chúng ta thấy mọi người cần để xây dựng các ứng dụng cụm dựa trên kinh nghiệm của chúng tôi tại Google. Một số khái niệm này bao gồm:

  • nhóm - một cách để nhóm các container lại với nhau
  • bộ điều khiển nhân rộng - một cách để xử lý vòng đời của container
  • nhãn - một cách để tìm và truy vấn các thùng chứa, và
  • dịch vụ - một tập hợp các container thực hiện một chức năng chung.

Vì vậy, chỉ với Kubernetes, bạn sẽ có một thứ gì đó đơn giản, dễ dàng để chạy và di chuyển, có thể mở rộng và thêm "cụm" như một danh từ cho những thứ mà bạn quản lý theo cách nhẹ nhất có thể. Chạy một ứng dụng trên một cụm và ngừng lo lắng về một máy riêng lẻ. Trong trường hợp này, cluster là một tài nguyên linh hoạt giống như VM. Nó là một đơn vị tính toán logic. Bật nó lên, sử dụng nó, thay đổi kích thước, tắt nó nhanh chóng và dễ dàng.

Với Mesos, có một số lượng trùng lặp khá lớn về tầm nhìn cơ bản, nhưng các sản phẩm ở những điểm khá khác nhau trong vòng đời của chúng và có những điểm ngọt ngào khác nhau. Mesos là một hạt nhân hệ thống phân tán, gắn kết rất nhiều máy móc khác nhau thành một máy tính logic. Nó được sinh ra cho một thế giới nơi bạn sở hữu nhiều tài nguyên vật lý để tạo ra một cụm máy tính tĩnh lớn. Điều tuyệt vời ở đây là rất nhiều ứng dụng xử lý dữ liệu hiện đại có thể chạy tốt trên Mesos (Hadoop, Kafka, Spark) và thật tuyệt vì bạn có thể chạy tất cả chúng trên cùng một nhóm tài nguyên cơ bản, cùng với các ứng dụng đóng gói trong thùng chứa thời đại mới của bạn . Nó có trọng lượng nặng hơn dự án Kubernetes, nhưng ngày càng dễ quản lý hơn nhờ vào công việc của những người như Mesosphere.

Bây giờ điều thực sự thú vị là Mesos hiện đang được điều chỉnh để thêm rất nhiều khái niệm Kubernetes và để hỗ trợ API Kubernetes. Vì vậy, nó sẽ là một cửa ngõ để có được nhiều khả năng hơn cho ứng dụng Kubernetes của bạn (chủ có tính sẵn sàng cao, ngữ nghĩa lập lịch nâng cao hơn, khả năng mở rộng đến số lượng nút rất lớn) nếu bạn cần chúng và rất phù hợp để chạy khối lượng công việc sản xuất (Kubernetes vẫn ở trạng thái alpha).

Khi được hỏi, tôi có xu hướng nói:

  1. Kubernetes là một nơi tuyệt vời để bắt đầu nếu bạn chưa quen với thế giới phân cụm; đó là cách nhanh nhất, dễ nhất và nhẹ nhất để đá lốp xe và bắt đầu thử nghiệm phát triển theo định hướng cụm. Nó cung cấp mức độ di động rất cao vì nó được hỗ trợ bởi rất nhiều nhà cung cấp khác nhau (Microsoft, IBM, Red Hat, CoreOs, MesoSphere, VMWare, v.v.).

  2. Nếu bạn có khối lượng công việc hiện có (Hadoop, Spark, Kafka, v.v.), Mesos cung cấp cho bạn một khung để bạn xen kẽ các khối lượng công việc đó với nhau và trộn vào một số nội dung mới bao gồm các ứng dụng Kubernetes.

  3. Mesos cung cấp cho bạn một van thoát nếu bạn cần các khả năng chưa được cộng đồng triển khai trong khung Kubernetes.


4
Tổng quan tuyệt vời. Hai suy nghĩ ngắn gọn: 1) Tôi tin Kubernetes hiện là beta chứ không phải alpha? 2) Thêm thông tin về Marathon?
knite

57
Tóm lại (để đọc nhanh - tôi hy vọng tôi hiểu đúng): kubernetes là trình quản lý cụm cho các container (chỉ?) Trong khi mesos là hạt nhân hệ thống phân tán sẽ làm cho cụm của bạn trông giống như một hệ thống máy tính khổng lồ cho tất cả các khung được hỗ trợ và các ứng dụng được xây dựng để chạy trên mesos. Tuy nhiên, kubernetes là một khung (trong số những người khác) có thể chạy trên mesos. Do đó, kết hợp cả hai bạn kết thúc với một cụm không có cụm và trình quản lý cụm không có cụm để quản lý. Thế giới mới tuyệt vời :-) (J / K có rất nhiều lợi ích bạn nhận được từ việc này kể từ khi kub. Nhiều hơn sau đó là vật lý. Res.)
masi

7
Đây là Mesosphere nói về chính xác điều này tại sự kiện Ra mắt Kubernetes 1.0: youtube.com/ Từ - từ chối trách nhiệm: đây là tôi.
Không khí

68

Cả hai dự án đều nhằm mục đích giúp dễ dàng triển khai & quản lý các ứng dụng bên trong các thùng chứa trong trung tâm dữ liệu hoặc đám mây của bạn.

Để triển khai các ứng dụng trên đỉnh Mesos, người ta có thể sử dụng Marathon hoặc Kubernetes cho Mesos.

Marathon là một hệ thống điều khiển và khởi tạo toàn cụm để chạy các dịch vụ Linux trong các nhóm và bộ chứa Docker. Marathon có một số tính năng triển khai chim hoàng yến khác nhau và là một dự án rất trưởng thành.

Marathon chạy trên đỉnh Mesos, một công cụ quản lý tài nguyên linh hoạt và có khả năng mở rộng cao. Marathon được chứng minh quy mô và chạy trong nhiều môi trường sản xuất.

Kho công nghệ Mesos và Mesosphere cung cấp một môi trường giống như đám mây để chạy các khối lượng công việc Linux hiện có, nhưng nó cũng cung cấp một môi trường riêng để xây dựng các hệ thống phân tán mới.

Mesos là một hạt nhân hệ thống phân tán, với API đầy đủ để lập trình trực tiếp với trung tâm dữ liệu. Nó trừu tượng hóa phần cứng cơ bản (ví dụ: kim loại trần hoặc VM) và chỉ để lộ tài nguyên. Nó chứa các nguyên hàm để viết các ứng dụng phân tán (ví dụ Spark ban đầu là Ứng dụng Mesos, Chronos, v.v.) như Truyền tin nhắn, Thực thi tác vụ, v.v. Do đó, các ứng dụng hoàn toàn mới được thực hiện. Apache Spark là một ví dụ cho một khung công tác mới (theo thuật ngữ Mesos được gọi là) được xây dựng ban đầu cho Mesos. Điều này cho phép phát triển rất nhanh - các nhà phát triển của Spark không phải lo lắng về việc kết nối mạng để phân phối các nhiệm vụ giữa các nút vì đây là nguyên tắc cốt lõi trong Mesos.

Theo hiểu biết của tôi, Kubernetes không được sử dụng trong Google trong các triển khai sản xuất ngày nay. Để sản xuất, Google sử dụng Omega / Borg, tương tự như mô hình Mesos / Marathon. Tuy nhiên, điều tuyệt vời khi sử dụng Mesos làm nền tảng là cả Kubernetes và Marathon đều có thể chạy trên đỉnh của nó.

Thêm tài nguyên về Marathon:

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

Video: https://www.youtube.com/watch?v=hZNGST2vIds


37

Kubernetes và Mesos là một trận đấu được thực hiện trên thiên đường. Kubernetes cho phép trừu tượng hóa Pod (nhóm các thùng chứa cùng vị trí), cùng với nhãn Pod để khám phá dịch vụ, cân bằng tải và kiểm soát sao chép. Mesos cung cấp phân bổ tài nguyên hạt mịn cho các nhóm trên các nút trong một cụm và có thể làm cho Kubernetes chơi tốt với các khung khác chạy trên cùng một tài nguyên cụm.

từ readme của kubernetes-mesos


18

Mesos và Kubernetes đều có thể được sử dụng để quản lý một cụm máy móc và loại bỏ phần cứng.

Mesos, theo thiết kế, không cung cấp cho bạn một bộ lập lịch (để quyết định nơi nào và khi nào nên chạy các quy trình và phải làm gì nếu quy trình không thành công), bạn có thể sử dụng một cái gì đó như Marathon hoặc Chronos hoặc viết riêng cho bạn.

Kubernetes sẽ lên lịch cho bạn ra khỏi hộp và có thể được sử dụng làm công cụ lên lịch cho Mesos (vui lòng sửa cho tôi nếu tôi sai ở đây!) Đó là nơi bạn có thể sử dụng chúng cùng nhau. Mesos có thể có nhiều bộ lập lịch chia sẻ cùng một cụm, vì vậy về lý thuyết bạn có thể chạy các kubernetes và chronos cùng nhau trên cùng một phần cứng.

Siêu đơn giản: nếu bạn muốn kiểm soát cách thức các thùng chứa của bạn được lên lịch, hãy tìm Mesos, nếu không thì đá Kubernetes.


1
Câu trả lời này không chính xác và khó hiểu. Không có cách nào dễ dàng để chạy Mesos trên Kubernetes - và trên thực tế, đó sẽ là một sự đảo ngược của kiến ​​trúc. Vì Kubernetes ít tập trung hơn so với Mesos, nên có ý nghĩa hơn khi chạy nó trên đỉnh Mesos.
ssk2

1
Vâng, tôi có nghĩa là các kubernetes chạy trên đỉnh Mesos .. Kubernetes cung cấp logic lập lịch cho khung mesos và mesos đảm nhiệm công việc đang chạy vv .. Xin lỗi nếu điều đó không rõ ràng.
dùng2851943

2
@air Tôi muốn biết làm thế nào bạn xác định lịch trình ở đây? Bản thân Mesos dường như không cung cấp bất kỳ logic lập lịch nào? Tất cả điều này được xử lý trong Chronos / Marathon / etc? (có lẽ tôi đã bỏ lỡ điều gì đó! :))
user2851943

6
Tôi nghĩ rằng tôi thấy những gì bạn đang có - Mesos là một khung cho phép người lập lịch được cắm vào. Tôi đã bối rối bởi cách diễn đạt rằng Mesos đã bỏ qua một cái gì đó quan trọng ("Mesos không cung cấp cho bạn"), khi đó thiết kế. Tôi loại bỏ downvote của tôi.
Không khí

5
Câu trả lời này là chính xác. Mesos tập trung vào quản lý tài nguyên và nó tách ra lập kế hoạch bằng cách cho phép các khung có thể cắm được. Một ví dụ điển hình là những gì Netflix đã làm bằng cách viết một khung lập lịch: Fenzo techblog.netflix.com/2015/08/ mẹo
Camilo Crespo

5

Tôi thích video ngắn này ở đây tài liệu học tập mesos

với các cụm kim loại trần, bạn sẽ cần sinh ra các ngăn xếp như HDFS, SPARK, MR, v.v ... vì vậy nếu bạn khởi chạy các tác vụ liên quan đến chúng chỉ bằng cách quản lý cụm kim loại trần, sẽ có rất nhiều thời gian bắt đầu lạnh.

với mesos, bạn có thể cài đặt các dịch vụ này lên trên các kim loại trần và bạn có thể tránh được thời gian phát sinh của các dịch vụ cơ sở đó. Đây là một cái gì đó mesos làm tốt. và có thể được sử dụng bởi các kubernetes xây dựng trên nó.


3

"Tôi hiểu cả hai đều là phần mềm quản lý cụm máy chủ."

Tuyên bố này không hoàn toàn đúng. Kubernetes không quản lý các cụm máy chủ, nó điều phối các thùng chứa sao cho chúng hoạt động cùng nhau với ít rắc rối và phơi nhiễm. Kubernetes cho phép bạn xác định các phần trong ứng dụng của mình là "nhóm" (một hoặc nhiều thùng chứa) được phân phối bởi "triển khai" hoặc "bộ daemon" (và một số khác) và tiếp xúc với thế giới bên ngoài thông qua các dịch vụ. Tuy nhiên, Kubernetes không tự quản lý cụm (có những công cụ có thể cung cấp, định cấu hình và chia tỷ lệ cho bạn, nhưng chúng không phải là một phần của chính Kubernetes).

Mặt khác, Mesos đến gần hơn với "quản lý cụm" ở chỗ nó có thể kiểm soát những gì đang chạy ở đâu, nhưng không chỉ về mặt lập lịch cho các container. Mesos cũng quản lý phần mềm độc lập chạy trên các máy chủ cụm. Mặc dù nó chủ yếu được sử dụng thay thế cho Kubernetes, Mesos có thể dễ dàng hoạt động với Kubernetes vì ​​trong khi chức năng chồng chéo ở nhiều khu vực, Mesos có thể làm được nhiều hơn (nhưng trên các phần chồng chéo Kubernetes có xu hướng tốt hơn).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.