dcos-cliを利用してKubernetesをインストールしてみる。dcosキャッチアップ

## やりたいこと

ここらへんでdcos周りについてもろもろ（spark, hdfs, chronos等）に触っていこうと思いました。

hdfsに触ろうとしたのですが、いきなり５ノードくらいをdcosに要求されたので、ひよりました。。
そこで、k8s（１ノードから始められる）をインストールすることで、dcos-cliのキャッチアップとさせていただきました。

[mesosphere](https://mesosphere.com/)のコマンドラインツール[dcos-cli](https://github.com/mesosphere/dcos-cli)を利用して、kubernetesインストールしてみました。

参考: https://docs.mesosphere.com/services/kubernetes/

---

### 1. dcos-cliをインストールする

すなおに[チュートリアル](https://docs.mesosphere.com/install/cli/)通りに進めました。
プロキシ等ない環境であれば、ものの１，２分で作業は完了します。

```bash
$mkdir dcos
$cd dcos
$curl -O https://downloads.mesosphere.io/dcos-cli/install.sh
$bash install.sh <install_dir> <hosturl>
```

masterノードを設定して、node一覧を出力してみました。

```bash
$ cd <install_dir>
$ export PATH=$PATH:`pwd`/bin

$ dcos config set core.mesos_master_url http://*.*.*.*:5050
[core.mesos_master_url]: set to 'http://*.*.*.*:5050'

$dcos node
                    HOSTNAME                          IP                          ID
ip-*-*-*-*.ap-northeast-1.compute.internal  *.*.*.*  *******-****-****-****-************-***
```

使えるようになってます。

dcos-cli自体を同梱した軽量のDockerコンテナとかあってもいいかな、と少し思いました。
（毎回pipを利用者に打ってもらうのも面倒なため）

---

### 2. marathonのアドレスも設定してあげる

[dcos-cliのドキュメント](https://github.com/mesosphere/dcos-cli#using-the-cli-without-dcos)を参考にして、ホストとポートを設定します。

```bash
$ dcos config set marathon.url http://*.*.*.*:8080
[marathon.url]: set to 'http://*.*.*.*:8080'
```

---

### 3. DCOSのサービス群のrepository情報をdcos-cliで読み込む

dcos-cliを利用して、apt-getの感覚でk8sをインストール可能だが、その前に[DCOSのサービス群のrepository情報](https://github.com/mesosphere/multiverse)をgithubから取得してね、と[ドキュメント](https://docs.mesosphere.com/services/kubernetes/)にあるので素直に実行してみました。

実行コマンドは以下のとおりです。

```bash
$ dcos config prepend package.sources https://github.com/mesosphere/multiverse/archive/version-1.x.zip
$ dcos package update --validate
```

わらわらといろんなサービス情報がjson形式で落ちてきました。

```bash
Updating source [https://github.com/mesosphere/multiverse/archive/version-1.x.zip]
Validating package definitions...
- /H/helloworld/0/command.json
- /K/kubernetes/2/command.json
- /R/riak/0/command.json
- /S/swarm/0/command.json
- /C/crate/0/config.json
- /D/datadog/0/config.json
- /E/elasticsearch/0/config.json
- /E/elasticsearch/1/config.json
- /E/etcd/0/config.json
- /H/helloworld/0/config.json
- ...
- ...
- /H/hdfs/0/package.json
- /H/hdfs/1/package.json
- /H/hdfs/2/package.json
- /H/hdfs/3/package.json
- /K/kafka/0/package.json
- /K/kafka/1/package.json
- /M/marathon/0/package.json
- /M/marathon/1/package.json
- /M/marathon/2/package.json
- /M/marathon/3/package.json
- /M/marathon/4/package.json
- /M/marathon/5/package.json
- /M/marathon/6/package.json
- /S/spark/0/package.json
- /S/spark/1/package.json
- /S/spark/2/package.json
- /S/spark/3/package.json
- /S/spark/4/package.json
``` 

hdfs, kafka, hadoop, marathon, cassandra, zeppelinとかも入っているようです。なんでもありですね。。

---

### 4. kubernetesをdcospackageコマンドでinstallする

コマンドを実行するだけです。ただ、注意事項として、まだバギーだよ、と出てきます。無視してyesを選択します。

```bash
$ dcopackage install kubernetes

In order for Kubernetes to start successfully all resources must be available in the cluster including ports, CPU shares and RAM.

We recommend a minimum of 1 node with 1 CPU share and 1 GB of RAM available for use by the Kubernetes service.

Note that the service is alpha and there may be bugs, including possible data loss, incomplete features, incorrect documentation or other discrepancies.

Continue installing? [yes/no] yes
```

実行結果は以下のとおりです。

```bash
Installing Marathon app for package [kubernetes] version [v1.0.6-v0.6.7-alpha]
Installing CLI subcommand for package [kubernetes] version [v1.0.6-v0.6.7-alpha]
New commands available: dcos kubectl, dcos kubernetes
Kubernetes DCOS Service has been successfully installed!

	Documentation: https://github.com/mesosphere/kubernetes-mesos
	Issues: https://github.com/mesosphere/kubernetes-mesos/issues
	Web UI: <hostname>/service/kubernetes/
```

---

### 5. marathon上で確認してみる

マラソンのアドレスの「http://マラソンホスト:8080」にアクセスすると以下のように表示されます。

<img width="907" alt="スクリーンショット 2015-11-18 18.15.05.png" src="https://qiita-image-store.s3.amazonaws.com/0/49547/d60066e6-cc44-406d-2cf4-e2665885defb.png">

うまく言ったように見えます。

次回（があれば）このk8s上でなんらかのアプリケーションを動かしてみたいと思います。
あとはhdfsも利用してみたいです。

今日はここまでとなります。dcos-cliお手軽でいいですね。