Với tư cách là người cam kết CloudFoundry (trước đây) và Kubernetes (hiện tại), tôi có lẽ đủ điều kiện duy nhất để trả lời câu hỏi này.
Giống PaaS
Tôi thích gọi CloudFoundry là "Application PaaS" và Kubernetes là "Container PaaS", nhưng sự khác biệt khá tinh tế và linh hoạt, vì cả hai dự án đều thay đổi theo thời gian để cạnh tranh trên cùng một thị trường.
Sự khác biệt giữa hai điều này là CF có một lớp tổ chức lấy ứng dụng người dùng (12 yếu tố) (ví dụ: jar hoặc gem) và một gói xây dựng kiểu Heroku (ví dụ: Java + Tomcat hoặc Ruby) và tạo ra một giọt (tương tự như Hình ảnh Docker). CF không hiển thị giao diện chứa cho người dùng, nhưng Kubernetes thì có.
Khán giả
Đối tượng chính của CloudFoundry là các nhà phát triển ứng dụng doanh nghiệp muốn triển khai các ứng dụng không trạng thái 12 yếu tố bằng cách sử dụng các gói xây dựng kiểu Heroku.
Đối tượng của Kubernetes rộng hơn một chút, bao gồm cả các nhà phát triển ứng dụng không trạng thái và các nhà phát triển dịch vụ có trạng thái cung cấp vùng chứa của riêng họ.
Sự khác biệt này có thể thay đổi trong tương lai:
So sánh tính năng
Khi cả hai dự án trưởng thành và cạnh tranh, những điểm giống và khác nhau của chúng sẽ thay đổi. Vì vậy, hãy so sánh đặc điểm sau với một hạt muối.
Cả CF và K8 đều chia sẻ nhiều tính năng tương tự, như container hóa, không gian tên, xác thực,
Lợi thế cạnh tranh của Kubernetes:
- Nhóm và chia tỷ lệ các nhóm các vùng chứa chia sẻ một ngăn xếp mạng, thay vì chỉ chia tỷ lệ độc lập
- Mang theo hộp đựng của riêng bạn
- Lớp tồn tại trạng thái
- Cộng đồng PMNM lớn hơn, tích cực hơn
- Kiến trúc có thể mở rộng hơn với các thành phần có thể thay thế và plugin của bên thứ 3
- GUI web miễn phí
Lợi thế cạnh tranh của CloudFoundry:
- Xác thực người lớn, phân nhóm người dùng và hỗ trợ cho thuê nhiều lần [x]
- Mang theo ứng dụng của riêng bạn
- Bộ cân bằng tải bao gồm
- Được BOSH [x] triển khai, mở rộng và duy trì hoạt động
- Ghi nhật ký và tổng hợp chỉ số mạnh mẽ [x]
- GUI web doanh nghiệp [x]
[x] Những tính năng này không phải là một phần của Diego hoặc không có trong Lattice.
Triển khai
Một trong những lợi thế cạnh tranh của CloudFoundry là nó có một công cụ triển khai hoàn thiện, BOSH, cho phép các tính năng như mở rộng quy mô, phục hồi và giám sát các thành phần CF cốt lõi. BOSH cũng hỗ trợ nhiều lớp IaaS với tính trừu tượng của nhà cung cấp đám mây có thể cắm được. Thật không may, đường cong học tập và quản lý cấu hình triển khai của BOSH rất tệ. (Là một người cam kết BOSH, tôi nghĩ rằng tôi có thể nói điều này một cách chính xác.)
Sự trừu tượng hóa triển khai của Kubernetes vẫn còn sơ khai. Nhiều môi trường mục tiêu có sẵn trong kho lõi, nhưng chúng không phải tất cả đều hoạt động, được kiểm tra tốt hoặc được hỗ trợ bởi các nhà phát triển chính. Đây chủ yếu là một điều trưởng thành. Người ta có thể mong đợi điều này sẽ cải thiện theo thời gian và tăng tính trừu tượng. Ví dụ: Kubernetes trên DCOS cho phép triển khai Kubernetes vào một cụm DCOS hiện có chỉ với một lệnh duy nhất.
Bối cảnh lịch sử
Diego là người viết lại tác nhân thực thi Droplet của CF. Nó ban đầu được phát triển trước khi Kubernetes được công bố và đã có nhiều tính năng hơn khi bối cảnh cạnh tranh đã phát triển. Mục tiêu ban đầu của nó là tạo ra các giọt (ứng dụng người dùng + gói xây dựng CF) và chạy chúng trong các thùng chứa Warden (được đổi tên thành Garden khi được viết lại trong Go). Kể từ khi ra đời, nó cũng được đóng gói lại dưới dạng Lattice , một phần của CloudFoundry-lite (mặc dù tên đó được lấy bởi một dự án hiện có). Vì lý do đó, Lattice có phần giống như một món đồ chơi, ở chỗ nó đã cố tình giảm đối tượng và phạm vi người dùng, rõ ràng là thiếu các tính năng có thể khiến nó "sẵn sàng cho doanh nghiệp". Các tính năng mà CF đã cung cấp. Điều này một phần là do Lattice được sử dụng để kiểm tra các thành phần cốt lõi, mà không cần một số chi phí từ CF phức tạp hơn, nhưng bạn cũng có thể sử dụng Lattice trong các môi trường có độ tin cậy cao nội bộ nơi không quan tâm nhiều đến vấn đề bảo mật và nhiều người thuê. .
Cũng cần nhắc lại rằng CloudFoundry và Warden (công cụ chứa của nó) cũng có trước Docker vài năm.
Mặt khác, Kubernetes là một dự án tương đối mới được Google phát triển dựa trên nhiều năm sử dụng container với BORG và Omega. Kubernetes có thể được coi là điều phối vùng chứa thế hệ thứ 3 tại Google, giống như cách Diego là điều phối vùng chứa thế hệ thứ 3 tại Pivotal / VMware (v1 được viết tại VMware; v2 tại VMware với sự trợ giúp của Pivotal Labs; v3 tại Pivotal sau khi nó tiếp quản dự án) .