LoginSignup
31
21

More than 5 years have passed since last update.

【IBM Cloud k8s検証メモ】OSSのコンテナ監視ツール Weave Scope を利用してKubernetesリソース監視

Last updated at Posted at 2017-09-14

Kubernetes(以下k8s)を利用すると、クラスタ環境でコンテナを運用するで優れた環境であると同時に、コンテナをホストするサーバーに、複数のアプリのコンテナが共存し、仮想ネットワークが形成され、密接に連携するために、k8s の Web UI (Dashboard) よりも詳細に把握できるツールが欲しいと感じていました。

そんな要望に応えてくれるのが、Weaveworksのオープンソースのコンテナ監視ツール Weave Scope です。 そして、これを Bluemix k8s のクラスタ環境を監視できる様にサンプルYAMLガイドが提供されています。

そこで、この記事は Bluemix Docのガイドを参考にしながら、「Bluemix k8sで、アプリをHTTPSとドメイン名でアクセスする設定方法のメモ」で作ったk8sクラスタとアプリを Weave Scope に適用した記録です。

Wave Scope の概要

Weave Scope は、アプリのマップを自動的に生成し、コンテナ化されたアプリを直感的かつリアルタイムに把握、監視、および制御できるようにします。

Dockerコンテナのリアリタイムな把握

画面上部にある CONTAINERS をクリックすると、各ポットに配置されたアプリ・コンテナを表示し、CPUやメモリの使用率をアイコンに見ることができます。

スクリーンショット 2017-09-14 1.01.27.png

コンテキストの詳細なリンク

前述の図中のexpress-containerをクリックすると、コンテナのコンテキストメトリック、タグ、およびメタデータを表示します。 これによって、特定のホストまたはサービスの中で、最も多くのCPUやメモリを消費するコンテナを簡単に見つけることができます。

スクリーンショット 2017-09-14 1.07.47.png

コンテナのコンソール出力とログイン

詳細ウィンドのモニタのアイコンをクリックすることで、コンテナのコンソール出力をブラウザ上に表示できます。

スクリーンショット 2017-09-14 1.21.24.png

また、">_" のアイコンをクリックすることで、コンテナへログインして、コマンドを実行することができます。

スクリーンショット 2017-09-14 1.21.44.png

クラスタ全体の状態を直感的に把握

画面左下にあるフィルタを操作して、k8sクラスタの全容を把握することもできます。

スクリーンショット 2017-09-14 1.28.11.png

PODとDeploymentの関係

ブラウザ画面上部のPOD列を選択することで、コントローラやサービスのPOD数と連携を把握することができます。

スクリーンショット 2017-09-14 1.53.04.png

クラスタ構成のサーバーリソースの把握

HOSTSをクリックすることで、インターネットとの受信と送信、および、サーバー関係の図を見ることができます。

スクリーンショット 2017-09-14 1.53.54.png

Weave Scope のドキュメント

Weave Scope のマニュアルは、https://www.weave.works/docs/scope/latest/introducing/ にありますので、詳しく知りたい方は、どうぞ、ご参照願います。

Bluemix k8s クラスタでのセットアップ

Vagrantの環境設定

次の図の様な環境を迅速に作成するために、GitHUBに Vagrantfileを公開しています。 このVagrantfile は、Node.js, PHP, Python, Ruby の開発環境を作成するとともに、Docker コンテナのビルド環境、Bluemix CLIコマンドとkubectlコマンドのインストールされた Ubuntu Linux の仮想マシンを作成します。

スクリーンショット 2017-09-14 8.17.54.png

今回は、weavescope に PCのブラウザからアクセスするために、GitからクローンしたVagrantfileの7行目あたりに、以下の設定を追加します。これにより、Vagrant内の仮想マシンで立ち上がったプロセスのポート番号 4040 を Vritual Box ホストの4040ポートへマッピングして、http://localhost:4040/ でアクセスできる様になります。

Vagrantfile
  config.vm.network :forwarded_port, host: 4040, guest: 4040

Bluemix ログイン

今回の記事は、「Bluemix k8sで、アプリをHTTPSとドメイン名でアクセスする設定方法のメモ」の続きにあたるので、もし、Bluemix k8s のスタンダード・クラスタを未作成であれば、前回の記事を参照して、クラスタを作成して、アプリをデプロイしておきます。

以下、スタンダード・クラスタが作成され、簡単なアプリがデプロイされ、Ingress (ロードバランサー)が稼働している状態に、Bluemix ログインから再開します。

