5分間のK8s実践 - ローリングアップデートと正常なシャットダウン

5分間のK8s実践 - ローリングアップデートと正常なシャットダウン

アプリケーションを本番環境にリリースする場合は、現在のシステムやそれを使用しているユーザーを考慮する必要があるため、できるだけシステムを停止せずにバージョンをリリースする必要があります。

したがって、理論的には、リリース プロセス中は以前の v1 バージョンがまだ存在するため、履歴の v1 バージョンを削除する前に、v2 バージョンが正常に起動されるまで待つ必要があります。

v2 バージョンの起動に失敗した場合、v1 バージョンは何も実行せず、引き続き外部サービスを提供できます。

ローリングアップデート

写真

これが私たちが期待するリリースプロセスです。 Kubernetes でこの機能を使用するのも非常に簡単です。仕様の下にある関連するポリシーのみを構成する必要があります。

 spec: strategy: rollingUpdate: maxSurge: 25% maxUnavailable: 25% type: RollingUpdate

この構成の意味は次のとおりです。

  • ローリング アップデートを使用し、もちろん再作成して古いバージョンの Pod を削除します。基本的にこの戦略は使用しません。
  • maxSurge: ローリング アップデート プロセス中に予想される Pod 数を超過できる割合。整数を入力することもできます。
  • maxUnavailable: ローリング更新プロセス中に使用できないポッドの数が予想値を超える最大パーセンテージ。

このように、Pod イメージを更新すると、Kubernetes はまず新しいバージョンの Pod を作成し、それが正常に起動するのを待ってから、残りの Pod を徐々に更新します。

写真

正常なシャットダウン

ローリング アップグレード プロセス中は、古い Pod を停止する必要があるため、エレガントなシャットダウンの問題は避けられません。

現時点では、次の 2 つの状況に注意する必要があります。

  • シャットダウン プロセス中、Pod に入ったリクエストは、終了する前に完了まで実行する必要があります。
  • シャットダウン後は、シャットダウンしたポッドにリクエストをルーティングできなくなります。

最初の疑問は、Go を使用している場合、フックを使用して kubernetes から送信される終了信号をリッスンできるかどうかです。

 quit := make(chan os.Signal) signal.Notify(quit, syscall.SIGHUP, syscall.SIGINT, syscall.SIGTERM, syscall.SIGQUIT, syscall.SIGPIPE) go func() { <-quit log.Printf("quit signal received, exit \n") os.Exit(0) }()

ここで対応するリソースの解放が実行されます。

Spring Boot を使用している場合は、対応する構成もあります。

 server: shutdown: "graceful" spring: lifecycle: timeout-per-shutdown-phase: "20s"

アプリケーションが終了信号を受信すると、Spring Boot は新しいリクエストを受け入れなくなり、既存のリクエストが処理されるまで待機します。

ただし、Kubernetes はアプリケーションが Pod タスクを完了するまで無期限に待機することはありません。ポッドで設定できます

terminationGracePeriodSeconds: 30

待機時間を定義するには、30 秒を超えると Pod が強制的に終了されるようにします。

実際の状況に応じて具体的な値を設定できます

spec: containers: - name: example-container image: example-image lifecycle: preStop: exec: command: ["sh", "-c", "sleep 10"]

同時に、preStop をスリープ状態に設定して、削除する Pod が Iptable で更新された後に Kubernetes が Pod を削除するようにすることもできます。

これにより、削除されたポッドにまだリクエストがルーティングされているという 2 番目の状況を回避できます。詳細については、Spring Boot のドキュメントを参照してください。

https://docs.spring.io/spring-boot/docs/2.4.4/reference/htmlsingle/#cloud-deployment-kubernetes-container-lifecycle

ロールバック

