2019-06-22に更新

minikubeを使ってみよう【その2】

レプリカの数を増やしてみよう

レプリカとは

アプリケーションコンテナのクローンです。
レプリカを2に設定すると、同じアプリケーションコンテナが2つ起動します。
以下のような用途があります。

  • コンテナの起動に失敗した場合
    • 残りのコンテナでサービスを継続する
  • アプリケーションのアップデート中にサービスを中断したくない場合
    • 更新途中のコンテナ以外でサービスを継続する

レプリカの数を増やす

運用で言う所のの数ですね。

# hello-minikubeというコンテナを4つに増やす
$ kubectl scale deployments/hello-minikube --replicas=4

# 結果を確認する
$ kubectl get deployments
NAME             DESIRED   CURRENT   UP-TO-DATE   AVAILABLE   AGE
hello-minikube   4         4         4            4           23h

# podの中身を確認する
$ kubectl get pods -o wide
NAME                              READY     STATUS    RESTARTS   AGE       IP           NODE
hello-minikube-78c9fc5f89-68jtm   1/1       Running   0          14m       172.17.0.7   minikube
hello-minikube-78c9fc5f89-6gsm8   1/1       Running   0          14m       172.17.0.8   minikube
hello-minikube-78c9fc5f89-nwgvw   1/1       Running   1          23h       172.17.0.4   minikube
hello-minikube-78c9fc5f89-x7m9g   1/1       Running   1          23h       172.17.0.2   minikube

アプリケーションをアップデートする

hello-minikubeというdockerイメージを使っていたpod内のアプリケーションをjocatalin/kubernetes-bootcampというイメージに置き換えてみます。

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

# podの状況を取得する
$ kubectl get pods -o wide
NAME                              READY     STATUS              RESTARTS   AGE       IP           NODE
hello-minikube-5dbc4c9877-c57t4   0/1       ContainerCreating   0          8s        <none>       minikube
hello-minikube-5dbc4c9877-v78sv   0/1       ContainerCreating   0          8s        <none>       minikube
hello-minikube-78c9fc5f89-68jtm   1/1       Running             0          21m       172.17.0.7   minikube
hello-minikube-78c9fc5f89-nwgvw   1/1       Running             1          23h       172.17.0.4   minikube
hello-minikube-78c9fc5f89-x7m9g   1/1       Running             1          23h       172.17.0.2   minikube

更新作業中はいくつかコンテナを残した状態で順番に更新されていきます。

アプリケーションのロールバック

rollout undoコマンドで元に戻します。

$ kubectl rollout undo deployments/hello-minikube
deployment.apps "hello-minikube" 

# podの状況を確認する
$ kubectl get pods
NAME                              READY     STATUS              RESTARTS   AGE
hello-minikube-5dbc4c9877-7zsqq   1/1       Terminating         0          6m
hello-minikube-5dbc4c9877-c57t4   1/1       Running             0          6m
hello-minikube-5dbc4c9877-jspcm   1/1       Terminating         0          6m
hello-minikube-5dbc4c9877-v78sv   1/1       Terminating         0          6m
hello-minikube-78c9fc5f89-5rfzt   0/1       ContainerCreating   0          2s
hello-minikube-78c9fc5f89-cf2lk   1/1       Running             0          4s
hello-minikube-78c9fc5f89-jrprp   1/1       Running             0          4s
hello-minikube-78c9fc5f89-k7pq4   0/1       ContainerCreating   0          1s

並行してロールバックが行われているのがわかります。

参考リンク

[第4回]Kubernetesの公式チュートリアルをやって基本を押さえる -アプリのアップデート

ツイッターでシェア
みんなに共有、忘れないようにメモ

view_list 【kubernetes】minikubeを使ってみよう【k8s】
第1回 minikubeを使ってみよう【その1】
第2回 minikubeを使ってみよう【その2】

ckoshien

個人開発5年目。普段はフロントエンドエンジニア。 ReactJS/NextJS/NodeJS/ReactNative/Java

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント