LoginSignup
12
15

More than 5 years have passed since last update.

Kubernetes on Google Cloud Platform by Rancher ~Install & ‎Architecture~

Last updated at Posted at 2017-06-11

Rancherのkubernetesテンプレートを利用して、簡単にk8s環境を構築してみたいと思います。

Rancherは、ホストを管理するRancher Serverと管理されるホストのRancher Agentが必要となり、
ServerとAgentはDockerイメージであるため、docker runコマンドを実行するだけで利用できます。

Rancher ServerとAgent環境を構築して、k8s環境も構築して、Rancherのk8sのArchitecutreを考えてみたいと思います。

Rancher Server & Agent on GCP

今回は、Google Cloud Platformを利用して、Rancher Server 1台とAgentホスト 3台の環境を作成します。

01.png

※他のクラウドベンダー、オンプレミス環境でも構いません。

Compute Engineで以下の4インスタンスを作成します。

項目 入力概要
ゾーン asia-southeast1-a
マシンタイプ vCPUx1
ブートディスク Ubuntu 14.04 LTS
ファイアウォール HTTP トラフィックを許可する、HTTPS トラフィックを許可するの両方をチェックします。

GCPでは、デフォルトでファイアウォールが設定されていて、ホスト間でのコンテナの通信が行えないため、
設定を変更する必要があります。

GCPのダッシュボードで、「ネットワーキング」-「ファイアウォール」を選択して、ファイアウォールルールを作成します。

image.png

名前は任意名、ソースIPの範囲は0.0.0.0/0、プロトコルとポートは全て許可とします。
今回はお試しということで、全許可にしています。
最後に「作成」ボタンをクリックします。

Rancher Serverの構築

rootパスワードの設定

GCPではrootのパスワードがデフォルトでは設定されていないので、まずはrootのパスワードを設定します。
4インスタンスに任意のパスワードを設定します。

コマンド
$ sudo passwd root

Dockerのインストール

Dockerをインストールします。Rancherとk8s環境ではDockerのバージョンがサポートしているものとそうでないものがあるので、Support Versionで確認します。

今回は、Rancher Labs公式Online Meetupで1.12.6で行っているので、そのバージョンに合わせてみます。
4インスタンスにDockerをインストールします。

コマンド
$ curl https://releases.rancher.com/install-docker/1.12.6.sh | sh
.
.
.
Client:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   78d1802
 Built:        Tue Jan 10 20:26:30 2017
 OS/Arch:      linux/amd64

Server:
 Version:      1.12.6
 API version:  1.24
 Go version:   go1.6.4
 Git commit:   78d1802
 Built:        Tue Jan 10 20:26:30 2017
 OS/Arch:      linux/amd64
.
.
.
Remember that you will have to log out and back in for this to take effect!

Rancher Serverのインストール

4インスタンスうちの1台に最新版のRancher Serverのコンテナをインストールします。
2017年6月現在Rancher Serverはv1.6.2となります。

コマンド
$ sudo docker run -d --restart=unless-stopped -p 8080:8080 rancher/server

対象のインスタンスの外部IPにポート8080でブラウザからアクセスします。

http://外部IPアドレス:8080/

screencapture-35-186-144-37-8080-env-1a5-apps-stacks-1497185148604.png

1.「Got it」をクリックします。

2.下部メニューの言語選択から「日本語」を選択します。

image.png

3.上部メニューの「管理者」-「アクセスコントロール」を選択します。

image.png

4.「click here」をクリックします。

rancher03.png

5.GitHubのログイン画面が表示されます。ログインします。
※GitHubのアカウントを持っていない場合は作成しましょう。

rancher04.png

6.「Register a new Application」ボタンをクリックします。
rancher05.png

7.赤枠箇所を入力し、「Register application」ボタンをクリックします。

rancher06.png

8.「Client ID」および「Client Secret」が払い出されます。

rancher07.png

