Update 2014-10-02
: Kubernetes on CoreOS with Fleet and flannel on IDCFクラウド - Part7: flannel版GuestBookUpdate 2014-09-27
: Kubernetes on CoreOS with Fleet and flannel on IDCFクラウド - Part6: Rudder renamed to flannelUpdate 2014-09-22
: Kubernetes on CoreOS with Fleet and Rudder on IDCFクラウド - Part5: FleetとRudderで再作成するUpdate 2014-09-05
: Kubernetes in CoreOS with Rudder on IDCFクラウド - Part4: GuestBook exampleUpdate 2014-09-04
: Kubernetes in CoreOS with Rudder on IDCFクラウド - Part3: RudderでSDN風なことUpdate 2014-08-31
: Kubernetes in CoreOS with Rudder on IDCFクラウド - Part2: クラスタ再考
Pamanaxに続いてDockerコンテナ管理ツールのKubernetesをIDCFクラウド上のCoreOSにインストールしてみます。今回は最初なので直接CoreOSにSSH接続してマニュアルでインストールします。
CoreOSの世界ではcloud-configで初期設定をしたあとに直接変更を加えるのはお行儀が良くないので、インストールの確認ができたら、cloud-configでKubernetesをCoreOSクラスタにインストールしたいと思います。
CoreOSのインストール
CoreOSをISOからインストールして、コンソールからパスワード変更をします。
$ sudo passwd core |
パスワードでSSH接続できるようになりました。CoreOSインスタンスにSSH接続します。
$ ssh core@10.1.1.120 |
CoreOSインスタンスにアサインされたipアドレスを確認します。
$ ip a |
cloud-config.ymlにIPアドレスを指定して、あとは最低限の設定のみ行います。stop-update-engine.service
のunitも明示的に書かないとKubernetesのインストール時におこられます。
#cloud-config |
/dev/sdaにCoreOSをインストールします。
$ sudo coreos-install -d /dev/sda -C stable -c ./cloud-config.yml |
rebootします。
$ sudo reboot |
公開鍵でSSH接続できることを確認します。
$ eval `ssh-agent` |
Kubernetesのインストール
kubernetes-coreosを読みながらインストールをしていきます。まずはCoreOSにログインして、Kubernetesバイナリのインストールします。
$ sudo mkdir -p /opt/bin |
Kubernetes のunitsをgit clone
してコピーします。
$ git clone https://github.com/kelseyhightower/kubernetes-coreos.git |
Kubernetes サービスを開始します。
$ sudo systemctl start apiserver |
作業マシンにkubecfg クライアントのインストール
リモートの作業マシンで作業するbyobuでシェルマルチプレクサを開いておきます。
$ byobu |
作業マシンからCoreOSにインストールしたapiserverへのSSHトンネルを作成します。
$ eval `ssh-agent` |
作業マシンからKubernetesへの接続を確認します。
$ curl -s http://localhost:8080 |
作業マシンへ、kubecfg クライアントをインストールします。
$ sudo wget https://storage.googleapis.com/kubernetes/kubecfg -O /usr/local/bin/kubecfg |
kubecfgコマンドの起動確認をします。
$ /usr/local/bin/kubecfg list /pods |
Redis Pod の作成
Podとは、コンテナをグループにした概念です。Podファイル用のディレクトリを作成します。
$ mkdir ~/kubernetes-coreos/pods |
{ |
Redis Podの作成をします。2分ちょっと待ちます。
$ /opt/bin/kubecfg -h http://127.0.0.1:8080 -c ~/kubernetes-coreos/pods/redis.json create /pods |
Redis Pod の確認
docker ps
でコンテナの起動を確認します。
$ docker ps |
docker0インターフェース(172.17.42.1)へ、redis-cliのdisposableコンテナから接続します。
$ docker run -t -i --rm dockerfile/redis /usr/local/bin/redis-cli -h 172.17.42.1 |
リモートの作業マシンからもリストしてみます。
$ /usr/local/bin/kubecfg list /pods |
Redis Pod の削除
確認がおわったら、Podをdeleteします。
$ /opt/bin/kubecfg -h http://127.0.0.1:8080 delete /pods/redis |
listしてpodsにエントリがないことを確認します。
$ /opt/bin/kubecfg -h http://127.0.0.1:8080 list /pods |