Dockerなどコンテナ管理ツールの Kubernetes 。クラウドにコンテナからクラスタを構成するには、もう必須のツールですね。元々はGoogle社が自分のクラウド環境を管理するために使っていたものがオープンソース化されたもので、Dockerなどコンテナをクラスタ化して構成するのが得意な管理ツールです。IBM Bluemixでも全面的に採用されたため、Hyperledger (Blockchain)のクラスタを構成するために以下のようにWindows環境セットアップして使ってみました。(⇒参照URL)
コンテナ環境のセットアップ
まずは Kubernetes のコマンドラインツール (kubectl)のインストール。以下からWindows版をダウンロードして導入しました。
https://kubernetes.io/docs/tasks/kubectl/install/
⇒Windows用 v1.7 はこちらからダウンロード
(Macは一番下を参照)
次に、Bluemix用のコマンドラインツール (CLI)も以下からWindows版をダウンロード。Bluemix_CLI_….exe を実行して、LicenseをAgreeしてInstallしてください。Windowsをリブートするとコマンドが使えるようになります。
http://clis.ng.bluemix.net/ui/home.html
Bluemixのコマンドラインは、Cloud Foundry (cf) コマンド・ベースですが、cfコマンドではなく以下のBluemixコマンドでコマンドプロンプトから実行してください。(Bluemixコマンドは、以下のように bx と略しても可)
また既にBluemixのリポジトリ登録が実行されいる場合は “already registered” などのメッセージが表示されますが気にせず次に進めて大丈夫です。
>bx plugin repo-add bluemix https://plugins.ng.bluemix.net
次に以下のコマンドで、Bluemixのコンテナ・サービスのプラグインをインストールします。ファイルがローカルにダウンロードされ、導入されます。
>bx plugin install container-service -r bluemix
Bluemixへのログインと初期設定
Bluemixにログインします。まずは作成対象となるクラウド(APIエンドポイント)を指定するため以下のコマンドを実行します。(以下のngは米国南部で、英国を使う場合はeu-gb)
>bx api api.ng.bluemix.net
次に通常のユーザーは、以下のコマンドでログインしてください。SSOでFederationされているユーザー(第二認証が必要なユーザー等)はメッセージが出ますので、その下の「-sso」付きのコマンドでログインしてください。
>bx login
>bx login -sso
-sso 付きのログインの場合は、メッセージに出てくるURL(https://iam.ng.bluemix.net/oidc/passcodeなど)にアクセスし、ログインした上でワンタイム・コードを取得し、インプット(コマンドラインにコピペで可)してEnterしてください。その後アカウントを選択するように表示されるので、1とか2とか数字で選択します。
その際、No org or space targeted, … といったメッセージが出ると、org(組織)やspace(スペース名)が登録されていないという事です。Bluemixではこれらを指定する必要があります。組織は後から変更できますので、とりあえず自分のユーザーID(メールID)を以下の部分に埋めて以下のコマンドをうってください。
>bx target -o あなたのユーザーID
まだスペースを定義していない場合は、以下のコマンドを実行してください。(SpaceUSの部分は好きな名前に変えて大丈夫です)
>bx cf create-space SpaceUS
作成したスペースを以下のコマンドで指定します。これらの組織(ORG)やスペースが指定されていないと次に進めませんので、注意してください。(Bluemixの画面からも指定できます)
>bx target -s SpaceUS
クラスターのセットアップ
クラウド上のコンテナ・サービスに、複数のサーバーを一体管理できる「クラスター」を構成します。ここでは、blockchainという名称のクラスターをIBM Container Service (bx cs)上に作ります。
>bx cs cluster-create --name blockchain
上記のコマンドはmachine-typeフラグを指定していないため「free cluster」を作ります。作成状況を確認するには以下のコマンドを打ちます。
>bx cs clusters
すると、「deploying」などと状況(state)が表示されます。
“requesting”→”deploying”→”pending”→”normal”と状況は変わりますが、normalになったら完了です。30分以上かかるようだと何らかの問題が発生していると思われます。クラスターのworker (クラスターを構成する一つ一つのノード)の状況を確認するには以下のコマンドで確認できます。
>bx cs workers blockchain
BluemixのコンソールのWeb UIからも状況を確認することができます。以下のように状況が「準備完了」となると”normal”の状態です。
ちなみに上のBluemixダッシュボードの右上の○い人のマークの左の自分のメールアドレスあたりをクリックすると、自分の組織(ORG)やスペースの名称を確認することができます。
Kubernetesのコマンド kubectlのセットアップ
以下のコマンドで作成したクラスターの構成をダウンロードします。
>bx cs cluster-config blockchain
す。すると、SET KUBECONFIG=/home/*****/.bluemix/… .blockchain.yml (Windows以外は、export KUBECONFIG=…)といった文字が表示されます。この部分をコピーして(改行に注意)、以下のコマンドを実行します。
>set KUBECONFIG=/home/*****/.bluemix/...blockchain.yml
これで構成ファイルの yml (ヤムル) にPATHが通り、kubectl コマンドが実行できるようになりました!
例えば、以下のコマンドを実行するとKubernetes UIのProxyを立ち上げることができます。
>kubectl proxy
Proxyサーバーが立ち上がると、ブラウザのURLに「127.0.0.1:8001/ui」と入力すると以下のようなKubernetesのProxy UIにアクセスできます。
他にも以下のようなコマンドを実行することができます。
# クラスター物理情報表示
>kubectl cluster-info
# サービス情報取得
>kubectl get services
# POD情報取得(最初はリソース無し)
>kubectl get pods
# 何らかのリソースのログを表示
>kubectl logs $(kubectl get pods | grep <リソース> | awk '{print $1}')
# 例
>kubectl logs $(kubectl get pods | grep org1peer1 | awk '{print $1}')
Dockerなどコンテナ管理ツールの決定版、Kubernetesを使ってコンテナのクラスター管理をやってみましょう!
Macの場合のkubectl取得)
Kubernetesのダウンロードは以下のコマンドをターミナルから実行します。
$ curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/darwin/amd64/kubectl
$ chmod +x ./kubectl
$ sudo mv ./kubectl /usr/local/bin/kubectl
$ kubectl version