検索
ホームページバックエンド開発GolangKontroler の紹介: 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 を提供し、チームにワークフローを管理する直感的な方法を提供します。

Introducing Kontroler: A Kubernetes Scheduling Engine for DAGs

上のスクリーンショットでは、次のことが示されています:

  • タスク間の接続
  • 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 サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
パフォーマンスレース:ゴラン対cパフォーマンスレース:ゴラン対cApr 16, 2025 am 12:07 AM

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

Golang vs. C:コードの例とパフォーマンス分析Golang vs. C:コードの例とパフォーマンス分析Apr 15, 2025 am 12:03 AM

Golangは迅速な発展と同時プログラミングに適していますが、Cは極端なパフォーマンスと基礎となる制御を必要とするプロジェクトにより適しています。 1)Golangの並行性モデルは、GoroutineとChannelを介した同時性プログラミングを簡素化します。 2)Cのテンプレートプログラミングは、一般的なコードとパフォーマンスの最適化を提供します。 3)Golangのごみ収集は便利ですが、パフォーマンスに影響を与える可能性があります。 Cのメモリ管理は複雑ですが、コントロールは問題ありません。

Golangの影響:速度、効率、シンプルさGolangの影響:速度、効率、シンプルさApr 14, 2025 am 12:11 AM

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

CとGolang:パフォーマンスが重要な場合CとGolang:パフォーマンスが重要な場合Apr 13, 2025 am 12:11 AM

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

Golang in Action:実際の例とアプリケーションGolang in Action:実際の例とアプリケーションApr 12, 2025 am 12:11 AM

Golangは実際のアプリケーションに優れており、そのシンプルさ、効率性、並行性で知られています。 1)同時プログラミングはゴルチンとチャネルを通じて実装されます。2)柔軟なコードは、インターフェイスと多型を使用して記述されます。3)ネット/HTTPパッケージを使用したネットワークプログラミングを簡素化、4)効率的な同時クローラーを構築する、5)ツールと最高の実践を通じてデバッグと最適化。

Golang:Goプログラミング言語が説明しましたGolang:Goプログラミング言語が説明しましたApr 10, 2025 am 11:18 AM

GOのコア機能には、ガベージコレクション、静的リンク、並行性サポートが含まれます。 1. GO言語の並行性モデルは、GoroutineとChannelを通じて効率的な同時プログラミングを実現します。 2.インターフェイスと多型は、インターフェイスメソッドを介して実装されているため、異なるタイプを統一された方法で処理できます。 3.基本的な使用法は、関数定義と呼び出しの効率を示しています。 4。高度な使用法では、スライスは動的なサイズ変更の強力な機能を提供します。 5.人種条件などの一般的なエラーは、Getest Raceを通じて検出および解決できます。 6.パフォーマンス最適化Sync.Poolを通じてオブジェクトを再利用して、ゴミ収集圧力を軽減します。

Golangの目的:効率的でスケーラブルなシステムの構築Golangの目的:効率的でスケーラブルなシステムの構築Apr 09, 2025 pm 05:17 PM

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

SQLソートのステートメントによる順序の結果がランダムに見えるのはなぜですか?SQLソートのステートメントによる順序の結果がランダムに見えるのはなぜですか?Apr 02, 2025 pm 05:24 PM

SQLクエリの結果の並べ替えについて混乱しています。 SQLを学習する過程で、しばしば混乱する問題に遭遇します。最近、著者は「Mick-SQL Basics」を読んでいます...

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

VSCode Windows 64 ビットのダウンロード

VSCode Windows 64 ビットのダウンロード

Microsoft によって発売された無料で強力な IDE エディター