kubernetesを内蔵したDocker for Macがリリースされたらしいので、試してみた
kubectlコマンドでkubernetes-dashboardのデプロイ、docker stackコマンドでmetabaseをデプロイしてみた
環境
macOS 10.13.2 docker 17.12.0-ce(edge)
準備
Docker for Macでkubernetesを起動させる
dockerのedgeバージョンインストール
https://store.docker.com/editions/community/docker-ce-desktop-mac のページから、edgeバージョンをインストール
既存のDocker.appをedgeバージョンのDocker.appで上書きすると以前のimage、containerが削除されるので注意

赤く囲った部分”Get Docker CE for Mac(Edge)“をクリック
kubernetesを有効にする
dockerアプリからpreferencesを開き、kubernetesを有効にする

Enable Kubernetesにチェックを入れてapplyをクリック(起動にしばらくかかる)
起動確認 context切り替え
Docker for Macで起動しているkubernetesの一覧から、NAMEにdocker-for-desktopが存在しているのを確認して、
kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* minikube minikube minikube
docker-for-desktop docker-for-desktop-cluster docker-for-desktop 使用するクラスタをdocker-for-desktopに切り替える
kubectl config use-context docker-for-desktop
Switched to context "docker-for-desktop".master(Docker for Macが起動しているPC)が1台起動している
kubectl get nodes
NAME STATUS ROLES AGE VERSION
docker-for-desktop Ready master 10m v1.8.2起動した段階で動作しているpodを確認してみる
kubectl get po --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
docker po/compose-75f8bb4779-l4gxg 1/1 Running 0 6m
kube-system po/etcd-docker-for-desktop 1/1 Running 0 6m
kube-system po/kube-apiserver-docker-for-desktop 1/1 Running 0 6m
kube-system po/kube-controller-manager-docker-for-desktop 1/1 Running 0 7m
kube-system po/kube-dns-545bc4bfd4-qslcx 3/3 Running 0 7m
kube-system po/kube-proxy-lc6tl 1/1 Running 0 7m
kube-system po/kube-scheduler-docker-for-desktop 1/1 Running 0 6mデプロイしてみる
kubernetesへのデプロイは、kubernetesのコンフィグ(ymlファイル)でも、docker-compose.ymlでもできる 両方試してみた
kubectlコマンドでkubernetes-dashboardのデプロイ
実行
kubernetes clusterの管理ができるdashboardをデプロイしてみる 設定ファイルは以下のものを使用した https://github.com/kubernetes/dashboard/blob/master/src/deploy/recommended/kubernetes-dashboard.yaml
kubectl apply -f kubernetes-dashboard.yaml --record
serviceaccount "kubernetes-dashboard" created
role "kubernetes-dashboard-minimal" created
rolebinding "kubernetes-dashboard-minimal" created
deployment "kubernetes-dashboard" created
service "kubernetes-dashboard" created起動確認
kubernetes-dashboardがrunningになっているのを確認
kubectl get deploy,po,svc -n kube-system
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/kubernetes-dashboard 1 1 1 1 2m
NAME READY STATUS RESTARTS AGE
po/kubernetes-dashboard-7798c48646-4964x 1/1 Running 0 2m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
svc/kubernetes-dashboard ClusterIP 10.96.53.32 <none> 443/TCP 2m画面にアクセスしてみる
kubectl proxy
Starting to serve on 127.0.0.1:8001として http://localhost:8001/api/v1/namespaces/kube-system/services/https:kubernetes-dashboard:/proxy/ にアクセスすると表示される

削除
kubectl delete -f kubernetes-dashboard.yamldocker stackコマンドでmetabaseのデプロイ
dockerにkubernetesが内蔵しているためか、 docker swarmを構築する要領で、kubernetesへコンテナをデプロイできる docker-compose.ymlをkubernetesで使い回せるのはありがたい
具体的には docker stackコマンドで、kubernetesのdeploymentやserviceを構築できる この辺の仕組みはkubernetesのCustomResourceDefinitionsというのを使用しているらしい(よくわかってない)
実際、crdを確認してみると、dockerっぽいのが存在している
kubectl get crd
NAME AGE
stacks.compose.docker.com 15mデプロイしたらstacksというところで管理されるらしい
kubectl get stacks
No resources found.実行
OSSのBIツールmetabaseを立ち上げてみる
version: '3'
services:
metabase:
image: metabase/metabase:latest
ports:
- 3000:3000
volumes:
- ./tmp:/tmp
environment:
MB_DB_FILE: /tmp/metabase.dbdocker stack deploy metabase --compose-file docker-compose.yml
Stack metabase was created
Waiting for the stack to be stable and running...
- Service metabase has one container running
Stack metabase is stable and running起動確認
kubectl get stacks
NAME AGE
metabase 1mもしくは
docker stack ls
NAME SERVICES
metabase 1runningになっているのを確認
kubectl get deploy,svc,po
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/metabase 1 1 1 1 2mkubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
metabase ClusterIP None <none> 55555/TCP 7m
metabase-published LoadBalancer 10.98.218.223 localhost 3000:31878/TCP 7mhttp://localhost:3000 にアクセスすると、setup画面が表示される

削除
docker stack rm metabase
Removing stack: metabase
docker stack ls
NAME SERVICES参考
- Docker for Mac with Kubernetes
Docker for Mac edge版のインストールから起動までかいてある - First impressions: Docker for Mac with Kubernetes
起動方法に加えてもう少し詳しい使い方までかいてある