kubenetes導入顛末記 その2

その1でとりあえず動作するところまで確認できたので、ここからはチュートリアルに沿ってやってみる。

https://kubernetes.io/docs/tutorials/hello-minikube/

nodeアプリケーション作成

server.jsというhello worldを作成。

node server.jsで動作確認して問題ないことを確認。

Docker Containerイメージ作成

Dockerfileを作成。

以下のコマンドで環境変数を設定。そしてビルド。

eval $(minikube docker-env)
docker build -t hello-node:v1 .


Deployment作成

以下のコマンドでPodも作成されて動いているらしい。

でも、ローカルIPからしか接続できないらしい。試しにminikube sshでログインしてみたけども8080ポートで待ち受けているプロセスはなかった。。nodeコマンドは動作中だったので他のポートで待っているみたいだけど。どこで変換しているのか。。

kubectl run hello-node --image=hello-node:v1 --port=8080 --image-pull-policy=Never

Service作成

外からもアクセスできるようにServiceを作成する。

kubectl expose deployment hello-node --type=LoadBalancer

以下のコマンドで得られるURLにアクセスすると無事に表示される。どのポートで待っているのかの謎はこれで解ける。でも、ポートが8080ではないんだな。なんでだろ。

minikube service --url hello-node

アクセスログは以下で参照できた。pod-nameも補完してくれて良い感じ。

kubectl logs <POD-NAME>

アプリの更新

Docker Containerイメージを作成してDeploymentを更新。

docker build -t hello-node:v2 .
kubectl set image deployment/hello-node hello-node=hello-node:v2

これだけで新しいイメージが使われるようになった。Dashboardでも確認。

heapster addonの有効化

性能監視用のaddonらしい。以下で有効にするとdashboardのoverviewでCPUとメモリのグラフが表示されて、ほかのところにもそういった情報が追加される。

minikube addons enable heapster

Clean up

作成したものを削除する。

kubectl delete service hello-node
kubectl delete deployment hello-node
docker rmi hello-node:v1 hello-node:v2 -f
minikube stop
eval $(minikube docker-env -u)