皆さんはGWを楽しんでいますか。せっかくの長期休暇をぐったりウィークとして無為に過ごしたりしていませんか。もちろん体を休めることは重要ですが,
そこで今回のRecipeでは,
コンテナを「いい感じ」に調整してくれるKubernetes
「Kubernetes」
- 複数のホストに複数のコンテナをデプロイするためのインフラストラクチャー
- コンテナが提供するサービスのスケーリング・
ロードバランシング - インスタンスのレプリケーション
- コンテナ間のネットワーク管理
- ロギング・
モニタリング - 上記の機能を利用するためのAPIや鍵の管理
Dockerは単にコンテナ内部でソフトウェアを実行するツールです。Dockerそのものには上記のような
- ※1
- UbuntuでDockerを活用する方法は第458回を参照してください。
Dockerコンテナを純粋なアプリコンテナとして使った場合,
複数のコンテナを管理するツールにDocker Composeがあります。Docker Composeは複数のコンテナの設定や関係をひとつのファイルにまとめて記述できるため,docker
コマンドにオプションとして渡していたような情報も設定ファイルとして記述できるため,
とどのつまりKubernetesは,
- ※2
- 今なら
「Docker Swarm」 という選択肢もあります。Swarmが実現しようとしていることは, 基本的な部分はKubernetesとほぼ同じです。
Kubernetes環境を「召喚」する
Kubernetes環境を用意すれば,
つまり管理対象の複数のホストに,
単にKubernetesの仕組みを勉強したいだけであればMinikubeを使うという手があります。Minikubeは単一ホスト上にKVMやVirtualBoxなどを用いて複数の仮想ホストを作成し,
そこで今回はより簡単に複数のホストにKubernetesを構築する方法としてconjure-upを使うことにしましょう。
conjure-upはホストを管理するバックエンドとしてJujuを使います。つまりホストの準備や個々のソフトウェアのデプロイそのものはJujuやその設定スクリプト群であるCharmが担います。conjure-upのSpellには,
簡単に言ってしまえば第341回で紹介したOpenStack Installerを,
conjure-upのインストールと実行
conjure-upを利用するためには,
- snapが動く環境
(この記事ではUbuntu 16. 04 LTSを使用しています) - Kubernetesを構築する環境
後者については,
- ※3
- LXDは少なくとも2.
9以降が必要になります。またLXDを使う場合, パッケージ版とsnap版のLXDをともにインストールした環境だと動作しません。どちらか一方をあらかじめアンインストールしておいてください。
conjure-upそのものはsnapパッケージとして提供されています。よってUbuntuでも,
$ sudo snap install conjure-up --classic conjure-up 2.1.5 from 'canonical' installed
conjure-upにはJujuのコマンドも同梱されています。このためJujuを別途インストールする必要なく,
$ conjure-up
以降はCUIから呪文を唱えることになります
- ※4
- 公式のドキュメントに
「Summon a Spell」 と書いてあるので……。
conjure-upは独自のCUIツールキットを使っています。このため画面上の文字列のコピーアンドペースト操作が若干特殊です。まず文字列をコピーする場合は,
また,
なおプロキシ環境の場合はconjure-upコマンドに--http-proxy
」--help
」sshuttle
などで外への経路を確保した上でconjure-upを実行したほうがいいでしょう。