DUICUO

Kubernetes アーキテクチャ設計とコアコンポーネントワークフロー

Kubernetesは、Googleが開発したオープンソースのコンテナオーケストレーションエンジンです。そのアーキテクチャと設計は、Google社内で使用されているスケジューリングツールであるBorgから派生しています。Borgは、Google社内で広く使用されている、実績のある大規模クラスタ管理システムです。Linux Container (LXC)テクノロジーをベースとし、アプリケーション指向のコンテナクラスタ展開・管理システムを提供します。Kubernetesは、物理/仮想コンピューティング、ネットワーク、ストレージインフラストラクチャのオーケストレーションの負担を軽減し、アプリケーション運用担当者と開発者がコンテナ中心のプリミティブを用いたセルフサービス運用に完全に集中できるようにすることを目的としています。Kubernetesはリソース管理を自動化し、複数のデータセンターにわたるリソース利用率を最大化します。

[[336464]]

Kubernetesは、包括的なコンテナクラスタ管理エンジンです。アプリケーションの迅速な導入と健全な運用を保証するための様々なメカニズムとインターフェースを提供します。豊富なコマンドラインツール(CLI)とAPIインターフェースにより、クラスタとの容易な連携を実現します。同時に、Kubernetesは多層セキュリティ保護と分離メカニズム、マルチテナントアプリケーションのサポート、アプリケーションのライフサイクル管理、スケーラブルな自動リソーススケジューリングメカニズム、多粒度リソースクォータ管理機能、マルチテナント対応のための統合構成管理コンポーネント、そして複数のアベイラビリティゾーンのサポートも提供します。Kubernetesは包括的なコンテナ管理ツールセットを提供し、コンテナクラスタ管理のためのワンストップサービスを提供します。

Kubernetesアーキテクチャ

Kubernetes の全体的なアーキテクチャは次の図に示されています。

Kubernetes は主に次のコア コンポーネントで構成されています。

  • etcd はクラスター全体の状態を保存します。
  • kube-apiserver は、リソース操作の唯一のエントリ ポイントを提供し、認証、承認、アクセス制御、API 登録、および検出のメカニズムを提供します。
  • kube-controller-manager は、障害検出、自動スケーリング、ローリング アップデートなど、クラスターの状態を維持する役割を担います。
  • kube-scheduler はリソースのスケジューリングを担当し、事前定義されたスケジューリング ポリシーに従って適切なマシンに Pod を割り当てます。
  • kubelet は、コンテナのライフサイクルを維持し、ボリューム (CVI) とネットワーク (CNI) を管理する役割を担います。
  • コンテナランタイムは、イメージ管理とポッドおよびコンテナ(CRI)の実際の実行を担当します。デフォルトのコンテナランタイムはDockerです。
  • kube-proxy は、Service のクラスター内でのサービス検出と負荷分散を提供する役割を担います。

コア コンポーネントに加えて、推奨されるアドオンをいくつか紹介します。

  • kube-dns は、クラスター全体に DNS サービスを提供する役割を担います。
  • Ingress コントローラは、サービスに外部ネットワーク エントリ ポイントを提供します。
  • Heapster はリソース監視を提供します。
  • ダッシュボードはGUIを提供する
  • フェデレーションは、可用性ゾーン全体にわたるクラスタリングを提供します。
  • Fluentd-elasticsearch は、クラスター ログの収集、保存、およびクエリを提供します。

次の図は、ポッドを作成するオブジェクトから始まる、さまざまな Kubernetes コンポーネント間の相互作用とワークフローのシーケンスを示しています。