Photon-ControllerでDockerを動かしてみる


参照ページ

基本的には、Photon Controlller Getting Started Guideに従って操作した手順記録です。参考にしていただければと思います。

設定

VMWare Playerで基盤環境作り

Photon Controlller Getting Started Guideでは、VMWare Fusion 8 or VMware Workstation 12を使用することが書いてあるが、すでにVMWare Playerをインストールして使っているのでこちらの環境を利用する。

これを試すためには、NATのネットワークを192.168.209.0/24のネットワークを使用する必要があります。
わかる人は、vmnetnat.confやvmnetdhcp.confを編集して設定するようにしてください。

ダウンロード

ESXiをダウンロードします。ユーザアカウントの登録とライセンス申請が必要です。簡単な操作です。
Download VMware vSphere Hypervisor (ESXi)のダウンロード

VMWare PlayerでESXiの起動

以下の環境を用意します。
- ディスク容量は、100G
- プロセッサ数は、4
- メモリは、12G
- ネットワークは、NAT
- ダウンロードしたESXiを選択
インストールが自動的に進んでいくので少し待ちます。
F11など押しながら進めてください。再起動したら、終了です。

IPアドレスは192.168.209.31にしてください。
SSHを有効にします。

ESXi Embedded Host Clientのインストール

ESXi Embedded Host Clientのダウンロード

ダウンロードしたファイルをインストールするは、ESXiに対して、SCP、SSHする必要があります。
私は、WinSCPを使って/tmp以下にファイルをアップし、WinSCPのコンソール機能を使って、インストールしました。

esxcli software vib install -v /tmp/esxui-signed.vib --force

https://192.168.209.31/ui/でアクセスできます。

Photon.exeのダウンロードと設定

Photon.exeをダウンロードします。
Photon.exeを適当なディレクトリに保存し、Windowsの環境設定で、ディレクトリをPATHに追加します。

Photon Controller Control Plane OVAのダウンロードと設定

Photon Controller Control Plane OVAをダウンロードします。2.5Gくらいです。
VMWare Playerで起動の設定をします。

設定を変更したいときはこちらを参考にしてください。


Basic Commands for VMware Photon and Docker

https://192.168.209.29/api/でアクセスできることを確認してください。

photonの設定

実行するコマンドは以下です。

C:>photon target set https://192.168.209.29:443
API target set to 'https://192.168.209.29:443'

C:>photon host create --username root --password <パスワード> --tag
CLOUD --address 192.168.209.31

1分近いくらい処理が行われます。

C:>photon host list
Using target 'https://192.168.209.29:443'
ID                                    State  IP              Tags
84031e89-dd9c-4c4d-a262-65a4b160d63d  READY  192.168.209.31  CLOUD

Total: 1

READYになっていれば成功のようです。

photonのプロジェクトの設定

C:\>photon tenant set demo
Using target 'https://192.168.209.29:443'
Tenant set to 'demo'

C:\>photon project set dev-project
Using target 'https://192.168.209.29:443'
Project set to 'dev-project'

c:\>photon project list
Using target 'https://192.168.209.29:443'
ID                                    Name         Limit             Usage
77fa7e6a-5b67-4909-b589-015d8761a7ee  dev-project  vm.memory 100 GB  vm.memory 0 GB
                                                   vm 5000 COUNT     vm 0 COUNT

Total projects: 1

c:\>photon tenant list
Using target 'https://192.168.209.29:443'
ID                                    Name
ea4af1ba-ba0a-4bba-b720-2f2c6ef6c8cf  demo

Total: 1

photonにクラスタイメージをアップロード

どれでも一つでよいようです。使いなれたものを利用すればよいと思います。
kubernetesswarmMesosをダウンロードします。

c:\>photon image create photon-kubernetes-vm-disk1.vmdk -n photon-kubernetes-vm.vmdk -i EAGER
Using target 'https://192.168.209.29:443'
Created image 'photon-kubernetes-vm.vmdk' ID: 17896ae7-3972-4ee9-8536-bcd723039534

