Kubernetesアーキテクチャの原則

Kubernetesクラスター(クラスター)は[マスター]と[ノード]で構成され、ノード上で複数のKubernetesサービスが実行されています。

[K8sアーキテクチャの概略図]

 

アーキテクチャの原理分析:

1. [マスターノード]

マスターはKubernetesクラスターの頭脳です。実行中のデーモンサービスには、kube-apiserver、kube-scheduler、kube-controller-managerなどとポッドネットワーク(例:フランネル)が含まれます。

1.1【APIサーバー(be-apiserver)】

API Serverは、HTTP / HTTPS RESTful API、つまりKubernetesAРIを提供します。APIサーバーはKubernetesクラスターのフロントエンドインターフェースです。Kubermetesのさまざまなクライアントツール(CLIまたはUI)およびその他のコンポーネントは、それを介してクラスターのさまざまなリソースを管理できます。

1.2【スケジューラー(kube -scheduler)】

スケジューラーは、ポッドを実行するノードを決定する責任があります。スケジューラーは、クラスターのトポロジー、各ノードの現在の負荷、およびスケジューリング時に高可用性、パフォーマンス、およびデータ親和性に関するアプリケーションの要件を完全に考慮します。

1.3【コントローラーマネージャー(kube-コントローラー-マネージャー)】

Contoller Managerは、クラスターのさまざまなリソースを管理し、リソースが期待される状態にあることを確認する責任があります。ContollerManagerは、レプリケーションコントローラー、エンドポイントコントローラー、名前空間コントローラー、serviceaccountsコントローラーなどを含む複数のコントローラーで構成されます。

さまざまなコントローラーがさまざまなリソースを管理します。たとえば、レプリケーションコントローラーはDeployment、StatefulSet、およびDaemonSetのライフサイクルを管理し、名前空間コントローラーは名前空間リソースを管理します。

1.4【etcd】

etcdは、Kubernetesクラスターの構成情報とさまざまなリソースのステータス情報を保存する役割を果たします。データが変更されると、etcdはKubernetes関連のコンポーネントにすばやく通知します。

1.5 [ポッドネットワーク]

ポッドは、Kubernetesスケジューリングの最小単位です。ポッドには1つ以上のコンテナーを含めることができるため、ポッドは内部コンテナーの論理ホストと見なすことができます。ポッドの設計コンセプトは、ポッド内のネットワークとファイルシステムを共有するために複数のコンテナをサポートすることです。したがって、ポッド内の複数のコンテナは次のリソースを共有します。

  • PID名前空間:ポッド内のさまざまなアプリケーションは、他のアプリケーションのプロセスIDを見ることができます。
  • ネットワーク名前空間:ポッド内の複数のコンテナーは同じネットワーク名前空間にあるため、アクセスできるIPとポートの範囲は同じです。ローカルホストを介して相互にアクセスすることもできます。
  • IPC名前空間:ポッド内の複数のコンテナーが内部プロセス通信名前空間を共有するため、プロセス間通信はSystemVIPCまたはPOSIXを介して実行できます。
  • UTS名前空間:ポッド内の複数のコンテナーが同じホスト名を共有します。
  • ボリューム:ポッド内の各コンテナーは、ポッドで定義されたストレージボリューム(ボリューム)を共有できます。

ポッドが相互に通信できるようにするには、Kubernetes Clusterがポッドネットワークをデプロイする必要があり、フランネルはオプションの1つです。

上記は[K8s-Master]で実行されているコンポーネントです。以下で、[K8s-Node]について説明します。

 

2. [ノードノード]

ノードはポッドが実行される場所です。KubernetesはDockerやrktなどのコンテナランタイムをサポートしています。ノードで実行されているKubernetesコンポーネントは、kubelet、kube-proxy、およびPodネットワーク(例:フランネル)です。

2.1【クベレット】

kubeletは、ノード上のマスターのエージェントです。スケジューラーがノード上でポッドを実行することを決定すると、ポッドの特定の構成情報(イメージャー、ボリュームなど)をノードのkubeletに送信します。次に、kubeletはこの情報に基づいてコンテナを作成して実行し、実行ステータスをマスターに報告します。

2.2【久部プロキシ】

