Marathon vs Kubernetes vs Docker Swarm trên DC / OS với Docker container


101

Tôi đang tìm kiếm một số ưu và nhược điểm của việc có nên sử dụng Marathon và Chronos, Docker Swarm hoặc Kubernetes khi chạy vùng chứa Docker trên DC / OS hay không.

Ví dụ, khi nào thì sử dụng Marathon / Chronos tốt hơn Kubernetes và ngược lại?

Hiện tại, tôi hầu như đang thử nghiệm nhưng hy vọng chúng tôi sẽ bắt đầu sử dụng một trong những dịch vụ này trong sản xuất sau mùa hè. Điều này có thể khiến Docker Swarm bị loại vì tôi không chắc liệu nó có sẵn sàng sản xuất vào lúc đó hay không.

Điều tôi thích về Docker Swarm là về cơ bản nó chỉ là "lệnh Docker" và bạn không phải học một cái gì đó hoàn toàn mới. Chúng tôi đã sử dụng docker-composevà điều đó sẽ hoạt động hiệu quả với Docker Swarm (ít nhất là trên lý thuyết) nên đó sẽ là một điểm cộng lớn. Mối quan tâm chính của tôi với Docker Swarm là liệu nó có bao gồm tất cả các trường hợp sử dụng cần thiết để chạy một hệ thống trong sản xuất hay không.

Câu trả lời:


167

Tôi sẽ cố gắng chia nhỏ các khía cạnh độc đáo của từng khung điều phối vùng chứa trên Mesos.

Sử dụng Docker Swarm nếu:

Sử dụng Kubernetes-Mesos nếu:

  • Bạn muốn khởi chạy K8s Pods, là nhóm các thùng chứa được lập lịch và đặt cùng nhau, chia sẻ tài nguyên.
  • Bạn muốn khởi chạy một dịch vụ cùng với một hoặc nhiều vùng chứa sidekick (ví dụ: trình lưu trữ nhật ký, trình theo dõi số liệu) nằm bên cạnh vùng chứa chính.
  • Bạn muốn sử dụng kiểm soát phát hiện dịch vụ, cân bằng tải và sao chép dựa trên nhãn K8s.
  • Xem http://kubernetesio.blogspot.com/2015/04/kubernetes-and-mesosphere-dcos.html

Sử dụng Marathon nếu:

  • Bạn muốn khởi chạy các ứng dụng / dịch vụ chạy lâu dài của Docker hoặc không phải của Docker.
  • Bạn muốn sử dụng các thuộc tính Mesos để lập lịch dựa trên ràng buộc.
  • Bạn muốn sử dụng Nhóm ứng dụng và Phần phụ thuộc để khởi chạy, mở rộng quy mô hoặc nâng cấp các dịch vụ liên quan.
  • Bạn muốn sử dụng kiểm tra tình trạng để tự động khởi động lại các dịch vụ không lành mạnh hoặc khôi phục các triển khai / nâng cấp không lành mạnh.
  • Bạn muốn tích hợp HAProxy hoặc Consul để khám phá dịch vụ.
  • Bạn muốn khởi chạy và giám sát ứng dụng thông qua giao diện người dùng web hoặc API REST.
  • Bạn muốn sử dụng một khuôn khổ được xây dựng ngay từ đầu với Mesos.

Sử dụng Chronos nếu:

  • Bạn muốn khởi chạy các tác vụ Docker hoặc không phải Docker dự kiến ​​sẽ thoát.
  • Bạn muốn lập lịch để một tác vụ chạy vào một thời điểm / lịch trình cụ thể (a la cron).
  • Bạn muốn lên lịch cho một quy trình làm việc DAG gồm các tác vụ phụ thuộc.
  • Bạn muốn khởi chạy và theo dõi công việc thông qua giao diện người dùng web hoặc API REST.
  • Bạn muốn sử dụng một khuôn khổ được xây dựng ngay từ đầu với Mesos.

1
Tôi chỉ muốn thêm nó vào K8s 1.6 để hỗ trợ những điều sau (một số trong số đó đã lâu): * Docker-CRI (beta) và cri-o, frakti, rkt (alpha) cho các vùng chứa không phải Docker. * Kiểm tra tình trạng để xem khi nào vùng chứa đã khởi động / không còn phản hồi. * Tái tạo vỏ không lành mạnh. * Cron thích công việc, cả định kỳ và một lần. * Công việc hàng loạt (bắt đầu bằng tay và chạy đến hoàn thành một lần). Vì bản thân Mesosphere nói K8s là công dân hạng nhất trên Mesos nên lập luận "được xây dựng từ đầu" cũng có vẻ hơi mơ hồ ...
Jonas Schubert Erlandsson

15

Mặc dù nó hơi lỗi thời, nhưng có thể hữu ích khi đọc Sự khác biệt giữa Mesos của Apache và Kubernetes của Google , để nắm được một số điều cơ bản. Ngoài ra, hãy lưu ý rằng Mesos hoạt động ở một cấp độ khác với Kubernetes / Marathon / Chronos. Cuối cùng nhưng không kém phần quan trọng, hãy xem Docker Swarm + Mesos của Timothy Chen, hãy nhớ rằng Marathon và Swarm có thể hoạt động đồng thời trên cùng một cụm Mesos.

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.