Kubernetes の導入戦略を 1 つの記事で理解する

Kubernetes の導入戦略を 1 つの記事で理解する

この記事では、Kubernetes のデプロイメントの概念と一般的な戦略について詳しく説明し、それぞれの長所と短所を見ていきます。適切な導入戦略により、ダウンタイムを最小限に抑え、顧客エクスペリエンスを向上させ、信頼性を高めながらアプリケーションをリリースできます。

Kubernetes のデプロイメント戦略とは何ですか?

Kubernetes デプロイメントは、通常 YAML ファイルで構成される宣言ステートメントであり、アプリケーションのライフサイクルと、そのアプリケーションの更新の管理方法を定義します。

アプリケーションを K8s クラスターにデプロイする場合、選択したデプロイメント戦略によって、アプリケーションが古いバージョンから新しいバージョンに更新される方法が決まります。一部の戦略ではダウンタイムが発生する可能性がありますが、他の戦略ではテストの概念を導入し、ユーザー分析を可能にする場合があります。この記事では、一般的に使用される 2 つの基本的な K8s デプロイメント戦略を紹介します。

  • 再現
  • ローリング

次のポリシーは、トラフィック フローの方向をさまざまな方法で制御できるため、「高度な展開ポリシー」と見なされます。

  • 青/緑
  • カナリア
  • AB型
  • シャドウデプロイメント

K8s はデフォルトの戦略としてローリング アップデート戦略を使用しますが、場合によっては適切ではないことがあります。それぞれの戦略について詳しく議論しましょう!

1. デプロイメントを再作成する

デプロイメントを再作成すると、すべてのポッドが終了し、新しいバージョンのポッドに置き換えられます。これは、アプリケーションの古いバージョンと新しいバージョンを同時に実行できない場合に役立ちます。この戦略を使用することで発生するダウンタイムは、アプリケーションのシャットダウンと起動にかかる時間によって異なります。完全な置き換えにより、アプリケーションの状態も完全に更新されます。

次の例は、type=Recreate が再作成を意味することを示しています

 spec: replicas: 10 strategy: type: Recreate

2. ローリングデプロイメント

ローリング アップデートは、クラスターのダウンタイムを短縮することを目的とした K8s のデフォルトのデプロイメント モードです。ローリング アップデートでは、ダウンタイムなしで、アプリケーションの古いバージョンを実行している Pod を徐々に新しいバージョンに置き換えます。

これを実現するために、準備プローブが使用されます。

準備プローブは、アプリケーションがいつ利用可能になるかを監視します。プローブが失敗した場合、そのポッドにトラフィックは送信されません。これらのプローブは、データベース接続、キャッシュ データの初期化、アプリケーション リリースの登録など、準備前にいくつかの初期化手順を実行する必要があるアプリケーションに使用されます。

準備プローブがアプリケーションの新しいバージョンが利用可能であることを検出すると、アプリケーションの古いバージョンは削除されます。何か問題が発生した場合、デプロイメントを停止して以前のバージョンにロールバックすることで、クラスター全体のダウンタイムを回避できます。各ポッドは 1 つずつ置き換えられるため、大規模なクラスターではデプロイメントに時間がかかる場合があります。別のデプロイメントが完了する前に新しいデプロイメントがトリガーされた場合、バージョンは新しいデプロイメントで指定されたバージョンに更新され、まだ正常にデプロイされていない以前のデプロイメント バージョンは無視されます。

ローリング アップデート デプロイメントをトリガーする条件は、Pod のイメージ、環境変数、ラベルの更新など、Pod 仕様の何らかの変更です。 kubectl set image コマンドを使用してPod イメージを更新できます。

yaml ファイルの Spec: -> strategy: セクションでは、 maxSurgemaxUnavailableという 2 つのパラメータを使用してデプロイメントを調整できます。両方のパラメータは、パーセンテージまたは絶対値として指定できます。水平 Pod 自動スケーリングを使用する場合は、パーセンテージを使用する必要があります。

  • maxSurge は、デプロイメントが同時に作成できる Pod の最大数を指定します。
  • maxUnavailable は、デプロイメント中に使用不可にできる Pod の最大数を指定します。

たとえば、次の構成では 10 個のレプリカが必要で、同時に最大 3 個のレプリカが作成され、デプロイメント中に 1 つのレプリカが使用不可になることが許可されます。

 spec: replicas: 10 strategy: type: RollingUpdate rollingUpdate: maxSurge: 3 maxUnavailable: 1

