K8S のローリングアップグレードを 1 つの記事で理解する

K8S のローリングアップグレードを 1 つの記事で理解する

パート01.アップグレード戦略 

K8S では、 spect.strategy を使用して、古い Pod を新しい Pod に置き換える戦略を定義します。戦略タイプは、再構築戦略 (Recreate) またはローリング アップグレード戦略 (RollingUpdate) に分かれており、デフォルトは RollingUpdate です。

再作成 - 新しいポッドを作成する前に、既存のポッドがすべて削除されます。

RollingUpdate - ローリング更新プロセスを制御するために、maxSurge と maxUnavailable を指定できます。

  • maxSurge : アップグレード中に予想される Pod の数を超過できる最大値を指定するために使用されます。値は絶対数 (例: 5) または予想されるポッドのパーセンテージ (例: 10%) にすることができます。デフォルトは 25% です。パーセンテージで計算された絶対値は切り上げられます。
  • maxUnavailable : アップグレード中に使用できない Pod の最大数を指定するために使用されます。値は絶対数 (例: 5) または予想される Pod のパーセンテージ (例: 10%) にすることができ、デフォルトは 25% です。パーセンテージを使用して計算された絶対値は切り捨てられます。

当社では、デフォルトでローリング アップグレード戦略を採用し、maxSurge と maxUnavailable を適切に構成することで高いビジネス可用性を実現しています。

パート02:健康チェック 

K8S では、プローブを使用してコンテナの定期的な診断を実行し、コンテナの状態を判断します。活性プローブと準備プローブは通常、コンテナの状態に基づいて後続の処理を実行するために使用されます。

  • livenessProbe : コンテナが実行中かどうかを検出します。生存プローブが失敗した場合、kubelet はコンテナを強制終了し、コンテナは再起動ポリシーの対象となります。コンテナーが活性プローブを提供しない場合、デフォルトのステータスは成功です。
  • readinessProbe : コンテナがリクエストを処理する準備ができているかどうかを調査します。準備プローブが失敗した場合、エンドポイント コントローラーは、Pod に一致するすべてのサービスのエンドポイントから Pod の IP アドレスを削除します。初期遅延前の準備状態はデフォルトで失敗になります。コンテナーが準備プローブを提供しない場合、デフォルトのステータスは成功です。

ビジネスでは、これら 2 つのプローブを同時に使用することがよくあります。生存プローブは、コンテナを再起動させて自己修復を行う必要があるかどうかを判断するために使用され、準備プローブは、コンテナが外部にサービスを提供できる準備ができているかどうかを判断するために使用されます。

パート03、 K8Sローリングアップグレードの原則

K8S はデプロイメントを通じてレプリカを作成します。デプロイメントは 3 レベルの構造です。デプロイメントは Replicaset (レプリカ セット) を制御し、Replicaset は Pod を制御します。 Deployment の構造特性により、Deployment の下に異なるレプリカセットが存在する可能性があります。つまり、異なるイメージ バージョンを持つ Pod が同時に Deployment の下に存在できることになります。

アップグレード プロセス中に、Deployment は Replicaset を自動的に作成します。Replicaset は、ローリング アップグレード戦略の maxSurge および maxUnavailable パラメータを通じて、毎回ロールされる Pod の数を正確に制御します。ヘルスチェックのライブネス プローブと準備プローブを組み合わせることで、Pod が正常に起動したタイミングとリクエストを処理する準備ができたタイミングを正確に判断でき、アップグレード プロセス中に利用可能な Pod が通常どおりサービスを提供できることが保証されます。

具体的なプロセスは以下の図の通りです。

K8S ローリングアップグレードプロセス


パート04:要約

この記事では、K8S のアップグレード戦略とヘルスチェックについて説明します。アップグレード戦略とヘルスチェックを構成することで、ローリングアップグレードが実装され、マイクロサービスのスムーズな展開が保証されます。ただし、ローリング アップグレードでは、ビジネス設計に対する要件も高くなります。ビジネスでは、設計において以前のバージョンと次のバージョンとの互換性が必要です。そうしないと、ローリング アップグレード プロセス中に、古いバージョンと新しいバージョンが共存している間にサービス呼び出しが発生し、ビジネス障害、データの破損、その他の問題が発生する可能性があります。企業は、自社の特性とニーズに基づいて適切なアップグレード ソリューションを選択する必要があります。

