KubernetesでDeploymentの色々なアップデート方法

★★★ お知らせ ★★★

◆ 6月のPS Liveは決済サービスStripeのデモ!◆
決済サービスのStripeでサブスクリプションの支払い機能を作ってみた
Stripeの機能の一部を切り出して、簡単なサブスクリプションを作るとどうなるのかを、デモをまじえてご紹介します。
⇒ 詳細はこちらから

◆【セミナー開催】 可視化ツールGrafana~初めてのダッシュボード作成◆
デモンストレーション付き!
本セミナーでは、売上データを用いて、4種類のパネル作成方法をお見せします。
⇒ お申込みはこちらから

◆ エンジニア業務環境アンケート結果 ◆
エンジニアが自分の働き方にどういったことで満足していて、不満を感じているのか、働きたい会社像として何を求めているのか、業務環境調査を実施しました。ぜひご覧ください。
⇒ アンケート結果はこちらから

こんにちは、サイオステクノロジー技術部 武井です。Kubernetesのメインの特徴の一つにRollingUpdate(無停止更新)がありますが、その方法にも色々あるみたいなので、調べて試してみました。

RollingUpdate

Podの数を指定した個数ずつ増減させてアップデートしていく方法です。spec.strategy.typeにRollingUpdateと指定して、さらにspec.strategy.rollingUpdateにmaxUnavailableとmasSurgeを指定します。以下のような感じです。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: deployment-example
spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxUnavailable: 1
      maxSurge: 0
  replicas: 3
  selector:
    matchLabels:
      app: deployment-example
  template:
    metadata:
      labels:
        app: deployment-example
    spec:
      containers:
      - name: webapp
        image: ntakeiacr.azurecr.io/web:1.0
        ports:
        - containerPort: 80
      imagePullSecrets:
        - name: docker-reg-credential

 

maxUnavailableとmaxSurgeはRollingUpdateするときのPodを増減させる数を制御します。maxSurgeはreplicasで指定した数よりも増やしていい最大Pod数、maxUnavailableはreplicasで指定した数よりも減らしていい最大Pod数です。これではイマイチよくわからないと思うので図解で説明致します。

maxUnavailable: 0、maxSurge: 1の場合

RollingUpdateした場合、つまりマニフェストファイルのtemplate以下を変更してデプロイした場合、Pod数は3〜4台の間で推移します。maxSurgeが1なので、replicasで指定した3台のPod数よりも最大1台増加してRollingUpdateしてもよいということになります。つまり以下のようにPod数が遷移します。

Screen Shot 2019-11-26 at 22.58.55

 

Pod数が最大4台になっているのがわかると思います。これは、Nodeのリソースに比較的余裕のあるときに指定するパラメータになります。

maxUnavailable: 1、maxSurge: 0の場合

RollingUpdateした場合、つまりマニフェストファイルのtemplate以下を変更してデプロイした場合、Pod数は2〜3台の間で推移します。maxUnuvailableが1なので、replicasで指定した3台のPod数よりも最大1台減少してRollingUpdateしてもよいということになります。つまり以下のようにPod数が遷移します。

Screen Shot 2019-11-26 at 22.57.28

Pod数が最大3台になっているのがわかると思います。これは、Nodeのリソースに比較的余裕のないときに指定するパラメータになります。

アバター画像
About 武井 宜行 251 Articles
Microsoft MVP for Azure🌟「最新の技術を楽しくわかりやすく」をモットーにブログtech-lab.sios.jp)で情報を発信🎤得意分野はAzureによるクラウドネイティブな開発(Javaなど)💻「世界一わかりみの深いクラウドネイティブ on Azure」の動画を配信中📹 https://t.co/OMaJYb3pRN
ご覧いただきありがとうございます! この投稿はお役に立ちましたか?

役に立った 役に立たなかった

1人がこの投稿は役に立ったと言っています。


ご覧いただきありがとうございます。
ブログの最新情報はSNSでも発信しております。
ぜひTwitterのフォロー&Facebookページにいいねをお願い致します!



>> 雑誌等の執筆依頼を受付しております。
   ご希望の方はお気軽にお問い合わせください!

Be the first to comment

Leave a Reply

Your email address will not be published.


*


質問はこちら 閉じる