やりたいこと
ここらへんでdcos周りについてもろもろ(spark, hdfs, chronos等)に触っていこうと思いました。
hdfsに触ろうとしたのですが、いきなり5ノードくらいをdcosに要求されたので、ひよりました。。
そこで、k8s(1ノードから始められる)をインストールすることで、dcos-cliのキャッチアップとさせていただきました。
mesosphereのコマンドラインツールdcos-cliを利用して、kubernetesインストールしてみました。
参考: https://docs.mesosphere.com/services/kubernetes/
1. dcos-cliをインストールする
すなおにチュートリアル通りに進めました。
プロキシ等ない環境であれば、ものの1,2分で作業は完了します。
$mkdir dcos
$cd dcos
$curl -O https://downloads.mesosphere.io/dcos-cli/install.sh
$bash install.sh <install_dir> <hosturl>
masterノードを設定して、node一覧を出力してみました。
$ 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のドキュメントを参考にして、ホストとポートを設定します。
$ 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情報をgithubから取得してね、とドキュメントにあるので素直に実行してみました。
実行コマンドは以下のとおりです。
$ dcos config prepend package.sources https://github.com/mesosphere/multiverse/archive/version-1.x.zip
$ dcos package update --validate
わらわらといろんなサービス情報がjson形式で落ちてきました。
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を選択します。
$ 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
実行結果は以下のとおりです。
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」にアクセスすると以下のように表示されます。

うまく言ったように見えます。
次回(があれば)このk8s上でなんらかのアプリケーションを動かしてみたいと思います。
あとはhdfsも利用してみたいです。
今日はここまでとなります。dcos-cliお手軽でいいですね。