Kontroler の紹介: DAG 用の Kubernetes スケジューリング エンジン
コントローラーとは何ですか?
Kontroler は、有向非巡回グラフ (DAG) の管理を簡素化するように設計されたオープンソースの Kubernetes スケジューリング エンジンです。 Kontroler を使用すると、YAML でワークフローを定義し、コンテナ化されたジョブとしてタスクを実行し、オプションの Web ベースの UI を使用してタスクを視覚化することもできます。ワークフローをスケジュールに従って実行する必要がある場合でも、リアルタイムのイベントに応答する必要がある場合でも、Kontroler は柔軟な Kubernetes ネイティブ ソリューションを提供します。
とはいえ、Kontroler は現在アルファ版であることに注意しなければなりません。実験やプロトタイピングには最適ですが、まだ実稼働環境で使用する準備ができていない可能性があります。サイド プロジェクトとして、Kontroler にはサポートが付属していないため、実稼働環境での使用は自己責任で行ってください。
GitHub リポジトリをチェックアウトしたい場合は、ここにあります: https://github.com/GreedyKomodoDragon/Kontroler
コントローラを使用する理由
Kubernetes でのワークフローの管理は困難な場合があります。 Kubernetes は CronJob や Jobs などの強力なプリミティブを提供しますが、依存関係、再試行、動的トリガーを使用して複雑なワークフローを調整するには、カスタム スクリプトや外部ツールが必要になることがよくあります。 Kontroler は、有向非巡回グラフ (DAG) としてワークフローを定義、スケジュール、管理するための Kubernetes ネイティブ ソリューションを提供することで、このプロセスを簡素化します。
Kontroler の優れた点は次のとおりです:
1. YAML を使用した Gitops DAG 管理
Kontroler を使用すると、単純な YAML ファイルを使用して、タスク、依存関係、再試行ロジック、条件付き実行を含むワークフロー全体を定義できます。このアプローチにより、ワークフローが宣言型に保たれ、バージョン管理され、チーム間で共有しやすくなります。
それらを Helm チャートにラップし、ArgoCD や FluxCD などの自動デプロイメント システムを使用すると、GitOps ワークフロー内で DAG を管理できます。
2. イベント駆動型およびスケジュールされたワークフローをサポート
ワークフローを定期的なスケジュールで実行する必要がある場合 (CronJob など)、またはリアルタイムのトリガー (キューからのメッセージなど) に反応する必要がある場合でも、Kontroler が対応します。両方のスケジューリング パラダイムをシームレスに統合し、幅広いユースケースに多用途に使用できます。
Kontroler は、DagRuns (Kontroler が監視できるカスタム リソース定義、つまり CRD) を使用して動作します。 DAG 実行を実行するには、DagRun を作成するだけで、Kontroler が実行を管理します。この機能をコントローラの外部に公開することで、Kontroler は外部システムとのシームレスな統合を可能にします。以下の DagRun の例を参照してください:
apiVersion: kontroler.greedykomodo/v1alpha1 kind: DagRun metadata: labels: app.kubernetes.io/name: dagrun app.kubernetes.io/instance: dagrun-sample name: dagrun-sample spec: dagName: dag-sample parameters: - name: first fromSecret: secret-name-new - name: second value: value_new
DAG の名前を指定するだけで、オプションでパラメーターを含めることができます。パラメータが何も指定されていない場合は、デフォルト値が使用されます。
3. コンテナとシームレスに統合
Kubernetes ネイティブ アプリケーションとして、Kontroler はプラットフォームの利点を活用します。単純なスクリプトから複雑なアプリケーションまで、Kontroler のコンテナファースト設計により、あらゆるワークロードを DAG に簡単に統合できます。
作業の重複をさらに減らすために、CRD としてのタスクのサポートを追加しています。
4. 視認性を高めるためのオプションの UI を提供
YAML はコードとしてのインフラストラクチャに優れていますが、ワークフローを視覚化し、その実行を追跡することで、デバッグと最適化を大幅に簡素化できます。 Kontroler は、DAG の作成と監視のためのオプションの Web ベース UI を提供し、チームにワークフローを管理する直感的な方法を提供します。
上のスクリーンショットでは、次のことが示されています:
- タスク間の接続
- DagRun ではステータスが表示されます
- ネットワークをクリックした場合のポッドの結果
内部では、この機能はグラフ作成用のオープンソース プロジェクトである vis-network によって強化されています。ここで GitHub リポジトリを見つけることができます。当初、私たちは独自のグラフ作成ツールを開発しましたが、拡張が難しく、複雑なグラフを読みやすくするのが難しいことがわかりました。その結果、このオープンソース ソリューションを採用しました。
5. 高度な構成のための柔軟なポッド テンプレート
Kontroler のポッド テンプレートを使用すると、シークレット、PVC、ノード アフィニティ、セキュリティ コンテキストなどの高度な Kubernetes 機能を使用してタスクをカスタマイズできます。これにより、タスクの実行方法をきめ細かく制御でき、クラスターの特定の要件との互換性が確保されます。
データストアの柔軟性
ワークフローを管理する際の重要な課題の 1 つは、基盤となるインフラストラクチャがニーズに合わせて拡張できるようにすることです。 Kontroler は、柔軟なデータベース サポートとログ機能を提供し、チームが DAG を管理し、詳細な実行ログをキャプチャすることを容易にします。軽量のセットアップで作業している場合でも、より堅牢な実稼働環境で作業している場合でも、Kontroler にはニーズを満たすオプションがあります。
SQLite (デフォルトの小規模)
小規模なセットアップまたは開発中に、SQLite が Kontroler によって使用されるデフォルトのデータベースになります。シンプルかつ軽量で、多くの設定は必要ありません。 Kontroler を始めたばかりの場合、またはテスト目的で Kontroler を実行している場合は、追加のデータベース設定なしで「すぐに使える」SQLite が便利な選択肢です。
SQLite を使用する場合は、デプロイメントに追加の変更を加える必要はありません。インストール手順に従うだけで、残りは Kontroler が処理します。
PostgreSQL (本番/大規模向け)
大規模な運用グレードのデプロイメントの場合、DAG と DagRun を保存するためのデータベースとして PostgreSQL が推奨されます。 Kontroler は PostgreSQL を使用して、大量のワークフロー データを処理するために必要な、より高いパフォーマンス、スケーラビリティ、および信頼性を提供します。 Kontroler は PostgreSQL 16 以降と互換性があります
ログ収集
多くの Kubernetes ユーザーにとって、一元化されたログ ストレージは可観測性とトラブルシューティングにとって重要な要件です。 Kontroler はログストレージとして Amazon S3 とシームレスに統合されており、DAG 実行からのログの収集、保存、分析が簡単になります。この統合により、詳細なログを取得し、監査用に長期保存し、問題が発生した場合の事後分析に使用できるようになります。
コストを回避するために MinIO を使用してテストしていますが、内部では AWS S3 API を使用し、IAM 属性を検出して S3 バケットへのアクセスを許可できるはずです。
最後の挨拶
ぜひ Kontroler をチェックしてみてください!ここで見つけることができます: https://github.com/GreedyKomodoDragon/Kontroler.
Kontroler はまだアルファ版ですが、Kubernetes 運用の合理化を目指すチームにとって大きな可能性を秘めています。 Kontroler は進化するにつれて、Kubernetes でワークフローを調整するための強力なツールとなり、チームが複雑なプロセスを簡単に自動化するために必要な信頼性と拡張性を提供することを目指しています。
Kontroler は常に改善されているため、今後のアップデートにも注目してください。プロジェクトに貢献したい場合は、あらゆる形式の貢献を歓迎します。
以上がKontroler の紹介: DAG 用の Kubernetes スケジューリング エンジンの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











