K8S ステートレスおよびステートフル、初心者向けガイド!

K8S ステートレスおよびステートフル、初心者向けガイド!

Kubernetes は、コンテナ化されたアプリケーションの展開、スケーリング、管理を自動化するためのオープンソースのオーケストレーション システムです。

Kubernetes の詳細については、Kubernetes ガイド (https://devtron.ai/blog/developers-guide-to-kubernetes/) を参照してください。

Kubernetes は、Pod と呼ばれる基本リソースを提供します。 Pod は Kubernetes でデプロイ可能な最小の単位で、実際にはコンテナのラッパーです。 1 つ以上のコンテナ、共有ストレージ/ネットワーク、およびコンテナの実行方法の仕様を持つことができます。

ポッドは一時的なエンティティと見なされます。ポッドがスケジュールされているノードが停止した場合、ポッドは削除され、タイムアウト後に再スケジュールされます。

ポッドは Kubernetes 内のユニットを表します。水平スケーリング (つまり、複数のインスタンスの実行) の場合、アプリケーションには複数のポッドが必要です。ポッドを複製して水平スケーリングを実現します。複製されたポッドはコントローラーによって作成および管理されます。

ポッドレプリカ管理用コントローラ

1. 展開

デプロイメントは、アプリケーションをデプロイするための最も単純かつ最も一般的に使用されるリソースです。 ReplicaSets の展開を管理します。デプロイメントを定義して、更新、新しいレプリカセットの作成、または既存のデプロイメントの削除を行うことができます。 Deployment の主な機能は、ポッドと ReplicaSet の宣言的な更新を提供することです。

デプロイメントは、次の目標を達成するのに役立ちます。

  • ReplicaSet を展開すると、バックグラウンドでポッドが作成されます。ロールアウトのステータスをチェックして、成功したかどうかを確認できます。
  • ポッドの新しい状態を宣言する - デプロイメント マニフェストの PodTemplateSpec を更新できます。新しい ReplicaSet が作成され、Deployment は制御された速度で古い ReplicaSet から新しい ReplicaSet に Pod を移動します。これで、新しいレプリカセットごとにデプロイメントの更新されたバージョンが含まれるようになります。
  • 以前のデプロイメント リビジョンへのロールバック - 何らかの状況により現在の状態が安定していない場合は、デプロイメントを以前のデプロイメント リビジョンにロールバックできます。

Deployment では提供されないものは何ですか?

  • ポッドの識別子は提供されません。
  • ポッド用のストレージは提供されないため、ステートレス アプリケーション (使用されているネットワークを気にせず、永続的なストレージを必要としないアプリケーション。たとえば、Apache、Nginx、Tomcat などの Web サーバー) にのみ使用されます。

2. ステートフルセット

これは、ステートフル アプリケーションを管理するために使用される Kubernetes リソースです。一連の Pod のデプロイメントとスケーリングを管理し、Pod の順序と一意性を保証します。

Deployment とは異なり、StatefulSet は各ポッドの ID を維持します。各ポッドには、スケジュール全体で一定に保たれる永続的な識別子があります。

たとえば、flag という名前の StatefulSet を作成すると、flag-0 という名前のポッドが作成され、StatefulSet の複数のレプリカに対して、ポッド名は flag-0、flag-1、flag-2 のように増加します。

各ノードには独自の永続ボリュームがあります。ポッドを削除または縮小しても、ポッドに関連付けられているボリュームは削除されないため、データは保持されます。

デプロイメントボリュームとステートフルセットボリュームの違い

  • デプロイメント: 「ステートレス アプリケーション」に使用されます。ボリューム (PVC) はポッド間で共有されます。共有ボリュームにはデータがないため、データ漏洩の問題が発生します。
  • StatefulSet: 「ステートフル アプリケーション」用。 PVC はその中に情報を保存し、その結果、すべてのポッド間で情報が共有されることになります。

デプロイメントとステートフルセットでの PVC の使用

アクセス モードを使用すると、PVC を Deployment と StatefulSet 全体で使用できます。アクセス モードは次の 3 つあります。

  • ReadWriteOnce: ボリュームを単一ノードの読み取り/書き込みとしてマウントします。
  • ReadOnlyMany: ボリュームを読み取り専用として複数のノードにマウントします。
  • ReadWriteMany: ボリュームを複数のノードに読み取り/書き込み可能としてマウントします。

展開

デプロイメントに PVC が指定されると、すべてのレプリカ ポッド間で共有されます。この場合、PVC には ReadWriteMany または ReadOnlyMany アクセス モードが必要です (ReadWriteMany はまれであり、少数のストレージ プロバイダーでのみサポートされています)。

ReadWriteOnce アクセス モードで PVC を作成し、ステートフル アプリケーションを作成して実行しようとすると、正常に動作します。スケールアウトすると、新しいポッドが起動したときに、ボリュームがすでに使用中であることを示すエラーが表示されます。

したがって、この場合は、エラーを回避するために読み取り専用ボリュームを使用することをお勧めします。

ステートフルセット

StatefulSet の PVC を指定する場合、PVC に ReadWriteOnce アクセス モードがあることを確認する必要があります。

StatefulSet を使用して、各レプリカの PVC を自動的に作成する VolumeClaimTemplate を定義します。

もう 1 つの利点は、アプリケーションと永続ボリュームを定義する単一のファイルが存在することです。アプリケーションのスケーラビリティがさらに向上します。

元記事: https://medium.com/container-talks/kubernetes-deployment-vs-statefulset-what-you-need-to-know-1a281e1d3c2c

<<:  ついにクラウドコンピューティングとデジタルトランスフォーメーションの関係を説明する人が現れる

>>:  Dockerfiles と Buildpacks を理解するための 7 つの画像、この 2 つをどのように選択すればよいでしょうか?

推薦する

Weiboマーケティングには地雷原がいくつあるかご存知ですか?

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービス企業であれ個人であれ、W...

クラウドネイティブ戦略はあなたの会社に適していますか?

クラウド ネイティブ アプローチは、企業が高まる顧客の要求と期待に応えることを可能にする柔軟な環境を...

Baidu Experienceをオンラインストアプロモーションの主戦場に

序文: Baidu の製品とアプリケーションはますます多様化しており、Baidu はあらゆる収益性の...

Alibaba Cloudは、クラウド上で5分でデータベースのバックアップを完了できるデータベースバックアップサービスDBSの正式商用化を発表

アリババクラウドは7月11日、データベースバックアップサービス「DBS」が正式に商用利用を開始したと...

クラウドネイティブデータミドルプラットフォームの技術とトレンドの解説

データミドルプラットフォームの開発は、一般的に、データベース、データウェアハウス、ビッグデータプラッ...

SEOエキスパートになる方法

実際のところ、海外での小さな経験から学んだことを除けば、私たちには本当の権威ある専門家はほとんどいま...

IBMとRed Hatが新たなクラウドコンピューティングの巨人になれる理由

CIO の目から見ると、AWS は明らかにクラウド コンピューティングのリーダーとなり、Micros...

李佳琦とヴィヤは一晩で180億元相当の商品を販売。ライブストリーミングはダブル11を殺したのか?

早くも9月2日、アリババと天猫の副社長である楊光(垂雪)氏は、今年の双十一は昨年と同様に「ヌンチャク...

Go分散リンクトレーシングについての簡単な説明

現代の複雑な分散システム環境では、アプリケーションやシステムのパフォーマンスを診断することは非常に困...

チャイナメーカーマップ:固定観念を打ち破りたい冒険家のための楽園

王維「ウェアラブルデバイス」や「インターネットハードウェア」がメディアや資本によってトレンドとみなさ...

Zouxiu.comの注文ダンピング事件を追跡:2人の消費者と和解

ニュース追跡最終レポートインデックス日付: 2012年7月3日版:A20「深センニュース」タイトル:...

Dockerコンテナを学ぶ価値のあるものにするためのちょっとしたコツ

概要Linux システムでは、ファイルやディレクトリを操作するためにコマンドラインを使用する必要があ...

Jenkins パイプラインは Nexus リポジトリに成果物を公開します

このガイドでは、継続的インテグレーション サーバーとして Jenkins を使用し、ビルド リポジト...

草の根電子商取引のアップグレードパス: ブランドは価値を創造し、平均顧客単価から脱却する

非常に知能の高い人々の集団がなぜそのような困難なことをしなければならないのでしょうか?顧客平均支出を...

#おすすめ# bluehost - 45% オフ/仮想ホスト/無料ドメイン名/無制限のウェブサイト構築、大手ブランドのクラシックホスト

毎年恒例の 11 月が到来し、Bluehost はすでに仮想ホスティングの 55% 割引 (元の価格...