k8sコアコンポーネントの動作メカニズム図
1.マスター
マスターはクラスター制御ノードを指します。各 Kubernetes クラスターには、クラスター全体の管理と制御を担当するマスターが必要です。基本的に、Kubernetes のすべての制御コマンドはマスターに送信されます。特定の実行プロセスを担当します。すべてのコマンドは基本的にマスター上で実行されます。
マスター上で実行されるコアコンポーネント:
Kubernetes APIサーバー(kube-apiserver):
HTTP Rest インターフェイスを提供するキー サービス プロセスは、Kubernetes のすべてのリソースの追加、削除、変更、確認などの操作の唯一のエントリ ポイントであり、クラスタ制御のエントリ プロセスでもあります。
Kubernetesコントローラーマネージャー(kube-controller-manager):
Kubernetes のすべてのリソース オブジェクトの自動化されたコントロール センターは、リソース オブジェクトの「ジェネラル マネージャー」として理解できます。
Kubernetesスケジューラ(kube-scheduler):
リソースのスケジューリングを担当するプロセス(Pod スケジューリング)は、バス会社の「配車室」に相当します。
二、Node
ノードは Kubernetes クラスター内のワークロード ノードです。各ノードにはマスターによってワークロード (Docker コンテナ) が割り当てられます。ノードがダウンすると、そのノード上のワークロードはマスターによって自動的に他のノードに転送されます。
ノード上で実行されるコアコンポーネント:
kubelet:ポッドに対応するコンテナの作成、起動、停止などのタスクを担当し、マスターと緊密に連携してクラスター管理の基本機能を実装します。
kube-proxy: Kubernetes Service の通信および負荷分散メカニズムを実装する重要なコンポーネント。
3. など
etcd の関係者は、これをクラスター全体のステータスを保存する信頼できる分散キー/値ストレージ サービスとして位置づけており、分散クラスター全体の一部のキー データを保存し、分散クラスターの通常の動作を支援します。
4.ポッド
ポッドは Kubernetes の最も重要な基本概念であり、各ポッドには「ルート コンテナ」と呼ばれる特別な一時停止コンテナがあることがわかります。Pause コンテナに対応するイメージは Kubernetes プラットフォームの一部であり、Pause コンテナに加えて、各ポッドには 1 つ以上の密接に関連するユーザー ビジネス コンテナも含まれています。
5. ラベル
ラベルは、Kubernetes システムのもう 1 つの中心的な概念です。ラベルは、key=value のキーと値のペアであり、キーと値はユーザーによって指定されます。ラベルは、ノード、ポッド、サービス、RC などのさまざまなリソース オブジェクトにアタッチできます。リソース オブジェクトは任意の数のラベルを定義でき、同じラベルを任意の数のリソース オブジェクトに追加することもできます。ラベルは通常、リソース オブジェクトの定義時に決定され、オブジェクトの作成後に動的に追加または削除することもできます。
六、レプリケーションコントローラー(RC)
これは、コンテナ アプリケーションのコピー数が常にユーザー定義のコピー数に維持されることを保証するために使用されます。つまり、コンテナが異常終了した場合、新しい Pod が自動的に作成されて置き換えられます。例外として、余分なコンテナは自動的にリサイクルされます。Kubernetes の新しいバージョンでは、ReplicationControlle の代わりに ReplicaSet を使用することをお勧めします。
7. レプリカセット (RS)
ReplicaSet と ReplicationController の間に本質的な違いはなく、名前が異なるだけであり、ReplicaSet は集合セレクターをサポートしています。ReplicaSet は単独で使用することもできますが、通常は Deployment を使用して ReplicaSet を自動的に管理することを推奨します。他のメカニズムとの互換性がない (ReplicaSet はローリング更新をサポートしていないが、Deployment はサポートしているなど)。
8. 導入
デプロイメントでは、Pod と ReplicaSet の宣言型定義メソッドが提供されます。これは、アプリケーションを簡単に管理するために以前の ReplicationController を置き換えるために使用されます。一般的なアプリケーション シナリオには次のようなものがあります。
1. ポッドとレプリカセットを作成するためのデプロイメントを定義する
2. ローリング アップグレードとロールバックの適用
3. 拡大と縮小
4. 導入の一時停止と再開
9. デーモンセット
DaemonSet は、すべて (または一部) のノードがポッドのコピーを実行していることを保証します。ノードがクラスターに参加すると、ポッドがクラスターに追加されます。ノードがクラスターから削除されると、これらのポッドもリサイクルされます。DaemonSet を削除すると、DaemonSet が作成したすべての Pod が削除されます。
1. 各ノードで glusterd や ceph などのクラスターストレージデーモンを実行します。
2. 各ノードで、fluentd や logstash などのログ収集デーモンを実行します。
3. Prometheus Node Exporter などの監視デーモンを各ノードで実行します。
十、水平ポッド自動スケーリング
水平ポッド自動スケーリングは、Deployment と ReplicaSet にのみ適用されます。V1 バージョンでは、ポッドの CPU 使用率に基づいた拡張と縮小のみがサポートされます。v1alpha バージョンでは、メモリとユーザー定義のメトリックに基づいて拡張と縮小がサポートされます。
11. ステートフルセット
StatefulSet は、ステートフル サービス (ステートレス サービス用に設計された Deployments および ReplicaSet に対応) の問題を解決するように設計されており、そのアプリケーション シナリオには次のものが含まれます。
1. 安定した永続ストレージ。つまり、Pod が再スケジュールされた後も同じ永続データにアクセスでき、PVC に基づいて実装されます。
2. 安定したネットワーク署名。つまり、ポッドが再スケジュールされた後もポッド名とホスト名は変更されず、ヘッドレス サービス (つまり、クラスター IP のないサービス) に基づいて実装されます。
3. 秩序あるデプロイメントと秩序ある拡張、つまりポッドの順序は正しいです。デプロイまたは拡張するときは、定義された順序に従って順番に実行する必要があります (つまり、0 から N-1 まで、以前のすべてのポッドをデプロイする必要があります)次のポッドが実行される前に実行されます。どちらも実行中状態と準備完了状態にあります)、init コンテナーに基づいて実装されます
4. 規則的な縮小と規則的な削除 (つまり、N-1 から 0 0)
12. 仕事
ジョブはバッチ タスク、つまり 1 回だけ実行されるタスクを担当し、バッチ タスクの 1 つ以上のポッドを保証します。
13. クロンジョブ
Cron ジョブは、時間ベースのジョブを管理します。つまり、次のとおりです。
1. 特定の時点で 1 回だけ実行します。
2. 特定の時点で定期的に実行します。
14. 構成マップ
ConfigMap 関数は Kubernetes 1.2 で導入され、多くのアプリケーションは構成ファイル、コマンド ライン パラメーター、または環境変数から構成情報を読み取ります。ConfigMap API は、構成情報をコンテナーに挿入するメカニズムを提供します。ConfigMap を使用して、単一の属性を保存したり、構成ファイル全体または JSON バイナリ ラージ オブジェクトを保存したりできます。
15. 秘密
Secret は、パスワード、トークン、キーなどの機密データをイメージや Pod 仕様に公開することなく、その構成の問題を解決します。Secret は、ボリューム変数または環境変数として使用できます。
16. ボリューム
コンテナー ディスク上のファイルのライフ サイクルは短期間であるため、コンテナー内で重要なアプリケーションを実行するときにいくつかの問題が発生します。まず、コンテナがクラッシュすると、kubelet はコンテナを再起動しますが、コンテナ内のファイルは失われます。コンテナはクリーンな状態 (イメージの元の状態) で再起動されます。次に、複数のコンテナがポッド内で同時に実行されている場合、通常はこれらのコンテナ間でファイルを共有する必要があります。Kubernetes の Volume はこれらの問題をうまく解決します
17. 永続ボリューム (PV)
PersistentVolume は、管理者によって設定されたクラスターの一部であるストレージです。ノードがクラスター内のリソースであるのと同様に、PV もクラスター内のリソースです。PV は Volume と同様のボリューム プラグインですが、PV を使用する Pod から独立したライフサイクルを持ちます。この API オブジェクトには、ストレージ実装 (NFS、iSCSI、またはクラウド ベンダー固有のストレージ システム) の詳細が含まれています。
18. Persistent VolumeClaim (PVC)
PersistentVolumeClaim は、ユーザーが保存したリクエストです。ポッドに似ています。ポッドはノード リソースを消費し、PVC は PV リソースを消費します。ポッドは特定のレベルのリソース (CPU とメモリ) を要求できます。クレームでは、特定のサイズとアクセス モードを要求できます (たとえば、読み取り/追記型または多読み取り専用モードでマウントできます)。
19. サービス
Service は Kubernetes の中核概念であり、Service を作成することで、同じ機能を持つコンテナ アプリケーションのグループに統一されたエントリ アドレスを提供し、バックエンドの各コンテナ アプリケーションへのリクエストの負荷を分散できます。
20. ネームスペース
名前空間は、Kubernetes システムにおけるもう 1 つの非常に重要な概念であり、多くの場合、名前空間はマルチテナント リソースの分離を実現するために使用されます。