c:\>photon image create photon-swarm-vm-disk1.vmdk -n photon-swarm-vm.vmdk -i EAGER
Using target 'https://192.168.209.29:443'
Created image 'photon-swarm-vm.vmdk' ID: 530eda74-a22f-46b0-b0c6-a29b8e56bdde

c:\>photon image create photon-mesos-vm-disk1.vmdk -n photon-mesos-vm.vmdk -i EAGER
Using target 'https://192.168.209.29:443'
Created image 'photon-mesos-vm.vmdk' ID: 8ed791ec-83f4-4044-a645-945cf7a3a8f9
c:\>photon image list
Using target 'https://192.168.209.29:443'
ID                                    Name                       State  Size(Byte)   Replication_type
530eda74-a22f-46b0-b0c6-a29b8e56bdde  photon-swarm-vm.vmdk       READY  85899345968  EAGER
8ed791ec-83f4-4044-a645-945cf7a3a8f9  photon-mesos-vm.vmdk       READY  85899345968  EAGER
17896ae7-3972-4ee9-8536-bcd723039534  photon-kubernetes-vm.vmdk  READY  85899345968  EAGER

Total: 3

kubernetesクラスタの設定

c:\>photon cluster create -n Kube2 -k KUBERNETES --dns 192.168.209.2 --gateway 192.168.209.2 --netmask 255.255.255.0 --master-ip 192.168.209.35 --cont
ainer-network 10.20.0.0/16 --etcd1 192.168.209.36 -s 2
Using target 'https://192.168.209.29:443'
etcd server 2 static IP address (leave blank for none):

Creating cluster: Kube2 (KUBERNETES)
  Slave count: 2

Are you sure [y/n]? y
Cluster created: ID = 0569bf82-8f93-4c09-8ba4-146bc238c3e8
Note: the cluster has been created with minimal resources. You can use the cluster now.
A background task is running to gradually expand the cluster to its target capacity.
You can run 'cluster show 0569bf82-8f93-4c09-8ba4-146bc238c3e8' to see the state of the cluster.

c:\>photon cluster list
Using target 'https://192.168.209.29:443'
ID                                    Name   Type        State     Slave Count
0569bf82-8f93-4c09-8ba4-146bc238c3e8  Kube2  KUBERNETES  CREATING  2

Total: 1
CREATING: 1

1分くらいしてからもう一度やると、
c:\>photon cluster list
Using target 'https://192.168.209.29:443'
ID                                    Name   Type        State  Slave Count
0569bf82-8f93-4c09-8ba4-146bc238c3e8  Kube2  KUBERNETES  READY  2

Total: 1
READY: 1

5分くらいで終わります。
https://192.168.209.31/ui/で見ていると、どのようにVMが作成され設定されているかわかります。
コマンドでしているように、master-ip、etcd-ipは、指定していますが、スレーブのサーバは指定していません。これはDHCPで自動的にIPが設定されるので、DHCPが稼働しておく必要があります。

etcd2を指定すると、etcサーバが2台起動します。

状況確認

このようになっています。

slaveのIPは、192.168.209.129と、192.168.209.130になっています。DHCPでIPを取得しています。
それぞれ、ログインしてみてください。面白いですよ。
dockerでサービスが動いています。マイクロサービスですね。

■master