$ bx login

ログイン完了の応答メッセージの指示に従って、bx target --cf を実行しておきます。

kubectlの環境変数設定

kubectlコマンドで、k8sのマスターに接続して、クラスタを操作できる様にするため、マスターの接続情報のダウンロードと環境変数の設定までを進めていきます。

k8sクラスタのリストを表示して、接続したいk8sクラスタの名前を確認します。

$ bx cs clusters

次のコマンドで、クラスタへ接続するためのYAMLファイルをダウンロードします。 そして、応答メッセージとして、 export KUBECONFIG=... が表示されるので、コピペして、環境変数として設定します。

bx cs cluster-config mycluster3

以上で、kubectlをk8sの特定のマスターへ接続する準備が整いましたので、実際にアクセスして確認します。 kubectl get allなどが適当だと思います。 これで 次の様なPODやサービスの状態が表示されれば成功です。

$ kubectl get all
NAME                              READY     STATUS    RESTARTS   AGE
po/express-app-1882574706-pfhjv   1/1       Running   0          3d
po/express-app-1882574706-pqmf2   1/1       Running   0          3d
po/express-app-1882574706-xlgr4   1/1       Running   0          3d

NAME              CLUSTER-IP    EXTERNAL-IP   PORT(S)          AGE
svc/express-svc   10.10.10.57   <nodes>       3000:31514/TCP   3d
svc/kubernetes    10.10.10.1    <none>        443/TCP          3d

NAME                 DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
deploy/express-app   3         3         3            3           3d

NAME                        DESIRED   CURRENT   READY     AGE
rs/express-app-1882574706   3         3         3         3d

Weave Scope の設定

Weave Scope と IBM Bluemix Container Service での Kubernetes クラスター・リソースの視覚化」にある手順に従って、設定を進めます。 また、最近、GitHubのrawファイルへのアクセスのURLが変わっている様なので、分かり難ですがが、以下のコマンドで実行されているYAMLファイルの内容は、GitHUB https://github.com/IBM-Bluemix/kube-samples/tree/master/weave-scope で参照できます。

k8sのRBAC(Role-based access control)の設定を実施します。

$ kubectl apply -f "https://raw.githubusercontent.com/IBM-Bluemix/kube-samples/master/weave-scope/weave-scope-rbac.yaml"
/master/weave-scope/weave-scope-rbac.yaml"
clusterrole "weave-scope-mgr" created
clusterrolebinding "weave-scope-mgr-role-binding" created

次のコマンドで、weaveworks社のサイトのYAMLファイルを適用して、weavescope をデプロイします。

$ kubectl apply --namespace kube-system -f "https://cloud.weave.works/k8s/scope.yaml?k8s-version=$(kubectl version | base64 | tr -d '\n')"
serviceaccount "weave-scope" created
deployment "weave-scope-app" created
service "weave-scope-app" created
daemonset "weave-scope-agent" created

kubectl で port-forward を実行して wevascope へアクセスできる様にします。

$ kubectl port-forward -n kube-system "$(kubectl get -n kube-system pod --selector=weave-scope-component=app -o jsonpath='{.items..metadata.name}')" 4040
Forwarding from 127.0.0.1:4040 -> 4040
Forwarding from [::1]:4040 -> 4040

動作確認

Vagrant + VirtualBox の ホストとなっている PCのブラウザから http://localhost:4040/ を実行して次の画面が表示されればデプロイ成功です。

スクリーンショット 2017-09-14 9.40.33.png

参考資料

(1) Weaveworksがコンテナとマイクロサービス監視ツール‘Weave Scope’をリリース https://www.infoq.com/jp/news/2015/06/weave-scope-container-monitoring
(2) Weave Scopeでコンテナ構成をリアルタイム視覚化 http://pocketstudio.jp/log3/2015/07/14/weave-scope-container-visualization/
(3) weaveworks https://www.weave.works/
(4) GitHub waveworks/scope https://github.com/weaveworks/scope
(5) GitHub IBM-Bluemix https://github.com/IBM-Bluemix/kube-samples/tree/master/weave-scope
(5) Weave Scope と IBM Bluemix Container Service での Kubernetes クラスター・リソースの視覚化 https://console.bluemix.net/docs/containers/cs_cluster.html#cs_weavescope
(6) Weave Scope 概要 https://www.weave.works/docs/scope/latest/introducing/

31
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31
21