【K8Sシリーズ】etcdの詳細分析

前文

時間は常に傍観者であり、すべてのプロセスと結果は自分で負担する必要があります。

記事タグの色の説明:

  • :重要な見出し
  • : 結論を示すために使用
  • : 第 1 レベルの引数をマークするために使用されます
  • : 二次引数をマークするために使用されます

Kubernetes (k8s) は、アプリケーションとサービスをコンテナーで実行できるコンテナー オーケストレーション プラットフォームです。今すぐ etcd について学びましょう。

この記事があなたに利益をもたらすだけでなく、楽しく学べることを願っています。

 コラム紹介

これは、この記事が掲載されているコラムです。購読を歓迎します: [k8s の詳細な分析] コラム

このコラムで行うことを簡単に紹介します。

主に、各知識ポイントを深く分析し、すべての人が k8s を完全に習得できるようにすることを目的としています。

シリアルナンバー 記事
最初の講義 k8s の詳細な分析: 入門ガイド (1)
二回目の講義 k8s の詳細な分析: 入門ガイド (2)
第三回講義 Pod オブジェクトの詳細な分析 (1)
第四講 Pod オブジェクトの詳細な分析 (2)
第5回講義 ステートレス サービスの詳細な分析
講義6 ステートフル サービスの詳細な分析
第7回講義 コントローラーの詳細な分析

第八講

ReplicaSet の詳細な分析
講義9 ローリング アップグレードの詳細な分析
第十回講義 StatefulSet の詳細な分析 (1)
第11回講義 StatefulSet の詳細な分析 (2)
講義12 DaemonSet の詳細な分析
第十三講 ジョブの詳細な分析

1 基本的な紹介

1.1 コンセプト紹介

Kubernetes (略して K8s) は、コンテナー化されたアプリケーションのデプロイ、スケーリング、および管理を自動化するためのオープンソースのコンテナー オーケストレーション プラットフォームですKubernetes では、etcd はすべての構成データと状態情報を Kubernetes クラスターに格納するために使用される重要なコンポーネントです。

この記事では、etcd の概念、利点、原理、および使用法について紹介します。

etcd

etcd は、CoreOS によって開発され、オープンソース化された分散型の高可用性キー値ストレージ システムです。Raft アルゴリズムを使用して高可用性と一貫性を保証し、クラスター内の複数のノードにデプロイできます。各 etcd ノードにはデータの完全なコピーが含まれており、データの一貫性と可用性を確保するために他のノードと複製および同期されます。

Kubernetes では、etcd はすべての Kubernetes オブジェクト (Pod、Service、Deployment など) とクラスターのステータス情報を保存します。Kubernetes のさまざまなコンポーネント (API サーバー、コントローラー マネージャー、スケジューラーなど) は、etcd を介して通信および調整します。

1.2 利点の紹介

etcd には次の利点があります。

  1. 高可用性: etcd は、Raft アルゴリズムを使用して分散型の高可用性ストレージを実装します。これは、クラスター内の複数のノードにデプロイして、データの可用性と一貫性を確保できます。

  2. 信頼性: etcd はデータを永続的に保存し、マルチバージョン コントロールを使用してデータの一貫性と信頼性を確保できます。

  3. 使いやすさ: etcd はシンプルな REST API とコマンド ライン ツールを提供し、データの読み取り、書き込み、および管理を非常にシンプルで使いやすくします。

1.3 原則の紹介

etcd の重要な原則には次のようなものがあります。

  1. データ モデル: etcd のデータ モデルは、キーと値のペアに基づいています。各キーと値のペアは、一意のキーと対応する値で構成されますKubernetes では、etcd はすべての Kubernetes オブジェクト(Pod、Service、Deployment など) とクラスターのステータス情報を保存します。

  2. 分散ストレージ: etcd は、Raft アルゴリズムを使用して分散型の高可用性ストレージを実装します。これは、クラスター内の複数のノードにデプロイして、データの可用性と一貫性を確保できます。各 etcd ノードにはデータの完全なコピーが含まれており、データの一貫性と可用性を確保するために他のノードと複製および同期されます。クラスター内のノードに障害が発生した場合、etcd は新しいマスター ノードを自動的に再選択して、データの可用性と一貫性を確保できます。

  3. 一貫性プロトコル: etcd は Raft アルゴリズムを使用して、データの一貫性と可用性を確保します。Raft アルゴリズムは、分散システムで一貫性と可用性を実現するための分散コンセンサス アルゴリズムです。Raft アルゴリズムは、etcd クラスターを複数のノードに分割します。そのうちの 1 つがリーダー (リーダー) として機能し、すべてのクライアント要求を処理し、書き込み操作を他のレプリカ ノードに複製します。リーダー ノードに障害が発生すると、他のノードが新しいリーダー ノードを再選択します。

  4. スナップショットとリカバリ: etcd は、スナップショット メカニズムを使用してデータを定期的にバックアップし、スナップショットを使用してリカバリ プロセスを高速化します。etcd ノードが起動すると、ローカル ディスクに保存されているスナップショットからデータが復元され、クラスターの状態が迅速に再確立されます。

