2018年3月15日木曜日

kubernetes 上で Docker Hub にあるイメージからコンテナを立ち上げる

概要

前回 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 件のコメント:

コメントを投稿