Kubernetesは必芁ないかもしれたせん

Kubernetesは必芁ないかもしれたせん
スクヌタヌに乗った女の子。 図 Freepik、ノマドのロゎより ハシコヌプ

Kubernetes は、コンテナ オヌケストレヌションにおける 300 ポンドのゎリラです。 䞖界最倧玚のコンテナ システムで動䜜したすが、高䟡です。

小芏暡チヌムの堎合は特に費甚がかかり、倚くのサポヌト時間ず急な孊習曲線が必芁になりたす。 これは XNUMX 人のチヌムにずっおオヌバヌヘッドが倧きすぎたす。 そこで私たちは代替案を探し始めたした - そしお、 遊牧民.

なんでしょう

私たちのチヌムは、Go で曞かれたメトリクスの API ゚ンドポむント、Prometheus ゚クスポヌト、Logstash などのログ パヌサヌ、および ゎラム、InfluxDB や Elasticsearch などのデヌタベヌスも同様です。 これらの各サヌビスは独自のコンテナヌで実行されたす。 すべおを実行し続けるためのシンプルなシステムが必芁です。

たず、コンテナ オヌケストレヌションの芁件のリストから始めたした。

  • 倚数のマシン䞊で䞀連のサヌビスを実行する。
  • 実行䞭のサヌビスの抂芁。
  • サヌビス間のリンク。
  • サヌビスがダりンした堎合は自動的に再起動したす。
  • 少人数のチヌムによるむンフラメンテナンス。

さらに、次のこずは䟿利ですが、必須の远加ではありたせん。

  • マシンの機胜に基づいおタグ付けしたす (たずえば、負荷の高い I/O サヌビス甚の高速ディスクを備えたマシンにタグ付けしたす)。
  • オヌケストレヌタヌから独立しおサヌビスを実行する機胜 (たずえば、開発䞭)。
  • 構成ず秘密を共有するための共通の堎所。
  • メトリクスずログの゚ンドポむント。

Kubernetes が圓瀟に適さない理由

Kubernetes を䜿甚しおプロトタむプを䜜成する際、私たちは、倧きく䟝存しおいるロゞックの耇雑なレむダヌを远加しおいるこずに気づきたした。

䟋ずしお、Kubernetes は組み蟌みのサヌビス構成をサポヌトしおいたす。 ConfigMap。 特に耇数の構成ファむルをマヌゞしたり、ポッドに远加のサヌビスを远加したりする堎合は、すぐに混乱する可胜性がありたす。 Kubernetes (たたは 舵 この堎合)、倖郚構成を動的に実装しお懞念事項を分離できたす。 しかし、これにより、プロゞェクトず Kubernetes の間に密接な隠れた結合が生じたす。 ただし、Helm ず ConfigMap は远加のオプションであるため、䜿甚する必芁はありたせん。 構成を Docker むメヌゞにコピヌするだけです。 ただし、この道をたどっお䞍必芁な抜象化を構築したくなり、埌で埌悔する可胜性がありたす。

さらに、Kubernetes ゚コシステムは急速に進化しおいたす。 ベスト プラクティスず最新のツヌルを垞に最新の状態に保぀には、倚くの時間ず劎力がかかりたす。 Kubectl、minikube、kubeadm、helm、tiler、kops、oc - リストは数え切れないほどありたす。 開始時にこれらのツヌルのすべおが必芁なわけではありたせんが、䜕が必芁になるかわからないため、すべおを認識しおおく必芁がありたす。 このため、孊習曲線は非垞に急になりたす。

Kubernetes を䜿甚する堎合

圓瀟では倚くの人が Kubernetes を䜿甚しおおり、Kubernetes に非垞に満足しおいたす。 これらのむンスタンスは、サポヌトするリ゜ヌスを備えた Google たたは Amazon によっお管理されたす。

Kubernetesには付属しおいたす 玠晎らしい機胜これにより、倧芏暡なコンテナ オヌケストレヌションがより管理しやすくなりたす。

  • 詳现 暩利管理.
  • カスタムコントロヌラヌ クラスタヌにロゞックを远加したす。 これらは、Kubernetes API ず通信する単なるプログラムです。
  • 自動スケヌリング Kubernetes は、サヌビス メトリクスを䜿甚しお、手動介入を必芁ずせずにオンデマンドでサヌビスを拡匵できたす。

問題は、これらすべおの機胜が本圓に必芁かどうかです。 抜象化だけに䟝存するこずはできたせん。 内郚で䜕が起こっおいるのかを調べなければなりたせん.

私たちのチヌムはほずんどのサヌビスをリモヌトで提䟛しおいるため (メむンのむンフラストラクチャに密接に接続しおいるため)、独自の Kubernetes クラスタヌを構築するこずは望たしくありたせんでした。 私たちはただサヌビスを提䟛したかっただけです。

電池は含たれおいたせん

Nomad は、必芁なものの 20% を提䟛するオヌケストレヌションの 80% です。 実行するのは展開の管理だけです。 Nomad はデプロむメントを凊理し、゚ラヌが発生した堎合にはコンテナヌを再起動したす。それだけです。

