Running Kubernetes Example on CoreOS, Part 2
https://coreos.com/blog/running-kubernetes-example-on-CoreOS-part-2/
が出ましたので、お試ししてみました。
以下は、Vagrant で CoreOS の Kubernetes Cluster を VirtualBox 上に構築し、GuestBook example を実行する手順です。
コードは、Gist に置きましたので、参照してください。
Running Kubernetes Example on CoreOS, Part 2
https://gist.github.com/YungSang/6177b69f1754f0590dbe
Step Zero: クラスタの構築
$ git clone https://gist.github.com/6177b69f1754f0590dbe.git
$ vagrant up
これで、etcd discovery 用に一つ、Kubernetes master 用に一つ、Kubernetes minion が2つ起動されます。
SSH tunnel の設定
ローカルマシンから kubecfg
を使う場合は、以下の設定をします。
master
にログインしてから kubecfg
を使っても同じです。
$ curl -OL http://storage.googleapis.com/kubernetes/darwin/kubecfg
$ chmod +x kubecfg
$ mv kubecfg /usr/local/bin
$ vagrant ssh-config master > ssh.config
$ ssh -f -nNT -L 8080:127.0.0.1:8080 -F ssh.config master
$ kubecfg list pods
Name Image(s) Host Labels
---------- ---------- ---------- ----------
コンテナ間のルーティングの設定
このままでは、VM をまたがったコンテナ間の通信が出来ていないので、静的にルーティングを追加することにしました。
$ vagrant ssh minion-1
core@minion-1 ~ $ sudo route add -net 10.244.2.0/24 enp0s8
core@minion-1 ~ $ sudo route add -net 10.244.2.0/24 gw 10.244.2.1 enp0s8
$ vagrant ssh minion-2
core@minion-2 ~ $ sudo route add -net 10.244.1.0/24 enp0s8
core@minion-2 ~ $ sudo route add -net 10.244.1.0/24 gw 10.244.1.1 enp0s8
Step One: redis master の起動
$ kubecfg -c redis-master.json create pods
Step Two: redis master service の設定
$ kubecfg -c redis-master-service.json create services
Step Three: redis slave の起動
$ kubecfg -c redis-slave-controller.json create replicationControllers
Step Four: redis slave service の設定
$ kubecfg -c redis-slave-service.json create services
Step Five: frontend UI の起動
$ kubecfg -c frontend-controller.json create replicationControllers
$ open http://192.168.12.11:8000
$ open http://192.168.12.12:8000
これでどちらからアクセスしても Guestbook が動くようになりました。