3. ブルー/グリーンデプロイメント

ブルー/グリーン デプロイメントでは、新しいアプリケーション バージョン (グリーン) を古いバージョン (ブルー) と並行してデプロイします。サービス セレクター オブジェクトがロード バランサーとして機能し、新しいアプリケーション (緑) がテストおよび検証されると、トラフィックは古いアプリケーションではなく新しいアプリケーションに送信されます。ブルー/グリーン デプロイメントでは、デプロイメント中に 2 倍のアプリケーション リソースを起動する必要があるため、コストが増加する可能性があります。

これを実現するには、サービスをデプロイする前に設定する必要があります。たとえば、web-app という名前のアプリケーションのバージョン v1.0.0 のブルー デプロイメントの場合、yaml ファイルのサービス セレクター セクションは次のようになります。

 kind: Service metadata: name: web-app-01 labels: app: web-app selector: app: web-app version: v1.0.0

青い Web アプリの展開は次のとおりです。

 kind: Deployment metadata: name: web-app-01 spec: template: metadata: labels: app: web-app version: "v1.0.0"

トラフィックをアプリケーションの新しい (グリーン) バージョンに誘導する場合は、マニフェスト ファイルを更新して新しいバージョン v2.0.0 を指すようにします。

 kind: Service metadata: name: web-app-02 labels: app: web-app selector: app: web-app version: v2.0.0

グリーンアプリケーションの展開は次のとおりです。

 kind: Deployment metadata: name: web-app-02 spec: template: metadata: labels: app: web-app version: "v2.0.0"

4. シャドウデプロイメント

カナリアという用語は、シャドウ デプロイメントと同じ意味で使用されます。

シャドウ デプロイメントとは、主に監視とテストの目的で、アプリケーションの新しいバージョンを既存の運用バージョンと並行してデプロイする戦略です。シャドウ デプロイメントでは、ユーザー トラフィックは新しいバージョンにアクティブにルーティングされません。これは、新機能の本番負荷をテストする場合に特に役立ちます。

このテクノロジーはより複雑であり、特にエクスポートフローには特別な要件が必要です。たとえば、製品がある場合、シャドウ テストのために支払いサービスを呼び出すと、顧客が注文に対して 2 回支払いをすることになり、複雑さが比較的高くなります。

5. カナリアデプロイメント

カナリア デプロイメントは、一部のユーザーを対象にアプリケーションの新しいバージョンをテストする場合や、新しいバージョンの機能に完全に自信がない場合に使用できます。新しいバージョンのコピーは古いバージョンと一緒にリリースされ、古いバージョンのアプリケーションは大多数のユーザーに使用され、新しいバージョンのアプリケーションは少数のテスト ユーザーに使用されます。新しい展開が成功した場合、徐々により多くのユーザーに拡大されます。

たとえば、100 個の実行中のポッドを持つ K8s クラスターでは、95 個がアプリケーションのバージョン v1.0.0 を実行しており、5 個が新しいバージョン v2.0.0 を実行しています。ユーザーの 95% は古いバージョンにルーティングされ、5% は新しいバージョンにルーティングされます。これを実現するために、個別にスケーリングできる 2 つのデプロイメントを並行して使用します。

古いアプリケーションの yaml ファイルの spec セクションは次のようになります。

 spec: replicas: 95

新しいアプリケーションの yaml ファイルの spec セクションは次のようになります。

 spec: replicas: 5

上記の例では、100 個の Pod を実行するのは現実的ではない可能性があります。より良いアプローチとしては、NGINX、HAProxy、Traefik などのロード バランサー、または Istio、Hashicorp Consul、Linkrd などのサービス メッシュを使用して、トラフィックをより細かく制御することができます。

6. A/Bデプロイメント

カナリア デプロイメントと同様に、A/B デプロイメントでは、いくつかのターゲティング パラメータ (通常は HTTP ヘッダーや Cookie など) に基づいて特定のユーザーをターゲットにし、重みに基づいて異なるバージョン間でトラフィックを分散できます。この手法は、特定の機能の変換率をテストし、最終的な展開のために変換率が最も高いバージョンを選択するために広く使用されています。

