web-dev-qa-db-ja.com

単一のサーバーでKubernetesを実行することは理にかなっていますか?

私はDockerを使用しています。Traefik(* .dev.domain.com)とDocker Composeテンプレートを使用して、Gitブランチに基づいて環境を(単一サーバーに)展開するシステムを実装しました。

私はKubernetesが好きですが、インフラストラクチャのサーバーは1つに制限されているため、切り替えたことがありません。私はローカルインストール(Docker for Windows)を使用してのみ使用しました。

したがって、私の質問は、単一のサーバーでKubernetes "クラスター"(マスターとノード)を実行して、コンテナーをオーケストレーションおよびルーティングする(Traefik/Rancher/Docker Composeの代わりに)のは理にかなっていますか。

この使用は、現時点では開発とステージングのみを目的としているため、高可用性は必須ではありません。

ありがとう。

9
Florian Lopes

運用環境でない場合は、使用しているノードの数は関係ありません。つまり、この場合は問題ありません。ただし、同様の移植性を維持するために、productionで必要となるすべてのk8s機能がtest/devで利用可能であることを確認してください。

1
Ijaz Ahmad Khan

AFAIU、

ネイティブdocker runまたはdocker-composeまたはdocker engine swarm modeを使用する単一のホストについて少なくとも以下を実行しない限り、kubernetesの要件は表示されません-

  • 単一のサーバーにアプリの十分な数のレプリカ(> = 2)があり、それらのアプリDockerコンテナー間で負荷を分散していることを確認してください。
  • 少し高度にしたい場合は、動的にスケールアップおよびスケールダウンできるはずです(Docker Swarmモードはこれをそのまま使用できるため、jwilder nginx proxyを使用します)。
  • デプロイメントによってダウンタイムが発生することはありません。デプロイ中のどの瞬間でも、単一のコンテナが常に正常であることを確認してください。
  • HTTPまたはTCPヘルスチェックが失敗した場合に備えて、コンテナは自動修復(自動的に再起動)する必要があります。
  • 上記のすべてを実行すると、確実により良い場所に配置されますが、単一のホストは、定期的な間隔で対処しなければならない障害の単一の原因です。
  • 推奨:可能であれば、docker engine swarm modeまたはkubernetes single masterまたはminikubeから始めてください。これにより、上記のすべてのシナリオが自動的に処理され、Docker SwarmまたはkubernetesのYMLファイルに大きな変更を加えることなく、ノードを追加することでいつでもさらにスケールアップできます。

参照-
https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/https://docs.docker.com/engine/swarm/

2
vivekyad4v

試してみる場合、最も簡単なオプションはおそらくminikube(シングルノードクラスターをローカルで実行するのに簡単ですが、一部の機能がない)か、大きなクラウドプロバイダーの1つからのマネージドKubernetesサービスの無料試用アカウントの1つを使用することです(完全な機能を備えたマルチノードですが、支払う前の使用は制限されています)。

0
Ryan Dawson