Kubernetes – コンテナ管理ツールのクバーネテスで、クラウドにクラスタを構成して分かったこと

Dockerなどコンテナ管理ツールの Kubernetes 。クラウドにコンテナからクラスタを構成するには、もう必須のツールですね。元々はGoogle社が自分のクラウド環境を管理するために使っていたものがオープンソース化されたもので、Dockerなどコンテナをクラスタ化して構成するのが得意な管理ツールです。IBM Bluemixでも全面的に採用されたため、Hyperledger (Blockchain)のクラスタを構成するために以下のようにWindows環境セットアップして使ってみました。(⇒参照URL)

コンテナ環境のセットアップ

まずは Kubernetes のコマンドラインツール (kubectl)のインストール。以下からWindows版をダウンロードして導入しました。

https://kubernetes.io/docs/tasks/kubectl/install/

Windows用 v1.7 はこちらからダウンロード

次に、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を使ってコンテナのクラスター管理をやってみましょう!