LoginSignup
59
73

More than 5 years have passed since last update.

Docker for WindowsでKubernetesを試してみる

Last updated at Posted at 2018-08-12

はじめに

Docker for Macでのkubernetesの記事は多々あるのに、windowsは見当たらなかったので記載しておきます。
Windows版は、まだEdgeでの提供となっています。
stableバージョンでkubernetes使えます!
参考:https://blog.docker.com/2018/07/kubernetes-is-now-available-in-docker-desktop-stable-channel/

いつもは、そのままGKE環境で実行していましたが、今後勉強会等でもっと簡単に試せないかなーと、試しに動かしてみました。

インストール

インストール環境

  • Windows 10 ( CPU:Core i7、メモリ:16GB)
  • Hyper-V 有効化済み

ダウンロード

下記ページの download.docker.com のリンクをクリックしてダウンロードします。
https://docs.docker.com/docker-for-windows/install

If you haven’t already downloaded the installer (Docker for Windows Installer.exe), you can get it from download.docker.com. It typically downloads to your Downloads folder, or you can run it from the recent downloads bar at the bottom of your web browser.

インストーラーの実行

windowsコンテナは使う予定は、無いので、下のチェックボックスはオフのまま進みます。
image.png

「OK」ボタンを押すと、何やらインストール開始されます。
image.png

1分程度で、インストール完了します。
image.png

「Docker for Windows」をクリックすると起動します。
image.png

kubernetesの実行

kubernetesの有効化

常駐しているdockerアイコンを→クリックして、「Settings」をクリックします。
image.png

「Enable Kubernetes」にチェックを入れて、Swarmではなく、kubernetesを選択します。そして「Apply」をクリックします。
image.png

「数分時間かかるよ!インターネットに接続できている環境で実行してね!」と出ますが、問題ないので「Install」をクリックします。
image.png

2,3分で下記画面が表示されて、インストール完了となります。
image.png

Docker for Windowのkubernetesを使う準備

下記説明があります。
https://docs.docker.com/docker-for-windows/#kubernetes

The Kubernetes client command, kubectl, is included and configured to connect to the local Kubernetes server. If you have kubectl already installed and pointing to some other environment, such as minikube or a GKE cluster, be sure to change context so that kubectl is pointing to docker-for-desktop:

kubectl config get-contexts
kubectl config use-context docker-for-desktop

私の環境だと、GKEクラスタに接続するための設定が有効となっていますので、上記コマンドを実行してdocker for windowsのcontextに切り替えます。

アプリケーション実行

アプリケーションのビルド

どうせなら、自分で作ったアプリケーショを動かしたいので、適当なサンプルアプリケーション使います。

> git clone -b openjdk11 https://github.com/h-r-k-matsumoto/spring-boot-sample.git
> cd spring-boot-sample
> mvn -Dgcp.project.name=sample-project  compile jib:dockerBuild

※registryにpushはしないので、 jib:dockerBuild とします。

正常に終了すれば、 docker images でビルド結果を確認できます。

>docker images |findstr spring-boot
gcr.io/sample-project/spring-boot-sample   0.1.0-SNAPSHOT      4cc738f189da        46 seconds ago      997MB
>

アプリケーションのデプロイ

kubernetes/020_deployments.yml のimages部分を下記のように変更します。

変更前:image: gcr.io/{change-me-gcp-project}/spring-boot-sample:0.1.0-SNAPSHOT
変更後:image: gcr.io/sample-project/spring-boot-sample:0.1.0-SNAPSHOT

docker imageもローカルのimage使うので、reigstryから不要に取得しないようにします。

変更前:imagePullPolicy: Always
変更後:imagePullPolicy: IfNotPresent

applyします。 

> kubectl apply -f kubernetes
configmap "spring-boot-config" created
deployment.apps "spring-boot-sample" created
service "spring-boot-sample" created
>

アプリケーション動作確認

NodePortでのアクセス。

下記URLにアクセスすることで正常に動作しているのを確認しました。
http://localhost:30000/sample/hello

おまけ

Ingressも動かしてみる

ingressもできるのかな?1つしかサービス作ってないですけど試しにやってみます。

を見る限りできそうですね。

Ingress Controllerの作成

kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/provider/cloud-generic.yaml

Ingress作成

040_ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: samplelb
spec:
  backend:
    serviceName: spring-boot-sample
    servicePort: 30000
  rules:
  - http:
      paths:
      - path: /*
        backend:
          serviceName: spring-boot-sample
          servicePort: 30000

applyします。

> kubectl apply -f kubernetes\040_ingress.yaml
ingress.extensions "samplelb" created
>

動作確認

> kubectl get ingress
NAME       HOSTS     ADDRESS     PORTS     AGE
samplelb   *         localhost   80        18m

>

http://localhost:30000/sample/hello
下記URLで問題なく動作しました。

kubernetesも一通り動かす事ができそうです。ロール周りは、あんまり細かい事はできなさそうですが、動かす分には十分かもしれません。

変更履歴

2018/08/12 21:22

Docker for Windows stableバージョンでkubernetes利用可能となっていました!
全体的に記事もstableバージョンでのインストール方法等に変更しています。問題なく、アプリケーション起動、ingressの動作確認まで行えました。
rubytomato@github さん情報ありがとうございます:grinning:

59
73
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
59
73