Kubernetes(k8s)チュートリアルを試してみる-アプリの更新

Pod単位で順次アップデートすることでアプリケーションを止めずにアップデートできる。
アップデートはバージョン管理されているので任意のタイミングで戻すことができる。



https://kubernetes.io/ja/docs/tutorials/kubernetes-basics/update

  1. クラスタの作成
  2. アプリのデプロイ
  3. 仕組みについて知る
  4. アプリを公開する
  5. アプリのスケール
  6. アプリの更新




サンプルをバージョン2に更新する



基本的に更新対象のイメージをデプロイすれば良い。

kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2

Pods確認。少し時間をおいて複数回。

MacBook-Pro:xxxx xxxx$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
kubernetes-bootcamp-5c69669756-zg8z6 1/1 Running 0 3h 10.1.0.16 docker-for-desktop
kubernetes-bootcamp-5c69669756-zlv7l 1/1 Running 0 48m 10.1.0.17 docker-for-desktop
MacBook-Pro:powerpecognition shinichiyamada$ kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2
deployment.extensions/kubernetes-bootcamp image updated
MacBook-Pro:xxxx xxxx$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
kubernetes-bootcamp-5c69669756-zg8z6 1/1 Running 0 3h 10.1.0.16 docker-for-desktop
kubernetes-bootcamp-5c69669756-zlv7l 1/1 Running 0 49m 10.1.0.17 docker-for-desktop
kubernetes-bootcamp-7799cbcb86-ml8rg 0/1 ContainerCreating 0 2s docker-for-desktop
MacBook-Pro:xxxx xxxx$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
kubernetes-bootcamp-5c69669756-zg8z6 1/1 Running 0 3h 10.1.0.16 docker-for-desktop
kubernetes-bootcamp-5c69669756-zlv7l 1/1 Terminating 0 49m 10.1.0.17 docker-for-desktop
kubernetes-bootcamp-7799cbcb86-lgt87 0/1 ContainerCreating 0 1s docker-for-desktop
kubernetes-bootcamp-7799cbcb86-ml8rg 1/1 Running 0 8s 10.1.0.20 docker-for-desktop
MacBook-Pro:xxxx xxxx$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
kubernetes-bootcamp-7799cbcb86-lgt87 1/1 Running 0 3m 10.1.0.21 docker-for-desktop
kubernetes-bootcamp-7799cbcb86-ml8rg 1/1 Running 0 3m 10.1.0.20 docker-for-desktop

Pod1(ver1), Pod2(ver1) が稼働中にUpdateをおこなったとき
Pod3(ver2)作成
Pod3稼働、Pod2停止
Pod4(ver2)作成
Pod4稼働、Pod1停止
といった流れになっていることがわかる。

http://localhost:32088/ へアクセス
Hello Kubernetes bootcamp! | Running on: kubernetes-bootcamp-7799cbcb86-ml8rg | v=2
末尾がv2になっている。

kubectl rollout status コマンドで状態を確認できる。
MacBook-Pro:xxxx xxxx$ kubectl rollout status deployments/kubernetes-bootcamp
deployment "kubernetes-bootcamp" successfully rolled out



ロールバック



v10にアップデート
kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=gcr.io/google-samples/kubernetes-bootcamp:v10

MacBook-Pro:xxxx xxxx$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
kubernetes-bootcamp-5f76cd7b94-rfb7b 0/1 ErrImagePull 0 3m 10.1.0.22 docker-for-desktop
kubernetes-bootcamp-7799cbcb86-lgt87 1/1 Running 0 21m 10.1.0.21 docker-for-desktop
kubernetes-bootcamp-7799cbcb86-ml8rg 1/1 Running 0 21m 10.1.0.20 docker-for-desktop

1つのPodでエラーが発生している。なぜならv10のイメージがないため。
エラーが発生したら更新が止まるらしく致命傷は避けれる。

ロールバックする
kubectl rollout undo deployments/kubernetes-bootcamp
MacBook-Pro:xxxx xxxx$ kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE
kubernetes-bootcamp-7799cbcb86-lgt87 1/1 Running 0 21m 10.1.0.21 docker-for-desktop
kubernetes-bootcamp-7799cbcb86-ml8rg 1/1 Running 0 21m 10.1.0.20 docker-for-desktop

以上でチュートリアルは完了

自前のアプリを公開するといった部分がないので後ほどまとめる予定。
レジストリを用意しないといけないので若干面倒。
雑多なまとめでいいなら以下に記述している。

https://trueman-developer.blogspot.com/2019/02/kubernetesk8s.html

2019年4月9日火曜日