引用:

Kubernetes 中国語ドキュメント:

http://docs.kubernetes.org.cn/317.html

<<:  クラウド ネイティブ アプリケーション - CDN シナリオでの自動評価

>>:  経済の不確実性と気候変動が将来のネットワークを再構築する

推薦する

ローカルポータルが新たな機会をもたらす

現在、O2Oコンセプトは非常に人気があります。同時に、一部のローカルウェブサイトはこの好機を捉え、こ...

ファーウェイクラウドと海底撈がクラウドディナーを開催、異国の地で春節のオンライン同窓会を開催

今年は特別な年です。感染拡大を受け、全国の多くの省が「新年は自分のいる場所で祝い、必要がない限り帰省...

racknerdはどうですか? Racknerd 高性能 AMD プラットフォーム VPS のレビュー、最も現実的な朝と夜のデータ比較付き!

racknerdはどうですか?昨日、racknerd が新たにリリースした AMD ベースの高性能 ...

プログラマーは将来どのようなキャリアの変化に直面するのでしょうか?

プログラマーとして、私たちは万華鏡のように常に変化するテクノロジーの世界にいます。私たちは、テクノロ...

Zabbix 5.2 プロキシ (分散展開)

中規模、大規模、超大規模に適した監視ソフトウェアであるため、分散展開が不可欠です。同様に、Zabbi...

クラウドコンピューティングは「暴走馬」にはならない、と専門家は語る:人工知能はクラウドデータのセキュリティレベルを向上させることができる

データが王様である時代では、膨大な量のデータがクラウドに保存され、私たちの世界はたくさんの「クラウド...

ブロックチェーン + 分散ストレージはクラウド ストレージ プラットフォームに変化をもたらすことができるでしょうか?

関連データによると、 2020年までに世界中の接続デバイスの数は200億を超えるでしょう。膨大な量の...

新しいウェブサイトが競合他社に勝つために取るべき3つのステップの簡単な分析

SEO はウェブサイトのランキング付けを行いますが、Baidu はホームページ上の 10 位しか提供...

AWS が Amazon Aurora と Amazon DynamoDB の新機能をリリース、Amazon Neptune グラフデータベースを開始

[51CTO.com からのオリジナル記事] 本日の AWS re:Invent で、Amazon ...

アリババクラウド史上最大の値下げ:コア製品の価格が全面的に引き下げられ、最大値下げは50%に達する

4月26日、アリババクラウドは史上最大の値下げを発表し、コア製品の価格が全面的に15%から50%引き...

Hostus 香港 VPS/256M メモリ/10g ハードディスク/500g トラフィック/ソフトレイヤー/1000M ポート

Hostus は創業から 20 年になりますが、おそらく経営者は今日これほど人気が​​出るとは思って...

「ネガティブエネルギー起業家」とのチャット:垂直型電子商取引の普遍的な悲劇、Hammer と Xiaomi について...

胡秀さんは建外SOHOのスターバックスコーヒーショップでAさんと出会った。 Aさんは2、3年前に垂直...

スタンドアロンモバイルゲームの失われた道

「今、誰がまだスタンドアロンゲームを作っているのか?誰もがモバイルオンラインゲームを作っている。オン...

swiftnode: 米国サーバー (ロサンゼルス/シカゴ)、月額 79 ドル、E3-1230v5/32gDDR4/500GSSD/1Gbps 帯域幅 (無制限)/40G 高防御

Swiftnodeは2009年に設立され、主な事業は独立系サーバーレンタルです。現在、米国シカゴとロ...

JVM メモリ オーバーフローの 8 つの原因と解決策

[[275294]] 1. Javaヒープスペース頻度: 5 つ星原因Javaヒープにオブジェクトを...