1.k8sとは何ですか?
Kubernetes (k8s と呼ばれます) は、クラウド ネイティブ デプロイメントをサポートするプラットフォームです。K8s は基本的に、マイクロサービスの開発とデプロイメントを簡素化するために使用されます。これは、コンテナ化されたアプリケーションのデプロイメント、拡張、管理を自動化するために使用されるオープンソースのコンテナ オーケストレーション テクノロジです。従来の Docker は実際にはコンテナ オーケストレーション テクノロジ docker-compose も提供しますが、docker-compose は 1 つのホスト上のコンテナのみを管理できますが、k8s は複数のホスト上のコンテナを管理できます。
2. アプリケーションの導入方法の変更
2.1. 従来のデプロイメント (リソースは分離されていません):
利点: シンプルで他のテクノロジーは必要ありません。
短所: アプリケーションのリソース使用量の境界を定義できない、コンピューティング リソースを合理的に割り当てることが困難、プログラムの影響を受けやすい 特定のプロセスに多数のユーザーがアクセスすると、サーバー リソースの偏在が発生し、サーバー リソースの競合が発生します。リソース。
2.2. 仮想化の導入 (1 台の物理マシン上で複数の仮想マシンを実行、過剰な仮想化):
利点: プログラム環境は相互に影響を及ぼさないため、ある程度のセキュリティが提供されます。
欠点: オペレーティング システムの追加と一部のリソースの無駄
2.3. コンテナ化された展開 (仮想化に似ていますが、オペレーティング システムを共有します):
利点: 各コンテナーに独自のファイル システム、CPU、メモリ、プロセス スペースなどが確保され、アプリケーションの実行に必要なリソースがコンテナー内にパッケージ化され、基盤となるインフラストラクチャから切り離されます。
3. k8sの特徴
(1) 自己修復: コンテナがクラッシュすると、約 1 秒以内に新しいコンテナを迅速に起動できます。
(2) 柔軟なスケーリング: クラスタは自動的に調整可能必要に応じて、実行中のコンテナの数を調整します
(3) サービス検出: サービスは、自動検出を通じて依存するサービスを見つけることができます
(4) 負荷分散: サービスが複数のコンテナを起動すると、リクエストの負荷分散を自動的に実現できます
(5) バージョンのロールバック: 新しくリリースされたプログラムのバージョンに問題が見つかった場合は、すぐに元のバージョンにロールバックできます。バージョン
(6) ストレージ オーケストレーション: コンテナ自体のニーズに応じてストレージ ボリュームを自動的に作成できます
4. コンテナ管理アーキテクチャのアップグレード
4.1.ボーグアーキテクチャ
4.2.kubernetアーキテクチャ
5. K8S アーキテクチャの解釈
5.1.マスターノード: クラスターのコントロールプレーンであり、クラスターの意思決定 (管理) を担当します。
(1) ApiServer: リソース操作の唯一の入り口であり、ユーザーが入力したコマンドを受け取り、認証、認可、API の登録、検出などのメカニズムを提供します。
(2) スケジューラ: クラスター リソースのスケジューリングと、事前に決定されたスケジューリング ポリシーに従って、対応するノード ノードへの Pod のスケジューリングを担当します。
(3) ControllerManager: プログラムのデプロイメントの手配、障害の検出、自動拡張、ローリングアップデートなど、クラスターのステータスを維持する責任を負います。
(4) etcd: クラスター内のさまざまなリソース オブジェクトに関する情報を保存します。
5.2.node ノード: クラスターのデータプレーン。コンテナーに動作環境 (作業) を提供する役割を果たします。
(1) Kubelet: コンテナのライフサイクル、ストレージ、ネットワークの保守を担当します。
(2) KubeProxy: クラスター内でのサービス検出と負荷分散の提供を担当します。
(3) Docker: ノード上のコンテナのさまざまな操作を担当し、コンテナの実行環境として機能します。
(4) Pod: 1 つのノードに複数の Pod をデプロイでき、1 つの Pod に複数のコンテナをデプロイできます。