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.yaml
docker 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.db
docker 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 1
runningになっているのを確認
kubectl get deploy,svc,po
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
deploy/metabase 1 1 1 1 2m
kubectl 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 7m
http://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
起動方法に加えてもう少し詳しい使い方までかいてある