サービスはバックエンドで複数のポッドを論理的に表し、外部はサービスを介してポッドにアクセスします。サービスが受信したリクエストはどのようにポッドに転送されますか?これはkube-proxyが完了する必要のある作業です。ノードノードにポッドネットワークプロキシを実装し、ネットワークルールと4層の負荷分散を維持します。

各ノードはkube-proxyサービスを実行します。このサービスは、サービスにアクセスするTCP / UPDデータストリームをバックエンドコンテナに転送する役割を果たします。複数のコピーがある場合、kube-proxyは負荷分散を実現します。

2.3 [ポッドネットワーク]

ポッドが相互に通信できるようにするには、Kubernetes Clusterがポッドネットワークをデプロイする必要があり、フランネルはオプションの1つです。

2.4【コンテナエンジン】

DockerまたはRocketコンテナエンジン、実行中のコンテナ(コンテナ)。

上記は[K8s-Node]で実行されているコンポーネントです。

 

3. [Etcdアーキテクチャの概要]

etcdのアーキテクチャ図から、etcdは主に4つの部分に分かれていることがわかります。

  • HTTPサーバー:ユーザーから送信されたAPIリクエストと、他のetcdノードの同期およびハートビート情報リクエストを処理するために使用されます。
  • ストア:データのインデックス作成、ノードステータスの変更、監視とフィードバック、イベントの処理と実行など、etcdでサポートされるさまざまな関数を処理するために使用されます。これは、etcdによってユーザーが提供するほとんどのAPI関数の特定の実装です。
  • Raft:Raftの強力な整合性アルゴリズムの特定の実装はetcdの中核です。
  • WAL:先行書き込みログ(先行書き込みログ)は、etcdのデータ保存方法です。etcdは、すべてのデータの状態とノードのインデックスをメモリに保存することに加えて、永続的な保存にWALを使用します。WALでは、すべてのデータは送信前に事前にログに記録されます。スナップショットは、過剰なデータを防ぐために作成された状態スナップショットです。エントリは、保存されている特定のログコンテンツを表します。

通常、ユーザーのリクエストは送信され、特定のトランザクション処理のために[HTTPサーバー]を介して[ストア]に転送されます。ノードの変更が含まれる場合は、ステータス変更のために[ラフト]モジュールに渡され、ログレコード。次に、他の[etcdノード]と同期してデータの送信を確認し、最後にデータを送信して再度同期します。

注:k8sクラスターではEtcdv3.0バージョンを使用することをお勧めします。v2バージョンはk8sv1.11で非推奨になりました。

 

4. [k8sその他のコンポーネント]

 

【簡単なまとめ】

  • K8sの公式コンポーネント:
  1. APIサーバー:すべてのサービスアクセスのための統一された入り口(大きなプレッシャー)。
  2. ControllerManage:ポッドコピーの予想数を維持します。
  3. スケジューラー:スケジューラー。タスクの受信を担当し、タスクの割り当てに適切なノードノードを選択します。
  4. ETCD:C / S構造化分散KVストレージシステム(キーと値のペアデータベース)。すべての重要な情報をk8sクラスターに保存します(データは保持され、k8sクラスターはデータを復元することで復元できます)。
  5. Kubelet:コンテナエンジンと直接対話して、コンテナのライフサイクル管理を実現します。
  6. Kube-proxy:サービスマッピングアクセスを実装するためにIPTABLESとIPVSにルールを書き込む責任があります。
  • k8sその他のコンポーネント:
  1. CoreDNS:クラスター内のSVCのドメイン名IP対応解決を作成できます。
  2. ダッシュボード:k8sクラスターにB / S構造アクセスシステムを提供します。
  3. Ingress Controller:k8sはデフォルトで4層プロキシのみを実装でき、INGRESSは7層プロキシを実装できます。
  4. フェデレーション:クラスターセンター間でマルチk8を実行できる統合管理機能を提供します。
  5. Prometheus:k8sクラスターモニタリング機能を提供します。
  6. ELK:k8sクラスターログに統合された分析および介入プラットフォームを提供します。

【ETCDリファレンス】

おすすめ

転載: blog.csdn.net/ChaITSimpleLove/article/details/106173853
おすすめ