1. クラスターのアーキテクチャとコンポーネント
1. 関連コンポーネント
[1] マスターノードの 3 つのコンポーネント
- k8s 制御ノードは、クラスターのスケジュールと管理を行い、クラスター外部のユーザーからのクラスターを操作するリクエストを受け入れます。
- マスターノード構成 (4 つのコンポーネント): コントロール プレーン
- API Server:通信
- Kube-Scheduler: スケジューリング アルゴリズムを通じてポッドをノード (サーバー) に分散するスケジューリング
- クラスター状態ストア (ETCD データベース) / 分散キー値ストレージ
- コントローラーマネージャーサーバー: リソース
[2] ワーカーノードの 3 つのコンポーネント: ユーザープレーン
- クラスター動作ノード、ユーザー ビジネス アプリケーション コンテナー 1 を実行
- ワーカーノードの構成 (3 つのコンポーネント)
- kubelet: ポッドのライフサイクル、ストレージ、ネットワーク管理を担当するワーカー側の管理ツール
- kube プロキシ: ネットワーク プロキシ、転送パスの設定、サービス ディスカバリを担当します (ここでは内部サービスのディスカバリ、外部サービスのディスカバリはイングレスです)、ロード バランシング (4 層負荷)
- コンテナ ランタイム: コンテナを作成するソフトウェア
【3】アドオン
- ビー-DNS
- イングレス コントローラー: サービスに外部ネットワーク エントリを提供します (外部サービスの検出)
1. 階層構造
【1】生態管理
【2】界面層
【3】マネジメント
【4】アプリケーション層
【5】コア層
高度なアプリケーションを構築するためのAPIを外部に提供し、プラグインアプリケーションの実行環境を内部に提供
2. 中心となる概念と用語
1. サービスの分類
[1] ステートレス
- 代表的なアプリケーション: nginx、aoache
- メリット:顧客への依存がなく、効率的に拡張・移行が実現できる
- 欠点: データを保存できないため、追加のデータ サービスのサポートが必要です
[2] ステートフル
- 代表的なアプリケーション: MySQL、redis
- メリット:データを独立して保存でき、データ管理が実現できる
- デメリット: クラスタ環境では、マスター/スレーブ、データの同期、バックアップ、水平拡張が複雑
2. リソースの分類
[1] メタデータの種類: リソースのメタデータの説明には、各リソースがメタスペース内のデータを使用できます。
- 水平ポッド オートスケータ (HPA): ポッドは自動的に拡張され、CPU 使用率またはカスタム インジケーター (メトリクス) に応じてポッドを拡張または縮小できます。
- PodTeplate: ポッドの定義に関するポッド テンプレート
- LimitRange: クラスター内のリソースを制限します。これは、ポッドのリソース使用制限を特定の範囲 (名前空間) 内でバッチで設定することと同等です。
[2] クラスターレベルのリソース: クラスター上で動作し、クラスター下のすべてのリソースを共有して使用できます。
- 名前空間
- ノード: ノード、サーバーに相当
- ClusterRole: クラスターの権限を管理するために使用されます。
- ClusterRoleBinding: 上記のロールをリソースにバインドするために使用されます (バインドできるのはクラスター レベルのリソース オブジェクトのみです)。
[3] 名前空間レベルのリソース: 名前空間に作用し、通常は名前空間のスコープ内でのみ使用できます。
- ワークロード ポッド: コンテナ グループとみなすことができます。ポッド内に複数のコンテナを含めることができ、ポッド内のコンテナを管理できます。デプロイ可能な最小単位です。
ポッドには、アプリケーション コンテナー (または複数)、ストレージ リソース、一意のネットワーク IP アドレス、およびコンテナーの実行方法を決定するいくつかのオプションが含まれています。ポッド コンテナー グループは、k8s で実行されている独立したアプリケーションのインスタンスを表します。これは、単一のコンテナーまたは密結合された複数のコンテナーで構成されます。
[1] レプリカ: ポッドを複数に複製できます。コピーされないものはコピーです。
【2】コントローラー
- ステートレス サービスに適用: RC、RS、デプロイメント
- 該当するステートフル サービス: StatefuiSet
- DaeminSet: DaeminSet は、各ノードでコンテナーのコピーを実行することを保証します。これは、一部のクラスター ログ、監視、またはその他のシステム管理アプリケーションをデプロイするためによく使用されます。
- タスク/スケジュールされたタスク: ジョブ (1 回限りのタスク、完了後にコンテナを再起動しない)、CroJob (定期的に実行されるタスク、ジョブに基づいたタイミング機能を追加)
- サービスディスカバリ
- サービス:k8sクラスタ内でのネットワーク呼び出し、ロードバランシング(4層負荷)、水平トラフィックを実現
- ingress : k8s クラスターの内部サービスを外部ネットワーク アクセス (ingress-nginx リバース プロキシ、7 層負荷)、垂直トラフィックに公開するサービス
- 保管所
- volume : ストレージ ボリューム。Pod 内のコンテナによって使用される共有データ。データベース データなどの永続的なバースを保存するために使用されます。
- CSI
- 特殊なタイプの構成
- configmap : クラスター構成ファイル、データ説明、データ ボリューム。暗号化せずにさまざまなポッドにマウントでき、環境変数としても使用できます。
- Secret : 暗号化、sha256 暗号化。証明書を保存し、イメージ証明書のパスワードを取得するために使用されます
- 下向きAPI:
- 他の
- 役割: 一連の名前空間に対する権限を定義します。
- 役割バインディング
3. リソースリスト
4. オブジェクトの仕様と状態
【1】法定スペック
Spec は必須であり、オブジェクトの望ましい状態 (望ましいステータス) とオブジェクトに関するいくつかの基本情報を記述します。
【2】ステータス
オブジェクトの実際の状態、この属性は K8S 自体によって維持され、オブジェクトの実際の状態が期待される状態に可能な限り一致するように、k8s は一連のコントローラーを通じてオブジェクトを管理します。