19/09/2018, 09:48

Làm thế nào để dọn sạch môi trường Docker của bạn bằng cách sử dụng CloudSlang trên một ClusterOS CoreOS

Giới thiệu CoreOS là một bản phân phối Linux tập trung vào việc nhanh chóng kéo dài các môi trường nhóm bằng cách sử dụng các thùng chứa Docker và khám phá dịch vụ. Nếu bạn mới sử dụng CoreOS, hãy xem Bắt đầu với CoreOS loạt bài hướng dẫn. Tuy nhiên, Docker hình ảnh có thể chiếm khá nhiều không ...

Giới thiệu

CoreOS là một bản phân phối Linux tập trung vào việc nhanh chóng kéo dài các môi trường nhóm bằng cách sử dụng các thùng chứa Docker và khám phá dịch vụ. Nếu bạn mới sử dụng CoreOS, hãy xem Bắt đầu với CoreOS loạt bài hướng dẫn.

Tuy nhiên, Docker hình ảnh có thể chiếm khá nhiều không gian đĩa trên máy chủ Docker. Một hình ảnh cơ sở có thể có kích thước hàng trăm MB và hình ảnh tùy chỉnh có thể dễ dàng đạt tới 1 GB. Nếu bạn có nhiều bản phát hành hình ảnh Docker mới cho ứng dụng của mình, chúng có thể dễ dàng lưu trữ trên bộ nhớ máy chủ; máy chủ có thể hết dung lượng đĩa nếu bạn không xóa hình ảnh cũ hoặc không sử dụng theo thời gian.

CloudSlang là một giải pháp dàn nhạc nguồn mở giúp dễ dàng tự động hóa quy trình bằng quy trình công việc hoặc luồng ngắn. Một luồng chứa một danh sách các nhiệm vụ và logic điều hướng. Một nhiệm vụ có thể gọi một hoạt động, trong đó có một hành động chạy một kịch bản Python hoặc phương thức Java, hoặc một luồng khác. Ngôn ngữ CloudSlang cho phép bạn xác định các luồng theo cách văn bản, có thể tái sử dụng và bạn có thể sử dụng nội dung hiện có (Docker, OpenStack và các tiện ích) để quản lý các ứng dụng được triển khai của bạn hoặc tạo luồng tùy chỉnh của riêng bạn.

Trong hướng dẫn này, chúng tôi sẽ dọn sạch môi trường Docker cho mỗi máy được triển khai trong một cụm CoreOS sử dụng CloudSlang. Chúng tôi sẽ sử dụng nội dung đã tồn tại, vì vậy bạn sẽ không cần chỉnh sửa bất kỳ tệp CloudSlang nào.

Điều kiện tiên quyết

Trước khi bắt đầu, bạn sẽ cần:

  • Một 14.04 Ubuntu giọt với người dùng không phải root, sẽ là máy chủ CloudSlang của bạn.

  • Đã cài đặt Java (phiên bản 7 hoặc mới hơn) trên máy chủ CloudSlang. Lưu ý rằng bạn không cần phải cài đặt JDK, chỉ có JRE.

  • Một cụm ba máy CoreOS. Nếu bạn chưa có, bạn có thể thiết lập một tài khoản bằng cách theo dõi hướng dẫn này.

Bước 1 - Cài đặt giải nén

Trong bước này, chúng tôi sẽ cài đặt unzip trên máy chủ CloudSlang.

Trước tiên, hãy đảm bảo danh sách gói được cập nhật.

sudo apt-get update

Sau đó, cài đặt giải nén.

sudo apt-get install unzip

Bước 2 - Tải xuống CloudSlang

Trong phần này, chúng tôi sẽ tải xuống công cụ CloudSlang CLI và nội dung có sẵn (các hoạt động và luồng được xác định trước). CloudSlang CLI là một công cụ giao diện dòng lệnh có thể được sử dụng để chạy các luồng.

Trước tiên, tải xuống kho lưu trữ CloudSlang CLI.

wget https://github.com/CloudSlang/cloud-slang/releases/download/cloudslang-0.7.29/cslang-cli-with-content.zip

Giải nén tệp lưu trữ.

unzip cslang-cli-with-content.zip

Điều này sẽ tạo ra cslang danh mục. Nếu bạn liệt kê nội dung của thư mục đó,

ls ~/cslang

Bạn sẽ thấy ba thư mục trong đó:

  • python-lib, được sử dụng cho các thư viện Python bên ngoài.

  • cslang, chứa các tệp CloudSlang CLI. Các cslang/bin thư mục chứa một tệp có tên cslang được sử dụng để khởi động CLI. Các cslang/lib chứa các phụ thuộc cần thiết cho ứng dụng.

  • content, chứa nội dung CloudSlang được tạo sẵn. Dòng chảy mà chúng ta sẽ chạy được đặt tại content/io/cloudslang/coreos và nó được gọi là cluster_docker_images_maintenance.sl. Luồng này lặp lại trên tất cả các máy trong cụm và xóa các hình ảnh Docker không sử dụng.

