涅槃を目指す in はてな

人生に迷う様を書きます

Rancher の Vagrant Quick Start が起動しなくなったけど直した話

どうした

以前紹介した、Rancher の Vagrant Quick Start が凄く楽なので、今日も気分良くk8s触ろうとと思って vagrant up したら、

こんなログがずーーーーーっと出続けて上がらないんですわ。

    server-01: 6dbf555297f9: Pull complete
    server-01: Digest: sha256:09e1bef888ef4e1119eb6aa9a95413c7b0fecc7512700b8546502933a2eaa22b
    server-01: Status: Downloaded newer image for rancher/rancher:latest
    server-01: + sleep 2
    server-01: + docker inspect rancher/rancher:latest
    server-01: + docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /opt/rancher:/var/lib/rancher rancher/rancher:latest
    server-01: 273a7a2cfca60eb322727ea3ab66073e1267a86484cd496f5cf59c84d3deee39
    server-01: + true
    server-01: + docker run --rm --net=host appropriate/curl -sLk https://127.0.0.1/ping
    server-01: + sleep 5
    server-01: + true
    server-01: + docker run --rm --net=host appropriate/curl -sLk https://127.0.0.1/ping
    server-01: + sleep 5
    server-01: + true
    server-01: + docker run --rm --net=host appropriate/curl -sLk https://127.0.0.1/ping
    server-01: + sleep 5
    server-01: + true
    server-01: + docker run --rm --net=host appropriate/curl -sLk https://127.0.0.1/ping
    server-01: + sleep 5
    server-01: + true

どうしたオイ。上がらなくなってもうた

ログ見る限りは、 server-01 内で自分にcurlして失敗してるように見える。

調べよう

VMはどうなってるんだ

$ vagrant status
Config: {"admin_password"=>"admin", "version"=>"latest", "ROS_version"=>"1.5.1", "k8s_version"=>"", "server"=>{"cpus"=>1, "memory"=>2048}, "node"=>{"count"=>4, "cpus"=>2, "memory"=>4096}, "ip"=>{"master"=>"172.22.101.100", "server"=>"172.22.101.101", "node"=>"172.22.101.111"}, "linked_clones"=>true, "net"=>{"private_nic_type"=>"82545EM", "network_type"=>"private_network"}}

Current machine states:

server-01                 running (virtualbox)
node-01                   not created (virtualbox)
node-02                   not created (virtualbox)
node-03                   not created (virtualbox)
node-04                   not created (virtualbox)

多分 server-01 が出来上がってから node ができる仕様なんだろうな。

server-01 にログインしてみる。

$ vagrant ssh server-01
$ uname -a
Linux server-01 4.14.85-rancher #1 SMP Sat Dec 1 12:40:08 UTC 2018 x86_64 GNU/Linux
$ docker -v
Docker version 18.06.1-ce, build e68fc7a
$ docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS                          PORTS               NAMES
273a7a2cfca6        rancher/rancher:latest   "entrypoint.sh"     About an hour ago   Restarting (1) 36 seconds

rancher コンテナが動いてると見せかけて、なんか再起動しまくってないか君?

コンテナのログ見てみると

$ docker logs -f 273a7a2cfca6
ERROR: Rancher must be ran with the --privileged flag when running outside of Kubernetes

ほうほう。 privileged フラグがないよダメだよと言ってるな。

前は動いてたのにな…何もしてないのに壊れた…

とりあえず調べてみると、 configure_rancher_server.sh ていうのでコンテナを起動してるみたいで、以下の部分で失敗してるっぽい

確かに privileged フラグはついてない。

for image in $curlimage $jqimage "rancher/rancher:${rancher_version}"; do
  until docker inspect $image > /dev/null 2>&1; do
    docker pull $image
    sleep 2
  done
done

docker run -d --restart=unless-stopped -p 80:80 -p 443:443 -v /opt/rancher:/var/lib/rancher rancher/rancher:${rancher_version}

# wait until rancher server is ready
while true; do
  docker run --rm --net=host $curlimage -sLk https://127.0.0.1/ping && break
  sleep 5
done

とりあえず privileged フラグをつけるように修正すると無事に上がった。

docker run -d --restart=unless-stopped -p 80:80 -p 443:443 --privileged -v /opt/rancher:/var/lib/rancher rancher/rancher:${rancher_version}

てか privileged フラグて何?

privileged フラグをつけると、コンテナが特権モードで起動し、ホストマシンのデバイスにアクセスが可能になったりします。

docs.docker.jp

Rancherは最近v2.5.0が出たので、そこから privileged フラグが必須になった?

issue をあげた

とりあえず中学生並みの英語で issue を上げてみた。

github.com

とりあえずissueを上げたので様子を見ようと思います。

お読み頂き有難うございました。