root@master-b94bdd6a-4bfc-462b-b9f7-4469080992cf [ ~ ]# docker ps
CONTAINER ID        IMAGE                                       COMMAND                  CREATED             STATUS              PORTS               NAMES
eb9fa8f88277        gcr.io/google_containers/hyperkube:v1.0.1   "/hyperkube scheduler"   7 minutes ago       Up 7 minutes                            k8s_scheduler.2744e742_k8s-master-master-b94bdd6a-4bfc-462b-b9f7-4469080992cf_default_e4b00cc799dcf1b4b38d135ec92c50d5_7af2c055
c5cfd41f4788        gcr.io/google_containers/hyperkube:v1.0.1   "/hyperkube apiserver"   7 minutes ago       Up 7 minutes                            k8s_apiserver.22190309_k8s-master-master-b94bdd6a-4bfc-462b-b9f7-4469080992cf_default_e4b00cc799dcf1b4b38d135ec92c50d5_c6f08db7
7b8cc1eb3749        gcr.io/google_containers/hyperkube:v1.0.1   "/hyperkube controlle"   7 minutes ago       Up 7 minutes                            k8s_controller-manager.1598ee5c_k8s-master-master-b94bdd6a-4bfc-462b-b9f7-4469080992cf_default_e4b00cc799dcf1b4b38d135ec92c50d5_1e563e1a
8156c51cf848        gcr.io/google_containers/pause:0.8.0        "/pause"                 7 minutes ago       Up 7 minutes                            k8s_POD.e4cc795_k8s-master-master-b94bdd6a-4bfc-462b-b9f7-4469080992cf_default_e4b00cc799dcf1b4b38d135ec92c50d5_6f19d4e8
92be7e681954        gcr.io/google_containers/hyperkube:v1.0.1   "/hyperkube proxy --m"   7 minutes ago       Up 7 minutes                            furious_turing
ab87a67d27c6        gcr.io/google_containers/hyperkube:v1.0.1   "/hyperkube kubelet -"   7 minutes ago       Up 7 minutes                            elated_bell

■etcd

root@etcd-525a0b9a-f857-4732-a856-aaaf7eb127cf [ ~ ]# docker ps
CONTAINER ID        IMAGE                        COMMAND                  CREATED             STATUS              PORTS                                                                NAMES
7655cc2c9bb1        quay.io/coreos/etcd:v2.0.8   "/etcd -name etcd0 -a"   8 minutes ago       Up 8 minutes        0.0.0.0:2379-2380->2379-2380/tcp, 7001/tcp, 0.0.0.0:4001->4001/tcp   etcd

■slave

root@slave-62b68844-ab24-48b0-bf99-cbae83a5bbd0 [ ~ ]# docker ps -a
CONTAINER ID        IMAGE                                       COMMAND                  CREATED             STATUS              PORTS               NAMES
2b1d37b02f8c        gcr.io/google_containers/hyperkube:v1.0.1   "/hyperkube proxy --m"   7 minutes ago       Up 7 minutes                            hopeful_euclid
3f107cd9bd09        gcr.io/google_containers/hyperkube:v1.0.1   "/hyperkube kubelet -"   7 minutes ago       Up 7 minutes                            backstabbing_curie

■slave

root@slave-1cfb19e7-5de1-4463-854b-b8ed911faaab [ ~ ]# docker ps -a
CONTAINER ID        IMAGE                                       COMMAND                  CREATED             STATUS              PORTS               NAMES
3569eb49a584        gcr.io/google_containers/hyperkube:v1.0.1   "/hyperkube proxy --m"   6 minutes ago       Up 6 minutes                            suspicious_almeida
3030e2bcd4f3        gcr.io/google_containers/hyperkube:v1.0.1   "/hyperkube kubelet -"   6 minutes ago       Up 6 minutes                            stoic_visvesvaraya

※flannelのネットワークを持っているのは、masterとslaveです。

kubectl.exe のダウンロード

kubernetesからkubernetes.tar.gzをダウンロードし、解凍すると、
kubernetes\platforms\windows\amd64に保存されていますので、photon.exeと同様のディレクトリにコピーします。
PATHが設定されているディレクトリなので、kubectlが使用可能なると思います。

起動確認

以下からダウンロードします。
Apache Tomcat Replication Controller yml
Apache Tomcat Service yml

このファイルを使って起動の確認をします。

kubectl -s 192.168.209.35:8080 create -f photon-Controller-Tomcat-rc.yml
kubectl -s 192.168.209.35:8080 create -f photon-Controller-Tomcat-service.yml
kubectl -s 192.168.209.35:8080 get pods

swarm、mesos

また試したいと思っていますが

今日は、ここまでです。