概要
前回 minikube を使ってローカル上に kubernetes 環境を構築してみました
今回はその上に Docker Hub で既に公開済みのイメージを使ってコンテナを立ち上げてみたいと思います
環境
- macOS 10.13.2
- minikube 0.25.0
- kubectl 1.9.2
- VertualBox 5.1.30r118389
コンテナの起動
kubectl run request-dumper --image=kakakikikeke/request-dumper
run コマンドを使います
ポイントは --image
で DockerHub にあるイメージを指定するところ
リポジトリ名 (index.docker.io) を省略しているのは minikube ノードのデフォルトのレジストリが DockerHub になっているためです
$ minikube ssh
_ _
_ _ ( ) ( )
___ ___ (_) ___ (_)| |/') _ _ | |_ __
/' _ ` _ `\| |/' _ `\| || , < ( ) ( )| '_`\ /'__`\
| ( ) ( ) || || ( ) || || |\`\ | (_) || |_) )( ___/
(_) (_) (_)(_)(_) (_)(_)(_) (_)`\___/'(_,__/'`\____)
$ docker info | grep Registry
Registry: https://index.docker.io/v1/
あとはコンテナが起動するまで待ちます
- kubectl get pods
外部からアクセスできるようにする
Running になったらコンテナにアクセスできるようにしましょう
expose コマンドを使います
kubectl expose deployment/request-dumper --type="NodePort" --port 4567
--port=4567
はコンテナで LISTEN しているポートを指定します
今回のアプリは Sinatra アプリで 4567 で LISTEN しているので、それを指定します
サービスの一覧を確認してノード側にバインドされているポートを確認します
- kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 4h
request-dumper NodePort 10.96.100.5 <none> 4567:30604/TCP 50s
今回は 30604 でバインドしていました
ちなみに以下のコマンドを使うことでポート部分だけを取得することができます
kubectl get services/request-dumper -o go-template='{{(index .spec.ports 0).nodePort}}'
この結果を変数に入れて使えば同じコマンドでアクセスし続けることも可能です
動作確認
curl でも叩いてみます
- curl $(minikube ip):30604
これでアクセスできると思います
試しに service を削除してみるとアクセスできなくなると思います
- kubectl delete service request-dumper
最後に
kubernetes 上に DockerHub で公開されているイメージを引っ張ってきてコンテナを起動してみました
特に考える点もなくそのまま素直に使うことができました
現在は minikube 1 台構成なので別のノードを追加して複数ホストでコンテナのデプロイも試してみたいなと思います
と思ったのですが minikube では現在マルチノード機能はないようです
https://github.com/kubernetes/minikube/issues/94
執筆次点では絶賛開発中だったのでそのうち対応されるかもしれません
0 件のコメント:
コメントを投稿