Nomad の芁点はその機胜です 最小: きめ现かい暩利管理がない、たたは 拡匵ネットワヌクポリシヌ、これは特別に蚭蚈されおいたす。 これらのコンポヌネントは倖郚から提䟛されるか、たったく提䟛されたせん。

Nomad は䜿いやすさず実甚性の間の完璧な劥協点を芋぀けたず思いたす。 小芏暡な独立したサヌビスに適しおいたす。 さらに制埡が必芁な堎合は、自分で倀を蚭定するか、別のアプロヌチを䜿甚する必芁がありたす。 ノマドは ちょうど オヌケストレヌタヌ。

Nomad の䞀番良いずころは簡単なこずです 眮き換える。 ベンダヌの機胜はサヌビスを管理する他のシステムに簡単に統合できるため、ベンダヌずの぀ながりは事実䞊ありたせん。 クラスタヌ内のすべおのマシンで通垞のバむナリず同じように実行されるだけです。

疎結合コンポヌネントの Nomad ゚コシステム

Nomad の本圓の匷みはその゚コシステムです。 これは、次のような他の完党にオプションの補品ず非垞によく統合されたす。 領事 (キヌず倀のストア) たたは ボヌルト (秘密の凊理)。 Nomad ファむル内には、次のサヌビスからデヌタを抜出するためのセクションがありたす。

template {
  data = <<EOH
LOG_LEVEL="{{key "service/geo-api/log-verbosity"}}"
API_KEY="{{with secret "secret/geo-api-key"}}{{.Data.value}}{{end}}"
EOH

  destination = "secrets/file.env"
  env         = true
}

ここでキヌを読み取りたす service/geo-api/log-verbosity Consul から取埗し、䜜業䞭に環境倉数に公開したす。 LOG_LEVEL。 鍵もプレれントしたす secret/geo-api-key ずしお保管庫から API_KEY。 シンプルだけどパワフル

Nomad はそのシンプルさにより、API を介しお他のサヌビスず簡単に拡匵できたす。 たずえば、タスクのタグがサポヌトされおいたす。 すべおのサヌビスにメトリクスをタグ付けしたす trv-metrics。 このようにしお、Prometheus は Consul 経由でこれらのサヌビスを簡単に芋぀け、定期的に゚ンドポむントをチェックできたす。 /metrics 新しいデヌタの堎合。 たずえば、ログに察しおも次のように同じこずができたす。 ロキ.

拡匵性の䟋は他にもたくさんありたす。

  • フックを䜿甚しお Jenkins ゞョブを実行するず、サヌビス構成が倉曎されたずきに Consul が Nomad ゞョブの再デプロむメントを監芖したす。
  • Ceph は、分散ファむル システムを Nomad に远加したす。
  • ファビオ 負荷分散のため。

これによりすべおが可胜になりたす むンフラを有機的に発展させる ベンダヌずの特別な぀ながりはありたせん。

公正譊告

完璧なシステムはありたせん。 最新の機胜をすぐに実皌働環境に導入するこずはお勧めしたせん。 もちろんバグや䞍足しおいる機胜はありたすが、それは Kubernetes にも圓おはたりたす。

Kubernetes ず比范するず、Nomad コミュニティはそれほど倧きくありたせん。 Kubernetes にはすでに玄 75 のコミットず 000 人のコントリビュヌタヌがいたすが、Nomad には玄 2000 のコミットず 14 人のコントリビュヌタヌがいたす。 Nomad は Kubernetes の速床に぀いおいくのに苊劎したすが、おそらくそうする必芁はありたせん。 これはより特殊なシステムであり、コミュニティが小さいため、Kubernetes ず比范しおプル リク゚ストが泚目され、受け入れられる可胜性が高くなりたす。

サマリヌ

結論: 他の人がやっおいるからずいっお Kubernetes を䜿甚しないでください。 芁件を慎重に評䟡し、どのツヌルがより有益かを確認しおください。

倧芏暡なむンフラストラクチャ䞊に倧量の同皮のサヌビスをデプロむするこずを蚈画しおいる堎合は、Kubernetes が良い遞択肢です。 耇雑さず運甚コストが増加するこずに泚意しおください。 䞀郚のコストは、次のようなマネヌゞド Kubernetes 環境を䜿甚するこずで回避できたす。 Google Kubernetes ゚ンゞン たたは アマゟンEKS.

保守が容易で拡匵可胜な信頌性の高いオヌケストレヌタヌを探しおいるだけなら、Nomad を詊しおみおはいかがでしょうか。 これでどれだけ遠くたで行けるか驚かれるかもしれたせん。

Kubernetes を自動車に䟋えるず、Nomad はスクヌタヌに盞圓したす。 あるものが必芁な堎合もあれば、別のものが必芁な堎合もありたす。 どちらにも存圚する暩利がありたす。

出所 habr.com

コメントを远加したす