Connect to Azure DC/OS nodes via SSH

Azure DC/OS は、SSHトンネルを作って、GUIとかAPIとかで操作するのが基本ぽい。

docs.microsoft.com

SSHで中に入るのは非推奨って書いてる。

SSH セッションは、クラスター管理システムとの間で作成することができます。 ただし、これは推奨されません。 管理システムで直接作業すると、構成を意図せず変更してしまうおそれがあります。

確かにそうだなー。でも、勉強中の今は、つなぎたいときもある。「どんな感じで動いてるのか知りたいなー?」ってときとか。なので、忘れないうちにメモしとく。

すなば

今回の記事用にsandboxっていう名前でDC/OSを立ち上げといた。

$ MASTER_FQDN=sandboxmgmt.japanwest.cloudapp.azure.com

DC/OS CLI from local

トンネルつないだ状態でローカルからDC/OS CLIを叩くと、叩ける。便利。

$ sudo ssh -L 80:localhost:80 -f -N azureuser@${MASTER_FQDN} -p 2200

$ dcos auth login
Login successful!

$ dcos marathon app list
ID          MEM  CPUS  TASKS  HEALTH  DEPLOYMENT  CONTAINER  CMD
/first-app  128   1     0/1    ---      scale       DOCKER   None

"dcos node ssh" from local

「ちょっと中がどんな感じなのか入って見てみたいなー」と思ったので、ここを読みながら、ふむふむ。

docs.mesosphere.com

こうか

$ dcos node ssh --master-proxy --leader

つながらない。。。(´;ω;`)ブワッ

Connect to Master

直接つないでみるとつながる。

$ sudo ssh azureuser@${MASTER_FQDN} -p 2200
Welcome to Ubuntu 16.04 LTS (GNU/Linux 4.4.0-28-generic x86_64)

 * Documentation:  https://help.ubuntu.com/

  Get cloud support with Ubuntu Advantage Cloud Guest:
    http://www.ubuntu.com/business/services/cloud

78 packages can be updated.
0 updates are security updates.


*** System restart required ***
Last login: Thu Dec 15 23:11:17 2016 from 
azureuser@dcos-master:~$

Connect to Agent

マスターノードにはつながったから、次はエージェントノードにつなぎたいな。マスターからエージェントに入ればいいのかな。じゃ、一回マスターから出て、こんな感じで繋げばいけるかな。

$ sudo ssh -A azureuser@${MASTER_FQDN} -p 2200

azureuser@dcos-master:~$ ssh azureuser@10.32.0.5

azureuser@dcos-agent-private:~$

あぁ、つながった。(∩´∀`)∩ワーイ

Install DC/OS CLI into Master Node

ところで Azure DC/OSの場合、ローカルからだと使える機能と使えない機能があるみたい?だから、マスターノードにDC/OS CLI入れてみよっかな。

docs.mesosphere.com

azureuser@dcos-master:~$ curl -O https://downloads.dcos.io/binaries/cli/linux/x86-64/dcos-1.8/dcos
azureuser@dcos-master:~$ chmod +x dcos
azureuser@dcos-master:~$ ./dcos config set core.dcos_url http://localhost
[core.dcos_url]: set to 'http://localhost'
azureuser@dcos-master:~$ ./dcos auth login
Login successful!

で、AgentにつなぐときはMesos IDをとってきて

f:id:bufferings:20161216083003p:plain

こうかな

azureuser@dcos-master:~$ ./dcos node ssh --user=azureuser --mesos-id=18a6d7ad-d8a9-4832-a2ed-51ca8e0c3946-S0

azureuser@dcos-agent-public:~$

つながった。dockerコマンドでも叩いてみるか。

azureuser@dcos-agent-public:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
3f85c267f8a4        nginx               "nginx -g 'daemon off"   32 minutes ago      Up 32 minutes                           mesos-18a6d7ad-d8a9-4832-a2ed-51ca8e0c3946-S0.169cb095-d115-4519-a51a-a01313e2fb2a

見れた。良かった。

てことで

ノードに入ることができて良かった。んで、CLIをマスターノードに入れとくのもついでにやってみたけど、悪くないかもなぁ。