問題タブ [kubernetes-statefulset]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
apache-spark - Kubernetes 上の Spark Standalone - 連続したマスターとドライバーの障害の後、アプリケーションが終了しました
GlusterFS へのメタデータ チェックポイントを使用して、SparkDriver の回復力を備えた ZooKeeper を使用して、SparkMaster の高可用性を実現しようとしています。
いくつかの情報:
- Spark 2.2.0 (ビルド済みバイナリ) の使用
- 別の Spark クライアント ポッドから --deploy-mode cluster と --supervise を使用してストリーミング アプリを送信する
- Kubernetes 上の Spark コンポーネントは、動的ボリューム プロビジョニング用の Statefulset タイプです (以前はレプリケーション コントローラー/デプロイを使用していました)。
- 3 つの GlusterFS 共有 PVC を作成しました - spark-master-pvc、spark-worker-pvc、spark-ckp-pvc
マスターの失敗のみ、ドライバーの失敗のみ、連続したマスターとドライバーの失敗、ドライバーの失敗、そしてマスターのようなシナリオを成功裏に達成しました。しかし、 Submitted a Job -> Master Failure (Working fine) -> Driver Failure ie Worker Pod failureのようなシナリオは機能しません。
NEW ALIVE MASTERのログ -
DRIVER は Halted 状態のままです。ドライバーエラーログ -
適切なリソース コントローラー、つまり Spark 用の kubernetes のステートフル セットを選択していますか? M はこの環境に慣れていないため、どんな助けも非常に高く評価されます。
redis - Redis クラスターが Kubernetes にデプロイされている場合、sentinal の必要性は何ですか?
センチナル:ドキュメントによると
Redis Sentinel は、Redis の高可用性を提供します。実際には、これは、Sentinel を使用して、人間の介入なしで特定の種類の障害に耐える Redis 展開を作成できることを意味します。
Sentinal
デプロイせずに(K8sで)redisクラスターの機能を達成できると思いますSentinal
か? 私はドキュメントからセンチメンタルな機能を取り入れ、K8s からいくつかのカウンター ポイントを投げています。
Monitoring
- Sentinel は、マスター インスタンスとスレーブ インスタンスが期待どおりに動作しているかどうかを常にチェックします。working as expected
ポッドの上下を意味することを検討しています。これは、Deployment
(レプリカセット) またはさらにはStatefulSets
Notification
- Sentinel は、監視対象の Redis インスタンスの 1 つに問題があることを、システム管理者や別のコンピューター プログラムに API 経由で通知できます。- できません
Operators
か? (redis クラスタの状態などの観点から)
- できません
Automatic failover
- マスターが期待どおりに動作しない場合、Sentinel はフェイルオーバー プロセスを開始できます。このプロセスでは、スレーブがマスターに昇格し、他の追加のスレーブが新しいマスターを使用するように再構成され、Redis サーバーを使用するアプリケーションが使用する新しいアドレスについて通知されます。接続時。not working as expected
redisポッドがダウンしていることを意味すると考えています。Operators
この場合、 /StatefulSet
+を使用して redis をデプロイすると、Headless Service
. ポッドが再起動しても、マスター/スレーブの安定したネットワーク ID があります。
Configuration provider
- Sentinel は、クライアント サービス検出の権限のソースとして機能します。クライアントは、特定のサービスを担当する現在の Redis マスターのアドレスを要求するために、Sentinel に接続します。フェイルオーバーが発生すると、Sentinels は新しいアドレスを報告します。- 上記のポイントで述べたように、安定したネットワーク ID/名前/IP があります。クライアントは常にマスターを指すことができます。
私はredisが初めてです。何か間違っている場合は、私を導いてください。ありがとう。
アップデート1
私の目的は、センチメンタルを回避し、HA を持つことです。(主にmaster
フェイルオーバー)