Monday, September 8, 2014

kubernetesとcoreos (船頭を連れてくる)

前回、vagrant x virtualboxの上でcoreos x 2を連結することに成功したので、今回はcore-01のほうにkubernetesをインストールしてみる。(本来ならkubernetesにcore-02もデプロイ先として認識させる必要があると思う。)

参考にしたのはcoreos本家サイトのkubernetsインストール手順part1

インストール

基本はサイトに書いてある通りでいいんだけど、微妙にタイポ?してるっぽいから改めて書き出す。

core@core-01 ~ $ sudo mkdir -p /opt/kubernetes
core@core-01 ~ $ sudo mkdir -p /opt/bin
core@core-01 ~ $ sudo chown -R core: /opt/kubernetes
core@core-01 ~ $ sudo chown -R core: /opt/bin
core@core-01 ~ $ cd /opt/kuberbetes

そんでもってkubernetsのバイナリを取得、/opt/binの下に置く。

core@core-01 /opt/kubernates $ wget https://github.com/kelseyhightower/kubernetes-coreos/releases/download/v0.0.1/kubernetes-coreos.tar.gz
...(snip)...
core@core-01 /opt/kubernates $ cd ../  
core@core-01 /opt $ tar -C bin/ -xvf kubernates/kubernetes-coreos.tar.gz
apiserver
controller-manager
kubecfg
kubelet
proxy

続いてunitの設定ファイルをgithubから引っ張ってくる。unitsディレクトリの中から必要なserviceファイルだけ/etc/systemd/system/ディレクトリ下にコピー。今回はdocker.serviceはコピーしない。動かなくなる。

core@core-01 /opt $ cd kubernates/
kubernetes-coreos.tar.gz
core@core-01 /opt/kubernates $ git clone https://github.com/kelseyhightower/kubernetes-coreos.git
...(snip)...
core@core-01 /opt/kubernates $ sudo cp kubernetes-coreos/units/apiserver.service /etc/systemd/system/
core@core-01 /opt/kubernates $ sudo cp kubernetes-coreos/units/controller-manager.service /etc/systemd/system/
core@core-01 /opt/kubernates $ sudo cp kubernetes-coreos/units/kubelet.service /etc/systemd/system/
core@core-01 /opt/kubernates $ sudo cp kubernetes-coreos/units/proxy.service /etc/systemd/system/

更にcontroller-manager.serviceがそのままで動かないので、手を加える。

変更箇所のみ抜粋。

ExecStart=/opt/bin/controller-manager \
-etcd_servers http://127.0.0.1:4001 \
-master 127.0.0.1:8080 \
--logtostderr=true

etcd_serversの設定はとりあえず動けばいいと割り切り中。もしかしたらこれhttp://172.17.8.1:4001(ホストマシン)にすべきかもしれない。

ここで一応、etcdサービス、dockerサービスの状態を確認。

core@core-01 /opt/kubernates $ sudo systemctl status etcd
 etcd.service - etcd
   Loaded: loaded (/usr/lib64/systemd/system/etcd.service; disabled)
  Drop-In: /run/systemd/system/etcd.service.d
           └─20-cloudinit.conf
   Active: active (running) since Mon 2014-09-08 11:05:07 UTC; 15min ago
 Main PID: 554 (etcd)
 ...(snip)...
 core@core-01 /opt/kubernates $ sudo systemctl status docker
 docker.service - Docker Application Container Engine
   Loaded: loaded (/usr/lib64/systemd/system/docker.service; disabled)
   Active: inactive (dead)
     Docs: http://docs.docker.io

よし、動いているぞ。先ほどコピーしたkubernetesのサービスを順次起動していく。

core@core-01 /opt/kubernates $ sudo systemctl daemon-reload
core@core-01 /opt/kubernates $ sudo systemctl start apiserver
core@core-01 /opt/kubernates $ sudo systemctl start controller-manager
core@core-01 /opt/kubernates $ sudo systemctl start kubelet
core@core-01 /opt/kubernates $ sudo systemctl start controller-proxy

各サービスのステータスを確認。

core@core-01 /opt/kubernates $ sudo systemctl status apiserver
core@core-01 /opt/kubernates $ sudo systemctl status controller-manager
core@core-01 /opt/kubernates $ sudo systemctl status kubelet
core@core-01 /opt/kubernates $ sudo systemctl status controller-proxy

全部「Active: active (running)」にはなった。

それではさっそくredisのサービスを立ち上げちゃうんだからね!

core@core-01 /opt/kubernates $ mkdir kubernetes-coreos/pods
core@core-01 /opt/kubernates $ vim kubernetes-coreos/pods/redis.json
# redis.jsonをコピペ
core@core-01 /opt/kubernates $ kubecfg -h http://127.0.0.1:8080 -c kubernetes-coreos/pods/redis.json create /pods

Name                Image(s)            Host                Labels
----------          ----------          ----------          ----------
redis               dockerfile/redis    /                   name=redis

redis.jsonは公式サイトの例をまるまるコピー。dockerへのデプロイが終わるまで、ちょっと時間がかかる。なんか動いたっぽい…。

起動したコンテナのIPアドレスを確認。

core@core-01 /opt/kubernates $ ip a show docker0
4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff
    inet 10.1.42.1/16 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::5484:7aff:fefe:9799/64 scope link 
       valid_lft forever preferred_lft forever

redis-cliで10.1.42.1にアクセスできれば動いてるってことになりそうだな。

core@core-01 /opt/kubernates $ docker run -t -i dockerfile/redis /usr/local/bin/redis-cli -h 10.1.42.1
10.1.42.1:6379> set yukaary craft
OK
10.1.42.1:6379> get yukaary
"craft"
10.1.42.1:6379> quit

やったぜ。最後に立ち上げたpodsっていうのか?を消して今回はここでおしまい。

core@core-01 /opt/kubernates $ kubecfg -h http://127.0.0.1:8080 delete /pods/redisStatus
----------
success

まとめ

  • 次回はcore-02も認識させてマルチホストにしたいな。
    • 公式サイトのブログのpart2がそれにあたると期待したい。
  • jourtnalctlみるとetcdが警告とかエラーとかが結構あるんだが、大丈夫なのか…?
  • この環境にfigも入れたい。入るのかなあ。

No comments:

Post a Comment