2

この質問は何度も議論されているが、私はいくつかのベストプラクティスと下記の各アプローチを使用しての実世界の例を聞きたいのですが:コンテナの準備状況を発見するのに適しているアプローチはどれですか?

依存サービスの健全性をチェックすることができ、容器の設計
  1. 。シンプルなスクリプトwhait-for-itは、この種の開発中のコンテナには便利ですが、より複雑な展開には適していません。たとえば、データベースは接続を受け入れることができますが、移行はまだ適用されていません。

  2. Consul/etcdに自分のステータスを投稿できるようにします。依存するすべてのサービスは、必要なサービスのステータスを含む特定のエンドポイントをポーリングします。素敵に見えますが、冗長に見えますね。

  3. 外部スケジューラによるコンテナの起動順序を管理します。

配布プロセスでSwarm/Kubernetes/etcなどの不在/在席オーケストラのコンテキストで上記のアプローチのどれが望ましいですか?

答えて

3

私はそれらのkubernetesの視点で刺すことができます。

依存サービスの健全性をチェックできるコンテナを設計する。シンプルなスクリプトは、この種の開発中のコンテナには便利ですが、より複雑な展開には適していません。たとえば、データベースは接続を受け入れることができますが、移行はまだ適用されていません。

これは、ライブネスとレディネスを区別したいと思うようです。 Kubernetesではこれらのためにboth types of probesを使用できます。これにより、正常性を確認し、トラフィックを処理する前に待機することができます。

Consul/etcdに自分のステータスを投稿できるようにします。依存するすべてのサービスは、必要なサービスのステータスを含む特定のエンドポイントをポーリングします。素敵に見えますが、冗長に見えますね。

私は同意します。別々に状態を維持することは好ましくない。ただし、絶対に必要な場合は、実際にリソースの状態を保存する場合は、third party resourceを使用することができます。

外部スケジューラによるコンテナの起動順序を管理します。

これは、主に議論に接するようです。しかし、Pet SetsはすぐにKubernetes v1.5のステートフルセットに置き換えられ、ポッドの初期化の決定的な順序を示します。 1つのポッド上のコンテナの場合は、メインコンテナを実行する前に連続して順番に実行されるinit-containersがあります。

関連する問題