More Related Content
Similar to Kubernetes超入門 with java (20)
Kubernetes超入門 with java
- 2. 1
5月に「Oracle Code Japan Tour in Hiroshima」の「Cloud Native Java
EE」セッションでKubernetesを使用したライブコーディングデモを行って頂いた
が・・・
Kubernetesに関してあまり知識が無かったため、その場で何が行われたかあ
まり理解できていなかった参加者の方が多かった。(私も含め)
そこで、Kubernetesに関する基本的な概要の説明と基本操作のハンズオンを
通してKubernetesへ超入門したいと思います。
開催の経緯
- 18. 17
前提
– virtualBoxがインストールされていること
minikubeのセットアップ
– miniKubeのダウンロード
Windows 用の exe (minikube-windows-amd64.exe)
https://github.com/kubernetes/minikube/releases
– minikubeの設定
minikube-windows-amd64.exeをminikube.exe とリネームしてパスの通ったフォ
ルダに置く
デフォルトの vm driver を VirtualBox にするため、以下のコマンド実行
– kubectl がインストールされていないのでエラーメッセージが表示される
– 表示されたURL から kubectl.exe をダウンロードしてパスの通ったフォルダに配置
– 再度vm driver を VirtualBox にするためコマンドを実行する
Kubernetesクラスタの作成
– 以下のコマンドでクラスタを作成する
– 以下のコマンドでサーバーバージョンを取得出来たら成功
Windows上にkubernetes環境を構築する
$ minikube config set vm-driver virtualbox
$ minikube start
$ minikube version
- 20. 19
今回のハンズオンでは、 Dockerレジストリに登録済みのSpring Bootで作成
したREST APIのDockerイメージを利用し、Kubernetesのコンテナオーケスト
レーションを体験する
Dockerレジストリ
– docker.io/uls555/getting-started-k8s-with-java
デプロイまでの流れ
ハンズオンの流れ
Docker Hub
ローカルマシーン
Docker Image
InternetREST API
minikube
push
pull
①
②
③
- 25. 24
Podの確認
Podの自動起動の確認
Replica Setで指定したPod数を維持するため、Podを削除しても自動的に
Podが起動する
– Podの削除
Replica Setの削除
Replica Setを使用したデプロイ[2/2]
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
rest-api-rs-6xpqf 1/1 Running 0 1m
rest-api-rs-m1x43 1/1 Running 0 1m
rest-api-rs-pbsmk 1/1 Running 0 1m
$ kubectl delete pod rest-api-rs-m1x43
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
rest-api-rs-6xpqf 1/1 Running 0 4m
rest-api-rs-m1x43 1/1 Terminating 0 4m
rest-api-rs-n92wz 0/1 ContainerCreating 0 5s
rest-api-rs-pbsmk 1/1 Running 0 4m
削除されたPod
新規作成されたPod
$ kubectl delete replicaset rest-api-rs
- 27. 26
Podの確認
Deploymentの変更
– Replicasの数を4に変更
Deploymentを使用したデプロイ[2/3]
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
rest-api-rs-6xpqf 1/1 Running 1 9h
rest-api-rs-n92wz 1/1 Running 1 9h
rest-api-rs-pbsmk 1/1 Running 1 9h
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: rest-api-dep
spec:
replicas: 4
template:
metadata:
labels:
app: my-rest-api
spec:
containers:
- image: docker.io/uls555/getting-started-k8s-with-java:v1
imagePullPolicy: Always
name: rest-api
replicaの数を4に変更
- 30. 29
ブラウザーからServiceへの接続を確認
– NodeのIPを確認
– ブラウザーからアクセス
Deploymentの変更と更新
– コンテナイメージをv2に変更
Serviceの作成[2/3]
$ minikube ip
192.168.99.100
http://192.168.99.100:31372
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: rest-api-dep
spec:
replicas: 4
template:
metadata:
labels:
app: my-rest-api
spec:
containers:
- image: docker.io/uls555/getting-started-k8s-with-java:v2
imagePullPolicy: Always
name: rest-api
v2に変更
- 33. 32
– Deploymentの確認
Serviceの変更と確認
– ServiceとPodの紐付けを行なうselectorの変更を行なう
– 更新と確認
Serviceを利用したBlue/Green Deployment[2/2]
$ kubectl get deployment
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
rest-api-dep 4 4 4 4 3h
rest-api-dep-v3 4 4 4 4 23m
kind: Service
apiVersion: v1
metadata:
name: rest-api-service
spec:
type: NodePort
selector:
app: my-rest-api-v3
ports:
- port: 8080
targetPort: 8080
PodのLavelに「app:my-rest-api-v3」が
設定されているPodを紐付ける
$ kubectl apply -f service.yaml
service "rest-api-service" configured
$ curl 192.168.99.100:31372
{"message":"Hello World!","version":"v3"}
- 36. 35
参考・引用元
WEBサイト
– Using Kubernetes on Google Container Engine
https://www.slideshare.net/enakai/using-kubernetes-on-google-container-engine
– Dockerも始めました2 ~Kubernetes編~
https://oss.sios.com/yorozu-blog/yorozu-20151216
– Dockerコンテナを管理するならKubernetes
http://tech.uzabase.com/entry/2015/02/13/180743
– minikube で Windows 上に Kubernetes 環境を構築する
http://takaya030.hatenablog.com/entry/2017/04/30/191727
– kubernetesで変わる開発スタイル 〜マイクロサービスじゃなくてもいいじゃない〜
http://sssslide.com/speakerdeck.com/sgeengineer/kubernetesdebian-warukai-fa-sutairu-
maikurosabisuziyanakutemoiiziyanai
– Kubernetesで使われる用語
http://qiita.com/t-yotsu/items/f565b2d788a3b98fe762
書籍
– プログラマのためのGoogle Cloud Platform入門
– WEB+DB-PRESS Vol.99
Editor's Notes
- 2
- 3
- 5
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34