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の公式コンポーネント:
- APIサーバー:すべてのサービスアクセスのための統一された入り口(大きなプレッシャー)。
- ControllerManage:ポッドコピーの予想数を維持します。
- スケジューラー:スケジューラー。タスクの受信を担当し、タスクの割り当てに適切なノードノードを選択します。
- ETCD:C / S構造化分散KVストレージシステム(キーと値のペアデータベース)。すべての重要な情報をk8sクラスターに保存します(データは保持され、k8sクラスターはデータを復元することで復元できます)。
- Kubelet:コンテナエンジンと直接対話して、コンテナのライフサイクル管理を実現します。
- Kube-proxy:サービスマッピングアクセスを実装するためにIPTABLESとIPVSにルールを書き込む責任があります。
- k8sその他のコンポーネント:
- CoreDNS:クラスター内のSVCのドメイン名IP対応解決を作成できます。
- ダッシュボード:k8sクラスターにB / S構造アクセスシステムを提供します。
- Ingress Controller:k8sはデフォルトで4層プロキシのみを実装でき、INGRESSは7層プロキシを実装できます。
- フェデレーション:クラスターセンター間でマルチk8を実行できる統合管理機能を提供します。
- Prometheus:k8sクラスターモニタリング機能を提供します。
- ELK:k8sクラスターログに統合された分析および介入プラットフォームを提供します。
【ETCDリファレンス】
-
[etcdシリーズの詳細な理解] 1。アーキテクチャの概要= " https://zhuanlan.zhihu.com/p/73659512
-
[Etcd:アプリケーションシナリオから実装原則までの包括的な解釈] = " https://www.infoq.cn/article/etcd-interpretation-application-scenario-implement-principle/
-
【ETCD原理】=》https://www.cnblogs.com/panpanwelcome/p/8242418.html
- おすすめの本:[etcdテクニカルインサイダー] = " https://item.jd.com/43174660318.html