拡張ラフト アルゴリズム: 

Raft アルゴリズムは、分散システム内のすべてのノードのデータの一貫性を維持するために使用される分散コンセンサス アルゴリズムです。Paxos アルゴリズムを置き換えるために、2014 年に分散システムの研究者 Ongaro と Ousterhout によって提案されました。

Raft アルゴリズムには、主に次の 3 つのステップが含まれます。

  • 選挙
  • ログ複製
  • 投票

選挙

Raft アルゴリズムは、「選挙」と呼ばれるプロセスを使用して、データの一貫性を維持するリーダーを選択します。

選出プロセス中、各ノードは投票リクエストを送信し、他のノードは投票を受信して​​返信します

ノードが過半数のノードから投票を受け取ると、そのノードがリーダーになります。

ログ複製

選出プロセスが終了すると、リーダーはログ レプリケーション プロセスを開始します。つまり、新しいデータをすべてのノードに同期します。

ログのレプリケーション中に、リーダーは新しいデータを他のノードに送信し、他のノードは新しいデータを受信して​​独自のログに追加します。

投票

ログ複製プロセスが終了した後、Raft アルゴリズムは投票を使用してどのノードがリーダーであるかを決定します。

各ノードは投票リクエストを送信し、他のノードは投票を受信して​​返信します。ノードが過半数のノードから投票を受け取ると、そのノードがリーダーになります。

2 はじめに

etcd を使用するには、次の側面を理解する必要があります。

  1. etcd のインストール: 公式 Web サイトから etcd バイナリをダウンロードしてインストールするか、Docker コンテナーを介して etcd を実行できます。

  2. etcd クラスターの開始: etcdctl コマンドライン ツールまたは API を使用して、etcd クラスターを開始できます。

  3. データの読み取りと書き込み: etcdctl コマンド ライン ツールまたは API を使用して、etcd のデータを読み書きできます。たとえば、etcdctl get コマンドを使用して etcd に格納されている値を取得し、etcdctl put コマンドを使用して値を etcd に格納できます。

  4. クラスター管理: etcdctl コマンド ライン ツールまたは API を使用して、etcd クラスターを管理できます。たとえば、etcdctl member コマンドを使用して、クラスター内のメンバー ノードを一覧表示できます。

3 Kubernetes における役割

以下を含むすべての構成データを Kubernetes クラスターに保存するために使用できます

  • サービス発見
  • 分散ロック
  • クラスタ スケジューリング
  • 高可用性
  • リソースの状態を保存する: Kubernetes クラスター内のコンポーネント間の通信を促進し、高可用性を実現して Kubernetes クラスターの可用性を確保します。
  • Tracking Cluster Status : Kubernetes クラスターが正しく応答できるように、エラーと障害の検出、およびユーザー要求の追跡を容易にします。

などの機能に必要なすべてのメタデータ。これにより、Kubernetes クラスターの可用性が確保されます。

4 まとめ 

Kubernetes では、etcd が重要なコンポーネントであるため、注意すべき使用上の考慮事項がいくつかあります。

たとえば、etcd に保存されている Kubernetes オブジェクトを直接変更するのではなく、Kubernetes API サーバーを介して変更する必要があります。

さらに、etcd の高可用性と一貫性を確保するには、複数の etcd ノードを Kubernetes クラスターで使用し、適切に構成および管理する必要があります。

つまり、etcd は Kubernetes の非常に重要なコンポーネントであり、Kubernetes クラスターのすべての構成データとステータス情報を格納する役割を果たします

etcd の概念、利点、原則、および使用法を理解することは、Kubernetes を学習して使用するために非常に重要です。

etcd を 1 つの文に要約します。

etcd は、すべての構成データを Kubernetes クラスターに格納するために使用できる永続的な分散キー値ストアです。

etcd は今日はここで終わります。

おすすめ

転載: blog.csdn.net/weixin_36755535/article/details/130196049