2018.08.03

Rancher 2.0 入門!!! Kubernetesクラスタの可視化!!!


はじめに

こんにちは。次世代システム研究室のY.Kです。
前回の記事の続きです。今回はKubernetes(以下k8s) クラスタの管理ツールRancherについて紹介したいと思います。
Rancherではk8sクラスタの状態の可視化・監視・レプリカセットの展開などをGUIを用いて行うことができます。


読むべき対象者

  • GUIを用いて簡単にk8sクラスタを構築したい方
  • もうすでにk8sクラスタを構築済みではあるが可視化ツールは導入しておらず検討している方

Rancherの起動・初期設定

基本的にRancherはk8sの管理ツールであるため、k8sクラスタとは独立して動作します。
RancherもDockerイメージが公開されているため、前提としてDockerがインストールされている必要があります。(Rancherを起動するために必要なDockerのバージョンについてはこちらを確認してください。)
立ち上げるのは以下のDockerコマンドを実行するだけです。

docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher

サーバーのIPにブラウザから「http://{{ host_ip }}(80番ポート)」へアクセスするとパスワード・利用するIPの設定・確認画面が表示されますので適宜設定してください。
これでRancherを利用する準備は完了です。

Rancherで可視化するk8sの設定

前項でRancherはk8sから独立して動作していると言いましたが、Rancherを立てただけではk8sクラスタの管理はできません。
そもそもk8sクラスタが存在しなくてもRancherだけを起動することもできます。
ここでは、Rancherから管理をするk8sの設定方法について2つのパターンについて説明します。
  • k8sクラスタが存在しない状態で、Rancherを用いてクラスタを構築する場合
  • 管理したい既存k8sクラスタをRancherへ登録する場合

ヘッダーメニュー左のプルダウンからグローバルを選択、クラスタタブを開きます。
下記画面からクラスタを追加をクリックすると設定画面へ遷移します。
※余談ですがRancherのテーマをダークに変更しています。右上のメニューのアカウント設定から変更可能です。


Rancherを用いてクラスタを構築する

クラスタの作成

前提として、クラスタのノードとするサーバーにはDockerをインストールしておく必要があります。
ではこの前提を踏まえた上で構築をしていきましょう。
ご覧の通り、Rancherでは様々なサービスがサポートされています。今回のように全く構築されていない場合は数あるメニューの中からCUSTOMを選択し、クラスタ名を入力します。メンバーロールではクラスタを操作できるRancherのユーザーを、クラスターオプションでは利用するk8sのバージョンやネットワークプロバイダーなどが設定できます。必要に応じて設定してください。



ノードの追加

続いてノードの設定です。まずノードのロールですが、etcdはクラスタの設定を管理するKVSで、冗長化を図る場合は3台以上に設定しましょう。controllはcontroll plane、workerはその名の通りworker-nodeとなります。1台のノードに複数のロールをもたせることも可能です。
続いてノードのアドレスですが、Rancherからアクセスできるものを設定してください。
ラベルは必須項目ではありませんが、クラスタの中で更に細かい役割をもたせたいときなどに設定すると良いでしょう。
設定が終わったあとにノードにログインして一番上に記載されているdockerコマンドを実行するとクラスタのノードとして起動します。
※完了を推す前にコマンドを実行してください


シングルノードで起動させる場合はすべてのロールにチェックを入れて起動してください。
運用を考えたクラスタを構築する場合はcontroll planeとworkerを複数台ずつ用意して見てください。
ノードの台数を増やすにはクラスタの編集からノードの追加を繰り返すことで可能です。

Rancherへの既存k8sクラスタの登録

クラスタの作成

続いて、前回の記事で紹介したようなツールを利用したり、自前でインストールしたりしてクラスタを構築済みの場合にどのようにRancherで管理できるように設定するのか見てみましょう。
今回はメニューの中からIMPORTを選択し、CUSTOM同様クラスタ名を入力します。


クラスタの登録

次に、表示されるコマンドをインポート対象のクラスタを管理しているkubectlで実行するだけです。

Rancherの動作確認

上記の設定ができたら以下のようなダッシュボードが表示されるはずです。
ダッシュボードでメモリの使用量などが一目瞭然となっています。これ以外の便利機能についていくつか紹介していきます。


RKEでのnodeの追加と注意点

既存のものをインポートした場合は、v2.0.1の時点でメニューからクラスタを拡張することは残念ながらできません。
前回の記事のようにRKEを用いている場合は、cluster.ymlのnodeにサーバーの設定を書き加えて再び
./rke up --config cluster.yml
をすればクラスタのノードを追加することが可能です。
しかし、追加したあとにRancherのダッシュボードを見に行くと、以下のようにpodが展開されているにもかかわらずワークロードの情報が見れなくなります。

これは、Rancherのプロジェクトに紐づく名前空間が開放されてしまうことが原因です。
これを解決するためには再び名前空間をプロジェクトに紐づけます。

名前空間はメニューの「プロジェクト/名前空間」から確認できます。

ここから表示したいワークロードの名前空間(今回はdefault)を選択し、「移動」をクリックします。
以下のダイアログが出るため、移動先のプロジェクトを選択してください。これでワークロードが復活します。
めでたしめでたし。




まとめ

いかがでしたでしょうか?
クラスタがない場合でも簡単に構築でき、クラスタが存在する場合はなんと1つのコマンドを実行するだけで、Rancherとの連携が可能になります。
Rancherを利用すればGUIを用いてk8sクラスタの状態確認、設定変更を簡単に行うことができます。
また、Rancherには便利な機能が盛り沢山です。是非使い方をマスターして快適なコンテナ生活を送ってください。
機会があれば機能について細かく紹介できればと思います。


最後に

次世代システム研究室では、コンテナ技術を用いてモダンな構成でサービス運用を助けていただけるエンジニアを募集しています。興味を持って頂ける方がいらっしゃいましたら、ぜひ 募集職種一覧からご応募をお願いします。