nekop's blog

OpenShift / JBoss / WildFly / Infinispanの中の人 http://twitter.com/nekop

minishiftで作られたVMの中身を見てみる

OpenShift 全部俺 Advent Calendar 2017

minishiftのようなツールは魔法のようにセットアップされてうれしい反面、何かあったときにVMの中身がどうなっているのかわからないとやっかいなことがあります。とりあえず解剖します。

VMはふつうにvirshで見えますし、minishift statusというコマンドでも確認できます。

$ sudo virsh list
 Id    Name                           State
----------------------------------------------------
 7     minishift                      running

$ minishift status
Minishift:  Running
Profile:    minishift
OpenShift:  Running (openshift v3.7.0+7ed6862)
DiskUsage:  5% of 37G

minishift sshVMの中に入ることができ、dockerというユーザ名のシェルとなります。恐らくsudoとdockerコマンドがそのまま叩ける設定だろうなと予想して実行すると、案の定実行できます。

$ minishift ssh
Last login: Thu Nov 30 03:01:36 2017 from 192.168.42.1
[docker@minishift ~]$ docker ps
CONTAINER ID        IMAGE                                                                                                                COMMAND                  CREATED             STATUS              PORTS               NAMES
3803a0f6fca1        docker.io/openshift/origin-haproxy-router@sha256:9fe2b3b8916b89fbabbd0c798655da6c808156b3c1f473bb8341bf64c6c560a5    "/usr/bin/openshift-r"   40 minutes ago      Up 40 minutes                           k8s_router_router-1-bsnsw_default_3d2ee8f1-d5a0-11e7-8594-525400413df4_0
b9f2f6e2ae9b        docker.io/openshift/origin-docker-registry@sha256:9230bd859ce5a7fad13dc676efae72b2c86a9a0177cbd26db9b047be28620143   "/bin/sh -c '/usr/bin"   40 minutes ago      Up 40 minutes                           k8s_registry_docker-registry-1-mk854_default_3b772e27-d5a0-11e7-8594-525400413df4_0
239e4eb40535        openshift/origin-pod:v3.7.0                                                                                          "/usr/bin/pod"           41 minutes ago      Up 41 minutes                           k8s_POD_router-1-bsnsw_default_3d2ee8f1-d5a0-11e7-8594-525400413df4_0
8353bfb440fa        openshift/origin-pod:v3.7.0                                                                                          "/usr/bin/pod"           41 minutes ago      Up 41 minutes                           k8s_POD_docker-registry-1-mk854_default_3b772e27-d5a0-11e7-8594-525400413df4_0
7322dc424f4b        openshift/origin:v3.7.0                                                                                              "/usr/bin/openshift s"   41 minutes ago      Up 9 minutes                            origin
[docker@minishift ~]$ docker images
REPOSITORY                                   TAG                 IMAGE ID            CREATED             SIZE
docker.io/openshift/origin-haproxy-router    v3.7.0              b62f18316ed4        15 hours ago        1.121 GB
docker.io/openshift/origin-deployer          v3.7.0              abeb2913cd05        15 hours ago        1.099 GB
docker.io/openshift/origin                   v3.7.0              7ddd42ca061a        15 hours ago        1.099 GB
docker.io/openshift/origin-docker-registry   v3.7.0              359f3779b58f        15 hours ago        500.7 MB
docker.io/openshift/origin-pod               v3.7.0              73b7557fbb3a        15 hours ago        218.4 MB
[docker@minishift ~]$ sudo ls -la /root
total 36
dr-xr-x---.  2 root root 4096 Nov 30 02:59 .
dr-xr-xr-x. 16 root root 4096 Nov 30 02:27 ..
-rw-------.  1 root root   39 Nov 30 02:59 .bash_history
-rw-r--r--.  1 root root   18 Dec 28  2013 .bash_logout
-rw-r--r--.  1 root root  176 Dec 28  2013 .bash_profile
-rw-r--r--.  1 root root  176 Dec 28  2013 .bashrc
-rw-r--r--.  1 root root  100 Dec 28  2013 .cshrc
-rw-------.  1 root root 1024 Nov 30 02:27 .rnd
-rw-r--r--.  1 root root  129 Dec 28  2013 .tcshrc