GO言語は、効率的でスケーラブルなシステムの構築においてうまく機能します。その利点には次のものがあります。1。高性能:マシンコードにコンパイルされ、速度速度が速い。 2。同時プログラミング:ゴルチンとチャネルを介してマルチタスクを簡素化します。 3。シンプルさ:簡潔な構文、学習コストとメンテナンスコストの削減。 4。クロスプラットフォーム:クロスプラットフォームのコンパイル、簡単な展開をサポートします。

Golangは並行性がCよりも優れていますが、Cは生の速度ではGolangよりも優れています。 1)Golangは、GoroutineとChannelを通じて効率的な並行性を達成します。これは、多数の同時タスクの処理に適しています。 2)Cコンパイラの最適化と標準ライブラリを介して、極端な最適化を必要とするアプリケーションに適したハードウェアに近い高性能を提供します。

GolangとCにはそれぞれパフォーマンス競争において独自の利点があります。1)Golangは、高い並行性と迅速な発展に適しており、2)Cはより高いパフォーマンスと微細な制御を提供します。選択は、プロジェクトの要件とチームテクノロジースタックに基づいている必要があります。

Golangは、パフォーマンスとスケーラビリティの点でPythonよりも優れています。 1)Golangのコンピレーションタイプの特性と効率的な並行性モデルにより、高い並行性シナリオでうまく機能します。 2)Pythonは解釈された言語として、ゆっくりと実行されますが、Cythonなどのツールを介してパフォーマンスを最適化できます。

GolangとPythonにはそれぞれ独自の利点があります。Golangは高性能と同時プログラミングに適していますが、PythonはデータサイエンスとWeb開発に適しています。 Golangは同時性モデルと効率的なパフォーマンスで知られていますが、Pythonは簡潔な構文とリッチライブラリエコシステムで知られています。

Cは、ハードウェアリソースと高性能の最適化が必要なシナリオにより適していますが、Golangは迅速な開発と高い並行性処理が必要なシナリオにより適しています。 1.Cの利点は、ハードウェア特性と高い最適化機能に近いものにあります。これは、ゲーム開発などの高性能ニーズに適しています。 2.Golangの利点は、その簡潔な構文と自然な並行性サポートにあり、これは高い並行性サービス開発に適しています。

speed、効率、およびシンプル性をspeedsped.1)speed:gocompilesquilesquicklyandrunseffictient、理想的なlargeprojects.2)効率:等系dribribraryreducesexexternaldedenciess、開発効果を高める3)シンプルさ:

GolangとCのパフォーマンスの違いは、主にメモリ管理、コンピレーションの最適化、ランタイム効率に反映されています。 1)Golangのゴミ収集メカニズムは便利ですが、パフォーマンスに影響を与える可能性があります。