9.GitHubから払い出された「クライアント ID」および「クライアント秘密キー」を入力して「保存」をクリックします。

image.png

10.「GitHubアカウントで認証」ボタンをクリックします。

image.png

11.Rancher側の画面が切り替わり「GitHubは有効です」と表示されます。

image.png

k8s環境テンプレートの作成

1.上部メニュー「環境管理」を選択します。

image.png

2.「環境追加」をクリックします。

image.png

3.「名前」に任意の名前を入力します。ここでは「k8s」とします。「環境のテンプレート」でkubernetesのアイコンを選択します。「作成」をクリックします。

image.png

4.上部メニューから「k8s」を選択します。

image.png

5.「ホストを追加」をクリックします。

image.png

Rancher Agentのインストール

1.赤枠のコマンドをコピーして、残り3台のまず1台にペーストし、「閉じる」をクリックします。

image.png

コマンド
$ sudo docker run --rm --privileged -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v1.2.2 http://RancherServer外部IP:8080/v1/scripts/053345DA35CBEE8144B6:1483142400000:2cehkwGGXulEgYZV0uD3NIRIRk

2.上部メニュー「インフラストラクチャー」から「ホスト」を選択します。

image.png

3.Rancher ServerとRancher Agentが連携し、約5分以内にk8s環境が構築されます。

image.png

4.残り2台のインスタンスにも1のコマンドをペーストして実行すると、2台のホストが追加されます。

image.png

以下の構成となります。

02.png

これでk8sの環境構築は完了となります。

k8s dashboard

1.上部メニュー「KUBERNETES」-「ダッシュボード」を選択します。

image.png

2.「kubernetes UI」をクリックします。

image.png

3.新規にブラウザのタブが開いて、kubernetes dashboardが利用できます。

screencapture-35-186-144-37-8080-r-projects-1a7-kubernetes-dashboard-9090-1497192117508.png

k8s Architecture of Rancher

Rancherのk8s環境では各ホストで以下のコンテナ構成が自動で構築されます。HOST1にあるkubernetes-1がAPI Serverと思われます。kubernetes-controller-manager-1、kubernetes-etcd-1、kubernetes-scheduler-1が主にMasterに必要となるコンポーネントコンテナになります。

HOST1

対象ホスト スタック名 コンテナ名
HOST1 kubernetes kubernetes-addon-starter-1
HOST1 kubernetes kubernetes-controller-manager-1
HOST1 kubernetes kubernetes-etcd-1
HOST1 kubernetes kubernetes-kubectld-1
HOST1 kubernetes kubernetes-1
HOST1 kubernetes kubernetes-kubernetes-kube-hostname-updater-1(sidekicks)
HOST1 kubernetes kubernetes-proxy-1
HOST1 kubernetes kubernetes-rancher-ingress-controller-1
HOST1 kubernetes kubernetes-rancher-kubernetes-agent-1
HOST1 kubernetes kubernetes-scheduler-1
対象ホスト スタック名 コンテナ名
HOST1 kube-system monitoring-grafana
HOST1 kube-system kubernetes-dashboard
HOST1 kube-system tiller-deploy
HOST1 kube-system heapster
HOST1 kube-system monitoring-influxdb
HOST1 kube-system kube-dns

HOST2

対象ホスト スタック名 コンテナ名
HOST2 kubernetes kubernetes-proxy-2
HOST2 kubernetes kubernetes-kubelet-2
HOST2 kubernetes kubernetes-etcd-2

HOST3

対象ホスト スタック名 コンテナ名
HOST3 kubernetes kubernetes-proxy-3
HOST3 kubernetes kubernetes-kubelet-3
HOST3 kubernetes kubernetes-etcd-3

ホストを追加するごとに構成としては、HOST2,HOST3と同じ構成が作成されると思われます。

引き続き、それぞれのRancherのk8sとしての各コンポーネントコンテナの意味合いやPodを作成するとどうなるかなど、検証しながら更新していきたいと思います。

12
15
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
12
15