このアプローチは、多くの場合、収集されたユーザー行動データに基づいており、より優れたビジネス上の意思決定を行うために使用されます。 A/B テスト中は通常、ユーザーには新しい機能は通知されないため、古いバージョンと新しいバージョンを使用するユーザー間のエクスペリエンスを現実的にテストして比較することができます。 A/B デプロイメントを使用したデプロイメントは、追加のテスト期間とユーザー エクスペリエンス分析のために遅くなる可能性があります。

A/B デプロイメントは、Istio とFlaggerを使用して自動化できます

要約する

この記事では、6 つの一般的な K8s 展開戦略について説明しました。これらの戦略をどのように使用するか、また各戦略を実装するためにどのツールを使用するかは、アプリケーションのデプロイ方法やアップグレード方法を決定する際に重要です。

<<:  2023 年のクラウド テストの 5 つのトレンド

>>:  Kubernetesのデプロイメントの送信からポッドの実行までのプロセス全体

推薦する

lovevps-スペシャルエディション-600MメモリKVM月額支払い6.99

Lovevpsは2010年に設立され、現在はアメリカとイギリスにデータセンターを構えています。同社の...

あらゆるクラウド | Dell + Microsoft: リファレンス アーキテクチャから Azure ハイブリッド クラウド プラットフォームへ

オープン アーキテクチャに基づき、Microsoft と連携した Dell のハイブリッド クラウド...

業界は、伝統的な企業がO2Oの主役となり、電子商取引がサービスプラットフォームになる可能性があると述べた。

「O2O」(Online To Offline、つまりローカルビジネスとインターネットの組み合わせ)...

XEN および KVM 仮想化 VPS にスワップ パーティションを追加する

2host.com から 512M のメモリを搭載した VPS を購入しましたが、奇妙なことに、10...

Leica Cloud: クラウド サーバーが 20% オフ、最低 38 元、香港 CN2 GIA、米国 CN2 GIA、韓国 CN2、日本 CN2、帯域幅 20M から

国内のサーバープロバイダーであるLeica Cloud(lcayun.com)は、付加価値通信ライセ...

Zhihu は収益化のために電子商取引に依存していますか?

「ねえ、今からZhihuで買い物してもいい?」長い間知湖を訪れていなかった小呉さんは、ウェブサイトに...

ブラックウィーク5#: 247ホスト-仮想ホスト50%オフ/再販業者50%オフ/オプションのコンピュータルーム8室/ブランド11年

カナダのホスティングプロバイダー 247-hosts (2004 年に設立され、Google で検索...

Sina Cloud - 友達を招待してクラウドビーンを 1000 個ゲット

Sina Cloudでは、友達を招待して無料のクラウドビーンをもらえるキャンペーンを実施しています。...

クラウドベースのAIモバイルアプリケーションは今後も成長と改善を続けるだろう

近年、モバイルラーニングと人工知能は、人々が機械と連携する方法に大きな影響を与えており、個々の顧客に...

ウェブサイトのユーザーエクスペリエンスが良くない場合は、何も言わないでください

21世紀に入り、インターネットという新しいものが何千もの家庭に入り込みました。過去10年間で、業界は...

UCloud CEO の Ji Xinhua 氏が「トップ 10 の革新的な経済人」賞を受賞

12月26日、「第51回クレジットカード新霊獣夜・中国(杭州)イノベーション経済人表彰式」が盛大に開...

グローバルクラウド:新年のVPSプロモーション、香港クラウド/シンガポール/ロシア - 30%オフ、オランダ - 40%オフ、すべてのハイエンド最適化ライン

locvps(グローバルクラウド)が新年プロモーションを開始しました。会場内のコンピュータルームのV...

大量データ処理のために誕生した Alibaba Cloud が SQL Server AlwaysOn Cluster Edition をリリース

2018 年の広東雲奇カンファレンスで、Alibaba Cloud は読み取り専用インスタンスをサポ...

1兆パラメータM6モデルの事前トレーニングの背後にある分散フレームワークWhaleの解読

[[418050]]最近、アリババクラウドPAIチームとDAMOアカデミーインテリジェントコンピュー...

返信を可視化することで、ウェブサイトのアクティビティとユーザー エクスペリエンスを向上させましょう。 !

私たちのウェブマスターと一般のネットユーザーの両方がこの問題に遭遇すると思います。ユーザーがBaid...