2016-04-02 19 views
8

Tình huống: rất nhiều thiết bị lưu trữ docker nặng được truy cập định kỳ trong một thời gian, sau đó không sử dụng trong một thời gian dài hơn.Thực hiện khởi động vùng chứa dock theo yêu cầu

Mong muốn: bắt đầu các thùng chứa theo yêu cầu (như systemd khởi động mọi thứ thông qua kích hoạt socket) và dừng chúng sau khi chạy không tải trong một khoảng thời gian nhất định. Không hiển thị thời gian ngừng hoạt động cho người dùng cuối.

Options:

  • Kubernetes có bộ điều khiển tài nguyên mà có thể mở rộng bản sao. Tôi cho rằng nó có thể giữ số bản sao trên 0 và đặt nó thành 1 khi cần thiết, nhưng làm thế nào để đạt được điều đó? user guide cho biết có một cái gọi là đại lý kiểm soát tỷ lệ tự động nhưng tôi không thấy thêm bất kỳ thông tin nào về điều này. Có một pluggable, đại lý lập trình có thể sử dụng để theo dõi các yêu cầu và quy mô dựa trên logic do người dùng định nghĩa không?
  • Tôi không thấy bất kỳ giải pháp nào trong Docker Swarm, hãy sửa tôi nếu tôi sai.
  • Sử dụng máy chủ http tùy chỉnh được viết bằng ngôn ngữ được chọn sẽ có quyền truy cập vào trình nền của trình neo. Trước khi định tuyến để sửa chỗ nó sẽ kiểm tra sự tồn tại của container và đảm bảo nó đang chạy. Nhược điểm - không phải là giải pháp chung, phải không là vùng chứa hoặc có quyền truy cập vào daemon.
  • Sử dụng systemd như được mô tả here. Những nhược điểm tương tự như trên, nghĩa là không phải chung và người ta phải tự xử lý các nhiệm vụ mạng (như tìm IP của thùng chứa sinh sản và cho nó vào cấu hình máy chủ/proxy).

Bất kỳ ý tưởng nào được đánh giá cao!

+0

Về máy chủ HTTP tùy chỉnh. Thùng chứa DockerUI có quyền truy cập vào daemon. Bạn chỉ cần gắn ổ cắm docker vào thùng chứa như một ổ đĩa và tất cả các yêu cầu có thể được thực hiện cho nó –

+0

Cảm ơn, tôi biết daemon có thể được sử dụng khi lắp ổ cắm. Tôi chỉ hy vọng sẽ có giải pháp tích hợp cho nơi này vì vậy tôi không phải phát minh lại bánh xe. Có vẻ như bánh xe chưa được phát minh. – xificurC

Trả lời

2

Bạn có thể sử dụng tích hợp Horizonal Pod Autoscaling (HPA) của Kubernetes để tăng quy mô từ 1 thể hiện của mỗi vùng chứa đến số lượng cần thiết để xử lý tải, nhưng không có chức năng tích hợp cho việc thu nhỏ từ 0 đến 1 và tôi không biết về bất kỳ giải pháp được sử dụng rộng rãi nào.

+0

Cảm ơn bạn đã trả lời. Bạn có coi tình huống này không phổ biến? Tôi nghĩ rằng sẽ dễ dàng tìm thấy một triển khai theo yêu cầu khởi động, nhưng có vẻ như không ai thậm chí còn làm việc trên nó. – xificurC

+2

Có các cuộc thảo luận liên quan trong https://github.com/kubernetes/kubernetes/issues/484 nếu bạn quan tâm. –

0
  1. Bạn có thể sử dụng systemd để quản lý vùng chứa docker của mình. Xem https://developer.atlassian.com/blog/2015/03/docker-systemd-socket-activation/

  2. Một thời gian trước, tôi đã nói chuyện với một anh chàng ops về pantheon.io về cách họ làm điều này với docker. Tôi đoán nó đã có trước khi Kubernetes thậm chí xuất hiện. Pantheon làm drupal lưu trữ. Cách họ có mọi thứ được thiết lập, mọi máy chủ họ chạy cho khách hàng đều được container, nhưng khi bạn mô tả, thùng chứa sẽ biến mất khi không cần thiết. Tài nguyên duy nhất được dành riêng sau đó không phải là bộ nhớ đĩa là số ổ cắm trên máy chủ lưu trữ.

    Họ có một daemon khá đơn giản mà lắng nghe trên ổ cắm của tất cả các máy chủ không hoạt động. Khi nó nhận được yêu cầu, daemon dừng nghe nhiều kết nối đến hơn trên ổ cắm đó, bắt đầu vùng chứa được yêu cầu và proxy cho một yêu cầu tới vùng chứa mới. Các kết nối tiếp theo sẽ chuyển trực tiếp đến vùng chứa cho đến khi nó không hoạt động trong một khoảng thời gian và trình nền tảng trình nghe sẽ chiếm lại cổng một lần nữa. Đó là về nhiều chi tiết như tôi biết về những gì họ đã làm, nhưng bạn có được ý tưởng.

  3. Tôi tưởng tượng rằng một cái gì đó giống như daemon mà Pantheon đã triển khai có thể được sử dụng để gửi lệnh tới Kubernetes thay vì thẳng đến trình nền Docker. Có lẽ một cách tiếp cận dựa trên hệ thống để các contaners khởi động động cũng có thể giao tiếp với Kubernetes theo yêu cầu. Một trong hai cách này có thể cho phép bạn kích hoạt các nhóm, không chỉ các thùng chứa.

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