2015-01-22 19 views
69

Kubernetes được lập hóa đơn dưới dạng cụm chứa "trình lên lịch/dàn nhạc", nhưng tôi không biết ý nghĩa của điều này. Sau khi đọc trang Kubernetes và wiki GitHub (mơ hồ), điều tốt nhất tôi có thể nói là bằng cách nào đó nó tìm ra những máy ảo nào có sẵn/có khả năng chạy thùng chứa Docker của bạn, và sau đó triển khai chúng ở đó. Nhưng đó chỉ là phỏng đoán của tôi, và tôi đã không nhìn thấy bất kỳ sự động từ cụ thể nào trong tài liệu của họ để hỗ trợ điều đó.Kubernetes thực sự làm gì?

Vì vậy Kubernetes là gì, chính xác, và một số cụ vấn đề là những gì mà nó giải quyết?

+1

Lý do giảm giá mà không có giải thích: đó là mã/lập trình liên quan, cho thấy nghiên cứu và không phải là một bản dupe. – smeeb

+1

Đã không downvote nhưng tôi đoán đó là một câu hỏi "meta-ish" hơi và câu trả lời của nó nên đi vào mô tả thẻ. – Filburt

+1

Cảm ơn @Filburt (+1) - tuy nhiên thẻ hiện đang được giải mã bằng "* Kubernetes là một triển khai mã nguồn mở của quản lý cụm container *", điều này không có nghĩa là ** bất kỳ điều gì ** với tôi khi người ngoài xem: -). Hơn nữa, tôi đang tìm kiếm các trường hợp sử dụng cụ thể trong thế giới thực, cụ thể cho những vấn đề cụ thể mà Kubernetes có thể giải quyết.Tôi không nghĩ rằng tất cả những gì có thể đi vào một mô tả thẻ, và nếu nó có thể, tôi muốn bắt tay của người đó tìm ra cách để làm điều đó! – smeeb

Trả lời

53

Mục đích của Kubernetes là giúp việc sắp xếp và lên lịch ứng dụng của bạn dễ dàng hơn trên một nhóm máy móc. Ở mức độ cao, nó là một hệ điều hành cho cụm của bạn.

Về cơ bản, nó cho phép bạn không phải lo lắng về những gì máy cụ thể trong trung tâm dữ liệu của bạn từng ứng dụng chạy trên. Ngoài ra, nó cung cấp các primitives chung để kiểm tra và sao chép ứng dụng của bạn trên các máy này, cũng như các dịch vụ để nối ứng dụng của bạn vào các dịch vụ vi mô để mỗi lớp trong ứng dụng của bạn được tách khỏi các lớp khác để bạn có thể mở rộng/cập nhật/duy trì chúng độc lập.

Trong khi có thể thực hiện được nhiều thứ trong lớp ứng dụng, các giải pháp như vậy có xu hướng một lần và dễ vỡ, tốt hơn hết là phải phân tách các mối quan ngại, nơi hệ thống dàn nhạc lo lắng về cách chạy ứng dụng của bạn, và bạn lo lắng về mã tạo nên ứng dụng của bạn.

+2

Cảm ơn @brendan (+1) - câu trả lời của bạn chắc chắn sẽ hữu ích. Một câu hỏi tiếp theo mặc dù: không phải là những gì Apache Mesos không? Kubernetes và Mesos có cạnh tranh với nhau không? Nếu không, họ có thể được sử dụng trong buổi hòa nhạc với nhau (và nếu có, làm thế nào)? Cảm ơn một lần nữa! – smeeb

+2

@smeeb Mesos và Kubernetes bổ sung cho nhau (Cái sau được hỗ trợ như một khung Mesos). Mesos cung cấp quản lý tài nguyên tinh vi hơn. Nói cách khác Kubernetes cho phép Mesos quyết định máy chủ nào được sử dụng, dựa trên khả năng có sẵn. Mesos hỗ trợ các khung công tác khác. Nếu bạn đọc tài liệu, bạn sẽ thấy rằng Marathon là một cách khác để khởi chạy vùng chứa trên cụm máy chủ được quản lý bởi Mesos. –

10

Khi bạn đọc từ Github page của nó:

Kubernetes là một hệ thống mã nguồn mở để quản lý container ứng dụng trên nhiều máy chủ, cung cấp cơ chế cơ bản cho triển khai, bảo trì và nhân rộng các ứng dụng.

Kubernetes là:

lean: lightweight, simple, accessible 
portable: public, private, hybrid, multi cloud 
extensible: modular, pluggable, hookable, composable 
self-healing: auto-placement, auto-restart, auto-replication 

Kubernetes xây dựng dựa trên một thập kỷ rưỡi kinh nghiệm tại Google chạy khối lượng công việc sản xuất ở quy mô, kết hợp với best-of-giống ý tưởng và thông lệ từ cộng đồng.

Đối với tôi Kubernetes là công cụ phối hợp vùng chứa của Google. Do thiết kế của nó, bạn có thể thực hiện khả năng tương thích với bất kỳ công cụ chứa, nhưng tôi nghĩ bây giờ nó được giới hạn trong Docker. Có một số khái niệm quan trọng trong kiến ​​trúc của nó:

Kubernetes làm việc với các khái niệm sau:

Clusters được các nguồn lực tính toán trên đầu trang trong đó container của bạn là xây dựng. Kubernetes có thể chạy bất cứ đâu! Xem Hướng dẫn bắt đầu cho các hướng dẫn cho nhiều dịch vụ khác nhau.

Các nhóm là một nhóm các bộ chứa Docker được định vị với khối lượng được chia sẻ. Chúng là các đơn vị có thể triển khai nhỏ nhất có thể được tạo, được lên lịch, và được quản lý với Kubernetes. Pod có thể được tạo riêng lẻ, nhưng khuyên bạn nên sử dụng bộ điều khiển nhân rộng ngay cả khi tạo một nhóm. Thông tin thêm về nhóm.

Trình điều khiển nhân bản quản lý vòng đời của vỏ. Chúng đảm bảo rằng số lượng nhóm được chỉ định đang chạy tại bất kỳ thời điểm cụ thể nào, bằng cách tạo hoặc tiêu diệt nhóm theo yêu cầu. Thông tin thêm về bộ điều khiển nhân bản.

Dịch vụ cung cấp một tên và địa chỉ duy nhất, ổn định cho một nhóm các nhóm. Chúng hoạt động như cân bằng tải cơ bản. Thông tin thêm về dịch vụ.

Nhãn được sử dụng để tổ chức và chọn các nhóm đối tượng dựa trên các cặp khóa: giá trị: . Tìm hiểu thêm về nhãn.

Vì vậy, bạn có một nhóm máy tạo thành cụm nơi vùng chứa của bạn chạy.Yo cũng có thể xác định một nhóm các container cung cấp dịch vụ, giống như cách bạn làm với các công cụ khác như fig (ví dụ: webapp pod có thể là máy chủ đường ray và cơ sở dữ liệu postgres). Bạn cũng có các công cụ khác để đảm bảo số lượng container/nhóm dịch vụ đang chạy cùng một lúc, một kho khóa-giá trị, một loại cân bằng tải tích hợp ...

Nếu bạn biết điều gì đó về lõi, nó là một giải pháp rất giống nhưng từ Google. Algo Kubernetes có tích hợp tốt với Google Cloud Engine.

+2

Cảm ơn @jcortejoso (+1) - tuy nhiên tôi có một vài câu hỏi tiếp theo nếu bạn không nhớ: ** (1) ** bạn nói rằng Kubernetes tương tự như CoreOS, nhưng từ Google. Điều này ngụ ý rằng Kubernetes và CoreOS giải quyết cùng một vấn đề. Nhưng từ [trang web riêng của Kubernetes](), nó cho biết bạn có thể cài đặt Kubernetes ** trên ** CoreOS. Vì vậy, đó là nó?!? Kubernetes có giống như CoreOS hay Kubernetes chạy trên CoreOS và giải quyết một vấn đề cụ thể? – smeeb

+0

Ngoài ra ** (2) ** Tôi vẫn không thấy giá trị trong "dàn nhạc" của Kubernetes tại đây. Bạn nói rằng bạn có thể sử dụng Kubernetes để định nghĩa một nhóm container cung cấp dịch vụ, điều này khiến tôi tự hỏi hai điều riêng biệt: (2a) tôi không thể làm kiểu phân cụm này ở lớp ứng dụng, và đặt ứng dụng của tôi phía sau cân bằng tải nginx? Và (2b) tất cả điều này là để "dàn nhạc"? Đối với tôi, một lần nữa, nó chỉ có vẻ như cân bằng tải có thể dễ dàng đạt được ở lớp ứng dụng. Suy nghĩ? Cảm ơn một lần nữa vì câu trả lời tuyệt vời! – smeeb

+0

Xin lỗi liên kết trong bình luận đầu tiên của tôi ở trên [cần phải có điều này] (http://kubernetes.io/gettingstarted/), đến đó và cuộn xuống và bạn sẽ thấy rằng bạn có thể cài đặt Kubernetes trên đầu trang của CoreOS. – smeeb

2

Kubernetes cung cấp hầu hết các chức năng tương tự như cơ sở hạ tầng như một API dịch vụ, nhưng nhắm vào container tự động theo lịch trình chứ không phải là máy ảo, và như Nền tảng như một hệ thống dịch vụ, nhưng với sự linh hoạt lớn hơn, bao gồm:

  • lắp hệ thống lưu trữ,
  • bí mật phân phối, kiểm tra sức khỏe
  • ứng dụng,
  • sao chép các trường hợp ứng dụng,
  • hor izontal tự động mở rộng quy mô,
  • đặt tên và khám phá,
  • cân bằng tải, cập nhật
  • lăn,
  • giám sát tài nguyên,
  • truy cập đăng nhập và tiêu hóa,
  • hỗ trợ cho mẫn và gỡ lỗi, và
  • nhận dạng và ủy quyền.

Nếu bạn đã sử dụng các cơ chế khác để phát hiện dịch vụ, phân phối bí mật, cân bằng tải, theo dõi, vv, tất nhiên bạn có thể tiếp tục sử dụng chúng, nhưng chúng tôi nhằm mục đích để làm cho nó dễ dàng để chuyển đổi sang Kubernetes từ IaaS hiện và các hệ thống PaaS bằng cách cung cấp chức năng này.

https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/#why-do-i-need-kubernetes-and-what-can-it-do

Các vấn đề liên quan