はじめに
RancherOS + RancherでKubernetesを構築していたのですが、Storage系のアプリケーションがまだまだまともに動かなかったので、一旦Ubuntuに移行して構築しているのでメモ程度に。
利用するもの
- Ubuntu 16.04
- Clusterにするので3インスタンス
- バージョンはRancherのDocを参照して選択。
- Docker 17.03.2
- こちらもRancher基準で。
- Rancher 2.x
インストールしていく
Ubuntu
適当にどうぞ。
インターネットアクセスだけ確保しておいて下さい。
Root以外のユーザでDockerを動かしたいなら、特定のユーザに対してDockerグループ権限を付与しておいて下さい。
DockerにアクセスするためのUnixソケットへの権限が必要です。
user@rancher01:~$ ll /var/run/docker.sock
srw-rw---- 1 root docker 0 Jul 23 20:36 /var/run/docker.sock=
# usermod -a -G docker <Username>
Docker
指定のバージョンをインストールするためのスクリプトがRancherにあるのでこちらを。
wget https://releases.rancher.com/install-docker/17.03.sh
sh 17.03.sh
直接実行してもらってもOKですが中身をチェックしたかったので一旦wgetして確認後に実行してます。
実行ログは省きますが、docker versionの結果が表示されていればOK。
+ sudo -E sh -c docker version
Client:
Version: 17.03.2-ce
API version: 1.27
Go version: go1.7.5
Git commit: f5ec1e2
Built: Tue Jun 27 03:35:14 2017
OS/Arch: linux/amd64
Server:
Version: 17.03.2-ce
API version: 1.27 (minimum version 1.12)
Go version: go1.7.5
Git commit: f5ec1e2
Built: Tue Jun 27 03:35:14 2017
OS/Arch: linux/amd64
Experimental: false
手動でも一発叩いてみると良いと思います。
Rancher
Dockerが動いたらRancherアプリケーションを起動します。
$ sudo docker run -v /opt/mysql:/var/lib/mysql -d --restart=unless-stopped -p 8080:80 -p 8443:443 rancher/rancher
Rancherが使うmysqlのデータをノード側に保管することで、コンテナ上のデータライフサイクルから切り離します。
ノードで8443がListenされたらブラウザから開くとRancherのWebUIに接続されます。
Kubernetesクラスタの構築
WebUIの画像まで貼っていくと面倒なので適当に書きますが、クラスタの追加で「Custom」を選択して、各ノードのCLIで画面上に表示されるコマンドを流し込めばあとは勝手にRancherのAgentが構築を行ってくれます。
- グローバルメニューから、「クラスタの追加」ボタンを押下
- 「Custom」を選択して、クラスタ名を入力し下部の「次へ」
- ノードロール枠でControllerとEtcdもチェック。
- ノードアドレスにIPアドレスを入力
- ノード間で通信するために利用するので疎通が取れるものにしましょう。
- ページ真ん中にある投入用コマンドをコピーして、CLIで各ノードに叩き込む。
これによってRancher-agentコンテナが起動して、Kubernetesクラスタを自動的に構築してくれます。
問題なく起動してきたらダッシュボードがオールグリーンな感じになります。
おわりに
Kubernetesを簡単に構築するためのツールは様々ありますが、個人的な興味でRancherを取り上げてみました。
正直Rnacherのダッシュボードからじゃ見れない情報が結構あるので結局kubectlと併用している状況ではありますが、大分視覚的で楽なのは確かですね。
HELMなども含めて、もっともっと発展して安定してくるとサービスで利用しやすくなるので今後に期待!という気持ちであります。