CoreOSクラスターでCloudSlangを使用してDocker環境をクリーンアップする方法
序章
CoreOSは、Dockerコンテナーとサービス検出を利用して、クラスター化された環境を迅速にスピンアップすることに焦点を当てたLinuxディストリビューションです。 CoreOSを初めて使用する場合は、このコアOS入門チュートリアルシリーズを確認してください。
ただし、DockerイメージはDockerホスト上でかなり多くのディスクスペースを占有する可能性があります。 ベースイメージのサイズは数百MBで、カスタムイメージは簡単に1GBに達する可能性があります。 アプリ用の新しいDockerイメージのリリースが多数ある場合、それらはサーバーストレージに簡単に備蓄できます。 古いイメージや未使用のイメージをときどきクリアしないと、サーバーのディスク容量が不足する可能性があります。
CloudSlang は、ワークフローまたは略してフローを使用してプロセスを簡単に自動化できるオープンソースのオーケストレーションソリューションです。 フローには、タスクとナビゲーションロジックのリストが含まれています。 タスクは、PythonスクリプトまたはJavaメソッド、あるいは別のフローを実行するアクションを含む操作を呼び出すことができます。 CloudSlang言語を使用すると、テキストで再利用可能な方法でフローを定義できます。また、既存のコンテンツ(Docker、OpenStack、およびユーティリティ)を使用して、デプロイされたアプリケーションを管理するか、独自のカスタムフローを作成できます。
このチュートリアルでは、CloudSlangを使用してCoreOSクラスターにデプロイされた各マシンのDocker環境をクリーンアップします。 既存のコンテンツを使用するため、CloudSlangファイルを編集する必要はありません。
前提条件
始める前に、次のものが必要になります。
-
CloudSlangサーバーとなるsudo非rootユーザーを含むUbuntu14.04ドロップレット。
-
CloudSlangサーバーにJava(バージョン7以降)がインストールされています。 JDKをインストールする必要はなく、JREのみをインストールする必要があることに注意してください。
-
3台のCoreOSマシンのクラスター。 まだお持ちでない場合は、このチュートリアルに従って設定できます。
ステップ1—unzipをインストールする
このステップでは、インストールします unzip
CloudSlangサーバー上。
まず、パッケージリストが最新であることを確認します。
- sudo apt-get update
次に、unzipをインストールします。
- sudo apt-get install unzip
ステップ2—CloudSlangをダウンロードする
このセクションでは、CloudSlang CLIツールと利用可能なコンテンツ(事前定義された操作とフロー)をダウンロードします。 CloudSlang CLIは、フローの実行に使用できるコマンドラインインターフェイスツールです。
まず、CloudSlangCLIアーカイブをダウンロードします。
- wget https://github.com/CloudSlang/cloud-slang/releases/download/cloudslang-0.7.29/cslang-cli-with-content.zip
アーカイブを解凍します。
- unzip cslang-cli-with-content.zip
これにより、 cslang
ディレクトリ。 そのディレクトリの内容を一覧表示すると、
- ls ~/cslang
その中に3つのディレクトリがあります。
-
python-lib
、外部Pythonライブラリに使用されます。 -
cslang
、CloudSlangCLIファイルが含まれています。 Thecslang/bin
フォルダには、という名前のファイルが含まれていますcslang
これは、CLIの起動に使用されます。 Thecslang/lib
アプリケーションに必要な依存関係が含まれています。 -
content
、既製のCloudSlangコンテンツが含まれています。 実行するフローは次の場所にあります。content/io/cloudslang/coreos
そしてそれは呼ばれますcluster_docker_images_maintenance.sl
. このフローは、クラスター内のすべてのマシンを反復処理し、未使用のDockerイメージを削除します。
ステップ3—秘密鍵を追加する
CloudSlangには、CoreOSクラスターへのSSHキーアクセスが必要です。 このステップでは、CloudSlangサーバー上に新しいキーペアを作成し、公開キーをCoreOSクラスターに追加することでこれを追加します。
まず、このチュートリアルの手順1と2に従って、パスフレーズなしでキーペアを作成します。 キーペアを取得したら、CoreOSクラスター内の各マシンに公開キーを追加する必要があります。
まず、CloudSlangサーバーで公開鍵を取得します。
cat ~/.ssh/id_rsa.pub
で始まる長い出力が表示されます ssh-rsa
そしてで終わる username@hostname
. これをコピーして、次のコマンドで使用します。
CoreOSサーバーの1つにSSHで接続します(デフォルトのユーザー名は core
)次に、次のコマンドを実行して公開鍵を追加します。
echo "your_public_key" >> ~/.ssh/authorized_keys
CoreOSクラスター内のサーバーごとにこれを行う必要があります。
ステップ4—フローを実行する
このセクションでは、フローを実行し、その動作を確認します。
フローを実行するには、CloudSlangサーバーで、最初にに変更します。 /cslang/bin
ディレクトリ。
- cd ~/cslang/cslang/bin/
と呼ばれる実行可能ファイルを実行します cslang
CLIを起動するため。
- ./cslang
しばらくすると、CloudSlangのウェルカム画面が表示されます。
0.7.26-SNAPSHOT
Welcome to CloudSlang. For assistance type help.
CLIで次のコマンドを入力し、置き換えます your_coreos_server_ip
クラスタ内のCoreOSサーバーの1つのIPアドレスを使用します。
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/
The run
コマンドはフローをトリガーします。 --f
フローへのパスを指定します。 --i
フロー入力を指定します:CoreOSホストとユーザー名、および関連する秘密SSHキー。 --cp
フローが他の操作やフローに依存する場合のクラスパスを指定します。 このフローにはさまざまな依存関係があるため、親を指定できます content
フォルダ; スキャンは再帰的であるため、サブディレクトリもスキャンされます。
フローロジックは、最初にクラスターからマシンのIPアドレスを取得し、次にマシンを反復処理して未使用のイメージをクリアします。 まず、すべての画像を取得し、実行中/停止中のコンテナをチェックして未使用の画像のみを残します。 次に、未使用の画像を削除します。 最後に、ぶら下がっている画像についても同じことを行います。
フローの実行中、CLIは実行されたタスク名を表示します。 フローが終了すると、CLIはフロー出力やフロー結果などの有用な情報を出力します。
この場合、フローの結果はSUCCESS(クラスター内で未使用のDockerイメージがクリアされたことを意味します)またはFAILURE(問題が発生したことを意味します)のいずれかになります。 このフローには1つの出力があります。 number_of_deleted_images_per_host
、これは、クラスター内のすべてのホストで削除されたイメージの数です。
すべてがうまくいけば、次のような出力が表示されるはずです。
...
Flow : cluster_docker_images_maintenance finished with result : SUCCESS
Execution id: 101600001, duration: 0:02:06.180
実行に関する詳細情報が必要な場合は、 execution.log
CLIによって作成されたファイル bin
フォルダ。
結論
これで、未使用のDockerイメージがすべてCoreOSクラスターから削除されます。
このチュートリアルでは、UbuntuマシンでCloudSlangを実行する方法と、CloudSlangCLIを使用してフローをトリガーする方法を見てきました。 また、既成のワークフローを使用してDocker環境をクリーンアップしました。
Copyright 2015年6月9日、Hewlett-Packard Development Company、LP 許可を得て複製。