首頁 > 後端開發 > Golang > Kontroler 簡介:用於 DAG 的 Kubernetes 調度引擎

Kontroler 簡介:用於 DAG 的 Kubernetes 調度引擎

Mary-Kate Olsen
發布: 2024-11-22 15:59:23
原創
736 人瀏覽過

什麼是控制器?

Kontroler 是一個開源 Kubernetes 調度引擎,旨在簡化有向無環圖 (DAG) 的管理。借助 Kontroler,您可以在 YAML 中定義工作流程,將任務作為容器化作業運行,甚至可以透過可選的基於 Web 的 UI 將其視覺化。無論您需要按計畫執行工作流程或回應即時事件,Kontroler 都能提供靈活的 Kubernetes 原生解決方案。

也就是說,我必須警告 Kontroler 目前處於 alpha 狀態。它非常適合實驗和原型設計,但可能尚未準備好用於生產。作為一個副項目,Kontroler 不提供支持,因此在生產中使用它需要您自擔風險!

如果您想查看 GitHub 儲存庫,請造訪:https://github.com/GreedyKomodoDragon/Kontroler

為什麼要使用控制器?

管理 Kubernetes 上的工作流程可能具有挑戰性。雖然 Kubernetes 提供了強大的原語(如 CronJobs 和 Jobs),但協調複雜的工作流程與依賴項、重試和動態觸發器通常需要自訂腳本或外部工具。 Kontroler 透過提供 Kubernetes 原生解決方案來定義、排程和管理有向無環圖 (DAG) 的工作流程,從而簡化了此流程。

以下是 Kontroler 脫穎而出的原因:

1. 使用 YAML 進行 Gitops DAG 管理

Kontroler 讓您能夠使用簡單的 YAML 檔案定義整個工作流程,包括任務、依賴項、重試邏輯和條件執行。這種方法可讓您的工作流程保持聲明性、版本控制,並且易於在團隊之間共用。

將它們包裝在 Helm 圖表中並使用自動化部署系統(例如 ArgoCD 或 FluxCD),您就可以在 GitOps 工作流程中管理 DAG。

2. 支援事件驅動和預定的工作流程

無論您需要工作流程定期運行(例如 CronJobs)還是對即時觸發器做出反應(例如來自佇列的訊息),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 提供了一個可選的基於 Web 的 UI,用於建立和監控 DAG,為團隊提供了一種直觀的方式來管理工作流程。

Introducing Kontroler: A Kubernetes Scheduling Engine for DAGs

在上面的螢幕截圖中,它向您展示了:

  • 任務之間的聯繫
  • 在 DagRun 中它將顯示狀態
  • 點選網路時的 Pod 結果

在底層,此功能由 vis-network 提供支持,vis-network 是一個用於建立圖形的開源專案。您可以在此處找到他們的 GitHub 存儲庫。最初,我們開發了自己的圖形工具,但發現很難擴展並且使複雜的圖形可讀具有挑戰性。因此,我們採用了這個開源解決方案。

5. 用於進階配置的靈活 Pod 模板

Kontroler 的 pod 範本可讓您使用進階 Kubernetes 功能(如機密、PVC、節點親和性、安全性情境等)自訂任務。這使您可以對任務的執行方式進行細粒度控制,確保與叢集的特定要求相容。

資料儲存的彈性

管理工作流程的關鍵挑戰之一是確保底層基礎設施可以根據您的需求進行擴展。 Kontroler 提供靈活的資料庫支援和日誌記錄功能,讓團隊更輕鬆地管理 DAG 並擷取詳細的執行日誌。無論您使用的是輕量級設定還是更強大的生產環境,Kontroler 都有適合您需求的選項。

SQLite(預設小規模)

對於較小的設定或開發流程,SQLite 是 Kontroler 使用的預設資料庫。它簡單、輕量,不需要太多配置。如果您剛開始或出於測試目的運行 Kontroler,SQLite 是一個方便的選擇,因為它“開箱即用”,無需額外的資料庫設定。

如果您喜歡使用 SQLite,則無需對部署進行任何其他變更。只需按照安裝說明進行操作,Kontroler 就會處理剩下的事情。

PostgreSQL(用於生產/大規模)

對於大型生產級部署,建議使用 PostgreSQL 來儲存 DAG 和 DagRun。 Kontroler 使用 PostgreSQL 提供處理大量工作流程資料所需的更高效能、可擴展性和可靠性。 Kontroler 相容於 PostgreSQL 16 以上版本

日誌收集

對於許多 Kubernetes 使用者來說,集中式日誌儲存是可觀察性和故障排除的關鍵要求。 Kontroler 與 Amazon S3 無縫整合以進行日誌存儲,從而可以輕鬆收集、儲存和分析 DAG 執行的日誌。這種整合確保您可以捕獲詳細的日誌,長期保存它們以供審核,並在出現問題時使用它們進行事後分析。

我們正在使用 MinIO 進行測試以避免成本,但在幕後,它使用 AWS S3 API,並且應該能夠檢測您的 IAM 屬性以授予對 S3 儲存桶的存取權。

最後的評論

我們希望您能看看 Kontroler!您可以在這裡找到它:https://github.com/GreedyKomodoDragon/Kontroler。

儘管仍處於 alpha 階段,Kontroler 對於希望簡化 Kubernetes 營運的團隊來說具有巨大的潛力。隨著它的發展,Kontroler 的目標是成為在 Kubernetes 中編排工作流程的強大工具,為團隊提供輕鬆自動化複雜流程所需的可靠性和可擴展性。

Kontroler 正在不斷改進,因此請密切注意未來的更新!如果您想為該專案做出貢獻,我們歡迎各種形式的貢獻。

以上是Kontroler 簡介:用於 DAG 的 Kubernetes 調度引擎的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板