Kubernetesは実際に何をしますか?[閉まっている]


134

Kubernetesはコンテナークラスター「スケジューラー/オーケストレーター」として請求されますが、これが何を意味するのか私にはわかりません。Kubernetesサイトと(漠然とした)GitHub wikiを読んだ後、私が知ることができる最良のことは、Dockerコンテナーを実行できる/使用できるVMが何とかわかり、そこにデプロイされることです。しかし、それは私の推測に過ぎず、それをサポートするためのドキュメントに具体的な言い回しは見たことがありません。

では、正確にはKubernetes とは何か、そしてそれが解決する特定の問題とは何か?


すべてのdocker-worldプロジェクト(kubernetes / fleet / swarm / etc)は、それらが何をして何がそれらを際立たせるかを説明するのが困難であることを考えると、ユーザーが提供できるすべてのことはややうまみのある質問だと思います... 「フリートとkubernetesの違いは何ですか」と質問し、答えは「フリートを使用してkubernetesを起動できる」です。残念。;-)
Torsten Bronger、2015

3
私はそれが完全に有効な質問だと思い、ドコのいくつかの短所を指摘します。幅が広すぎるとしてそれを閉じることは悪いことです。私にとっての最良のアプローチは、k8sコードベースをダウンロードして、そこにあるポッドとは何かなどを調べることです。それは私を大いに助けました。
Beezer

回答:


113

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

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

アプリケーションレイヤーでこれらの多くのことを実行することは可能ですが、そのようなソリューションは1回限りで脆弱になる傾向がありますが、オーケストレーションシステムがアプリケーションの実行方法を心配し、あなたが心配する懸念を分離する方がはるかに良いです。アプリケーションを構成するコード。


3
ありがとう@brendan(+1)-あなたの答えは間違いなく役立ちます。ただし、フォローアップの質問が1つあります。これはApache Mesosが行うことではありませんか?KubernetesとMesosは互いに競合していますか?そうでない場合、それらは互いに協調して使用できますか(そうであれば、どのようにして)?再度、感謝します!
smeeb 2015年

2
@smeeb MesosとKubernetesは互いに補完します(後者はMesosフレームワークとしてサポートされています)。Mesosは、より高度なリソース管理を提供します。言い換えると、KubernetesはMesosに使用可能な容量に基づいて使用するホストを決定させます。Mesosは他のフレームワークをサポートしています。ドキュメントを読むと、MarathonがMesos管理対象サーバークラスターでコンテナーを起動するもう1つの方法であることがわかります。
Mark O'Connor、

18

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は、コミュニティでの最高のアイデアと実践を組み合わせた、大規模な本番ワークロードの実行における10年半の経験に基づいて構築されています。

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

Kubernetesは次の概念で動作します。

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

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

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

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

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

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

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


2
@jcortejoso(+1)に感謝します。ただし、よろしければフォローアップの質問をいくつか受けます。(1) KubernetesはCoreOSに似ているが、Googleからのものだと言っています。これは、KubernetesとCoreOSが同じ問題を解決することを意味します。ただし、[Kubernetesの独自のウェブサイト]()から、CoreOSにKubernetes インストールできると記載されています。どっち?KubernetesはCoreOSと同じですか、またはKubernetesはCoreOSで実行され、特定の問題を解決しますか?
smeeb 2015年

1
また、(2)ここでも、Kubernetesの「オーケストレーション」の値はまだわかりません。あなたは、Kubernetesを使用してサービスを提供するコンテナーのグループを定義することができると述べていますが、これは2つの別々のことを疑問に思っています:(2a)アプリレイヤーでこのタイプのクラスター化を行うだけで、アプリをnginxロードバランサー?(2b)これで「オーケストレーション」はこれだけですか。私にとっても、アプリレイヤーで簡単に実現できる負荷分散のように思えます。考え?素晴らしい答えをありがとう!
smeeb 2015年

1
kubernetesが「軽量」である場合、脂肪の解決策はどうなるのでしょうか。
Torsten Bronger、2015

@smeeb私はnginxにそれほど慣れていません(そのため、私のナイーブを許します)が、nginxがクラッシュしたサーバーを再起動するとは思いません。マシン(またはデータセンター全体)がダウンした場合、nginxは別のマシンでアプリを再起動しません。kubernetesを使用すると、どこかで常にn個の「ポッド」を実行し続けることができます。場所や方法は問題ではありません。
kgreenek

10

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.