web-dev-qa-db-ja.com

Kubernetesは実際に何をしますか?

Kubernetes は、コンテナクラスタ「スケジューラ/オーケストレータ」として請求されますが、これが何を意味するのかわかりません。 Kubernetesサイトと(曖昧な)GitHub wikiを読んだ後、Dockerコンテナーを実行できるVMが何であるかを何らかの方法で把握し、そこに展開することがわかります。しかし、それは単なる推測であり、それをサポートするための具体的な詳細はドキュメントにありません。

だから、Kubernetesとは何ですか、exactly、そしてそれが解決するいくつかの特定の問題は何ですか?

116
smeeb

Kubernetesの目的は、多数のマシンにまたがってアプリケーションを簡単に整理およびスケジュールできるようにすることです。高レベルでは、クラスターのオペレーティングシステムです。

基本的に、各アプリケーションが実行されているデータセンター内の特定のマシンについて心配する必要はありません。さらに、これらのマシン間でアプリケーションをヘルスチェックおよび複製するための汎用プリミティブ、およびアプリケーションをマイクロサービスに接続して、アプリケーションの各レイヤーを他のレイヤーから切り離し、スケーリング/更新/メンテナンスできるようにするサービスを提供します独立して。

アプリケーション層でこれらの多くのことを行うことは可能ですが、そのようなソリューションは一回限りのものであり、壊れやすい傾向がありますが、オーケストレーションシステムがアプリケーションの実行方法を心配し、心配している場合は、アプリケーションを構成するコード。

95
brendan

Githubページ から読むと:

Kubernetesは、複数のホストでコンテナ化されたアプリケーションを管理するためのオープンソースシステムであり、アプリケーションの展開、保守、およびスケーリングのための基本的なメカニズムを提供します。

Kubernetesは:

lean: lightweight, simple, accessible
portable: public, private, hybrid, multi cloud
extensible: modular, pluggable, hookable, composable
self-healing: auto-placement, auto-restart, auto-replication

Kubernetesは、Googleでの10年半の経験に基づいて、実稼働ワークロードを大規模に実行し、コミュニティの最高のアイデアと実践を組み合わせて構築しています。

私にとって、KubernetesはGoogleのコンテナオーケストレーションツールです。その設計により、任意のコンテナエンジンとの互換性を実装できますが、今ではDockerに限定されていると思います。そのアーキテクチャにはいくつかの重要な概念があります。

Kubernetesは次の概念で機能します。

クラスターは、コンテナが構築される計算リソースです。 Kubernetesはどこでも実行できます!さまざまなサービスの手順については、入門ガイドを参照してください。

ポッドは、共有ボリュームを持つDockerコンテナの同じ場所にあるグループです。 Kubernetesで作成、スケジュール、管理できる最小の展開可能なユニットです。ポッドは個別に作成できますが、単一のポッドを作成する場合でも複製コントローラーを使用することをお勧めします。ポッドの詳細。

複製コントローラーは、ポッドのライフサイクルを管理します。必要に応じてポッドを作成または強制終了することにより、指定された数のポッドが常に実行されるようにします。レプリケーションコントローラーの詳細。

サービスは、一連のポッドに単一の安定した名前とアドレスを提供します。基本的なロードバランサーとして機能します。サービスの詳細。

ラベルは、キーと値のペアに基づいてオブジェクトのグループを整理および選択するために使用されます。ラベルの詳細。

したがって、コンテナを実行するクラスターを形成するマシンのグループがあります。 Yoは、figなどの他のツールで行うのと同様の方法で、サービスを提供するコンテナのグループを定義することもできます(つまり、webappポッドはRailsサーバーおよびpostgresデータベースにすることができます)。また、同時に実行されるサービスのコンテナ/ポッドの数、キーバリューストア、組み込みのロードバランサーの種類を保証する他のツールもあります...

Coreosについて何か知っている場合、これは非常によく似たソリューションですが、Googleによるものです。 Algo Kubernetesは、Google Cloud Engineと良好に統合されています。

14

Kubernetesは、Infrastructure as a Service APIとほぼ同じ機能を提供しますが、仮想マシンではなく動的にスケジュールされたコンテナー、およびPlatform as a Serviceシステムを対象としていますが、次のような柔軟性があります。

  • ストレージシステムの取り付け、
  • 秘密の配布、
  • アプリケーションヘルスチェック、
  • アプリケーションインスタンスの複製
  • 水平方向の自動スケーリング、
  • 命名と発見、
  • 負荷分散、
  • ローリング更新、
  • リソース監視、
  • ログのアクセスと取り込み、
  • イントロスペクションとデバッグのサポート、および
  • アイデンティティと認可。

サービス検出、秘密分散、負荷分散、監視などの他のメカニズムを既に使用している場合は、もちろんそれらを引き続き使用できますが、これを提供することにより、既存のIaaSおよびPaaSシステムからKubernetesへの移行を容易にすることを目指しています機能。

https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/#why-do-i-need-kubernetes-and-what-c​​an-it-do

7
briangrant