Bước 3 - Thêm khóa cá nhân

CloudSlang cần truy cập khóa SSH vào cụm CoreOS của bạn. Trong bước này, chúng ta sẽ thêm điều này bằng cách tạo cặp khóa mới trên máy chủ CloudSlang và thêm khóa công khai vào cụm CoreOS.

Trước tiên, hãy tạo cặp khóa không có cụm mật khẩu bằng cách làm theo các bước 1 và 2 của hướng dẫn này. Sau khi bạn có một cặp khóa, bạn sẽ cần phải thêm khóa công khai của bạn vào mỗi máy trong cụm CoreOS của bạn.

Trước tiên, hãy lấy khóa công khai trên máy chủ CloudSlang của bạn.

cat ~/.ssh/id_rsa.pub

Bạn sẽ thấy một đầu ra dài bắt đầu bằng ssh-rsa và kết thúc bằng username@hostname. Sao chép điều này để sử dụng trong lệnh tiếp theo.

SSH vào một trong các máy chủ CoreOS của bạn (tên người dùng mặc định là core), sau đó chạy lệnh sau để thêm khóa công khai của bạn.

echo "your_public_key" >> ~/.ssh/authorized_keys

Bạn sẽ cần phải làm điều này cho mỗi máy chủ trong cụm CoreOS của bạn.

Bước 4 - Chạy luồng

Trong phần này chúng ta sẽ chạy luồng và kiểm tra hành vi của nó.

Để chạy luồng, trên máy chủ CloudSlang, trước tiên hãy chuyển sang /cslang/bin danh mục.

cd ~/cslang/cslang/bin/

Chạy tệp thực thi được gọi cslang để khởi động CLI.

./cslang

Sau giây lát, bạn sẽ thấy màn hình chào mừng CloudSlang.

0.7.26-SNAPSHOT
Welcome to CloudSlang. For assistance type help.

Nhập lệnh sau vào CLI, thay thế your_coreos_server_ip với địa chỉ IP của một trong các máy chủ CoreOS trong cụm của bạn.

custom_prefix(cslang>)
run --f  ../../content/io/cloudslang/coreos/cluster_docker_images_maintenance.sl --i coreos_host=your_coreos_server_ip,coreos_username=core,private_key_file=~/.ssh/id_rsa --cp ../../content/

Các run lệnh kích hoạt luồng. --f chỉ định đường dẫn đến luồng. --i xác định đầu vào dòng chảy: máy chủ lưu trữ và tên người dùng CoreOS và khóa SSH riêng liên quan. --cp xác định đường dẫn lớp khi luồng phụ thuộc vào các hoạt động và luồng khác. Bởi vì luồng này có nhiều phụ thuộc khác nhau, chúng ta có thể chỉ định phụ huynh content thư mục; quá trình quét là đệ quy để các thư mục con cũng được quét.

Logic luồng đầu tiên truy lục địa chỉ IP của các máy từ cụm, sau đó lặp lại trên các máy và xóa các hình ảnh không sử dụng. Đầu tiên, nó nhận được tất cả các hình ảnh, chỉ để lại những hình ảnh không sử dụng bằng cách kiểm tra các thùng chứa đang chạy / dừng. Tiếp theo, nó xóa các hình ảnh không sử dụng. Cuối cùng, nó làm tương tự cho việc treo hình ảnh.

Trong khi luồng đang chạy, CLI hiển thị các tên tác vụ được thực thi. Khi dòng chảy kết thúc, CLI đưa ra một số thông tin hữu ích như kết quả đầu ra dòng chảy và kết quả dòng chảy.

Trong trường hợp của chúng tôi, kết quả luồng sẽ là THÀNH CÔNG (có nghĩa là các hình ảnh Docker chưa được sử dụng đã bị xóa trong cụm) hoặc FAILURE (có nghĩa là đã xảy ra sự cố). Luồng này có một đầu ra: number_of_deleted_images_per_host, có bao nhiêu hình ảnh đã bị xóa trên mọi máy chủ trong cụm.

Nếu mọi thứ suôn sẻ, bạn sẽ thấy một kết quả tương tự như sau:

...

Flow : cluster_docker_images_maintenance finished with result : SUCCESS
Execution id: 101600001, duration: 0:02:06.180

Nếu bạn muốn biết thêm thông tin về việc thực thi, hãy xem trong execution.log tệp được tạo bởi CLI trong bin thư mục.

Phần kết luận

Bây giờ tất cả các hình ảnh Docker chưa sử dụng sẽ bị xóa trong cụm CoreOS của bạn!

Trong hướng dẫn này, bạn đã thấy cách chạy CloudSlang trên máy Ubuntu của bạn và cách sử dụng CloudSlang CLI để kích hoạt luồng. Bạn cũng đã sử dụng quy trình làm việc sẵn sàng để dọn dẹp môi trường Docker của mình.

Bản quyền ngày 9 tháng 6 năm 2015, Công ty Phát triển Hewlett-Packard, LP Sao chép với Giấy phép.

0