docker psの出力からはOpenShift本体であるoriginコンテナ、docker-reigstryとrouter podが確認できます。

openshiftコマンドやocコマンドはminishiftのVM内には存在していないみたいです。docker exec originでOpenShiftのコンテナ上で実行するとOpenShift管理者システムユーザsystem:adminで実行されることが確認できます。minishiftのデータは/var/lib/minishift/配下にあるようです。あとはセットアップ中に利用されるであろうコマンドがいくつか/usr/local/binにあります。

[docker@minishift ~]$ which openshift oc
/usr/bin/which: no openshift in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/docker/.local/bin:/home/docker/bin)
/usr/bin/which: no oc in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/docker/.local/bin:/home/docker/bin)
[docker@minishift ~]$ sudo find / -type f -name openshift
[docker@minishift ~]$ sudo find / -type f -name oc
[docker@minishift ~]$ docker exec origin oc whoami
system:admin
[docker@minishift ~]$ docker exec origin oc get all
NAME                                REVISION   DESIRED   CURRENT   TRIGGERED BY
deploymentconfigs/docker-registry   1          1         1         config
deploymentconfigs/router            1          1         1         config
NAME                               READY     STATUS      RESTARTS   AGE
po/docker-registry-1-mk854         1/1       Running     0          45m
po/persistent-volume-setup-s5kcv   0/1       Completed   0          46m
po/router-1-bsnsw                  1/1       Running     0          45m


NAME                   DESIRED   CURRENT   READY     AGE
rc/docker-registry-1   1         1         1         46m
rc/router-1            1         1         1         46m

NAME                  CLUSTER-IP      EXTERNAL-IP   PORT(S)                   AGE
svc/docker-registry   172.30.1.1      <none>        5000/TCP                  46m
svc/kubernetes        172.30.0.1      <none>        443/TCP,53/UDP,53/TCP     46m
svc/router            172.30.254.47   <none>        80/TCP,443/TCP,1936/TCP   46m
NAME                           DESIRED   SUCCESSFUL   AGE
jobs/persistent-volume-setup   1         1            46m

[docker@minishift ~]$ sudo ls -la /var/lib/minishift/
total 24
drwxr-xr-x.   6 root root 4096 Nov 30 02:27 .
drwxr-xr-x.  28 root root 4096 Nov 30 02:27 ..
drwxr-xr-x.   3 root root 4096 Nov 30 03:01 hostdata
drwxr-xr-x.   4 root root 4096 Nov 30 02:28 openshift.local.config
drwxr-xr-x. 103 root root 4096 Nov 30 02:30 openshift.local.pv
drwxr-xr-x.   4 root root 4096 Nov 30 02:29 openshift.local.volumes
[docker@minishift ~]$ ls -l /usr/local/bin/
total 16
-rwxr-xr-x. 1 root root 2707 Oct  9 08:05 minishift-cert-gen
-rwxr-xr-x. 1 root root 5285 Oct  9 08:05 minishift-handle-user-data
-rwxr-xr-x. 1 root root  657 Oct  9 08:05 minishift-set-ipaddress

minishift配下はそれぞれ以下のものが格納されています。

  • hostdata
    • etcdのデータ
  • openshift.local.config
    • OpenShiftの設定ファイル群
  • openshift.local.pv
    • hostPath指定で作成されたPV
  • openshift.local.volumes
    • podにマウントされるVolume類

openshift.local.pvの下にregistryというのがあるのですが、対応するPVもdocker-registry用のPVCもないようです。作りかけか、何か変わったのかな。

これで大体の構成は把握できたのでおしまい。