ロールバックは実際には一種のアップグレードと見なすことができますが、アップグレードは過去のバージョンへのアップグレードです。 Kubernetes でアプリケーションをロールバックするのは非常に簡単です。

 # 回滚到上一个版本k rollout undo deployment/abc # 回滚到指定版本k rollout undo daemonset/abc --to-revisinotallow=3

同時に、Kubernetes はロールバックも保証できます。

グレースフルリスタート

Kubernetes Pod を正常に再起動する方法に関する前回の記事では、Pod を正常に再起動したい場合は、rollout コマンドを使用してローリング再起動を確実に実行できることを説明しました。

 k rollout restart deployment/nginx

Kubernetes のローリング アップデートは、従来の運用やメンテナンスよりもはるかに簡単です。以前は、いくつかのコマンドを実装するために、複雑な操作および保守スクリプトを作成する必要がありました。

<<:  SaaS の価格設定を正しく行う方法

>>:  ファーウェイのクラウドERP移行ソリューションの評価、企業のクラウド化を加速

推薦する

トリックを拒否し、ネットユーザーの行動を真似することで、短命なSEOに別れを告げましょう

Hu Yang氏は、現在主流のSEO最適化方法は、巧妙さとネットユーザーの真似を組み合わせたものに過...

SEOは長年にわたってどのように変化してきたか

SEO に関する混乱は初心者だけでなく、多くのいわゆるベテランにも影響を及ぼします。最も混乱している...

spryservers: 月額 36 ドル、Phoenix、E3-1220/8g メモリ/1T ハードディスク/20T トラフィック

spryservers は、アメリカ西海岸フェニックスに本社を置くアメリカの会社で、2009 年に設...

従来のITシステムを使用したクラウド移行の障害を克服する方法

今日のビジネスはクラウド配信の IT へと移行しています。企業が既製のアプリケーションにアクセスでき...

タオバオモール最終更新プラン:年会費最低12,000

12月28日、タオバオモールは「2012年タオバオモール加盟店支援計画」を発表した。計画によると、条...

例は、ホットワードの代替思考が非常に重要であることを示している

ウェブサイトの最適化やオンライン マーケティングを行う際には、トラフィックは複数のチャネルから来るべ...

#ブラックフライデー#: bluehost-hosting は月額 2.95 ドルから

ブラックフライデーとサイバーマンデーは本当に重要です。昨年、Bluehost は大きな割引はありませ...

ウェブマスターの古いドメイン名の知識を更新するためのドメイン名の新しい解釈

ドメイン名について話すとき、まず古いウェブマスターのドメイン名に対する考え方について触れなければなり...

Vultrはどうですか?シアトルデータセンターのクラウドサーバーの簡単なレビュー

Vultrはどうですか? Vultrはまだ使えますか?アメリカ西海岸にあるVultrのシアトルデータ...

ウェブビジュアルデザイン原則の重要性の包括的な分析

インターネット企業に勤めているあなたは、たくさんのウェブサイトを見て、自分なりの美的ビジョンを持って...

vpss「言葉にできない」時代-$16/1gメモリ/200gハードディスク/2Tトラフィック/Gポート/winXP/03/08

vpss「言葉にできない」時代は非常に新しいビジネスです。論理的には、私がそれを公開する必要はありま...

サイトのクロール性を高める 4 つの簡単な最適化

私たち最適化担当者にとって重要な仕事は、検索エンジンのスパイダーをクロールさせることです。外部リンク...

VSTSがAzure DevOpsサービスとして利用可能になりました。新機能は次のとおりです。

9月10日、マイクロソフトの公式ブログでAzure DevOpsサービスの開始が発表されました。 A...

Baidu最適化の8つの重要なポイントについて簡単に説明します

最近、Baiduの計算ルールは大きく変更され、多くのSEO担当者を不安にさせていると言えます。しかし...

SEO のヒント: 「SEO」キーワードで上位ランクを獲得する方法

月収10万元の起業の夢を実現するミニプログラム起業支援プランSEO の仕事をしている友人の多くは、R...