簡體   English   中英

Kubernetes 動態作業擴展

[英]Kubernetes dynamic Job scaling

我終於在 kubernetes 池中涉足,並想就解決我遇到的問題的最佳方法獲得一些建議:

我們使用的技術:

  • GCP
  • GKE
  • GCP 發布/訂閱

我們需要在整個隊列中進行批量處理,並決定采用以下方法:

  1. 新的原始數據流入
  2. 一個節點對此進行分析並將數據分解成可管理的部分,這些部分被推送到隊列中
  3. 我們有一個 Autoscaling On 和 Min Size '0' 的集群
  4. Kubernetes 作業為該集群上的每條新消息啟動一個 pod
  5. 當 Pod 無法再拉取消息時,它們會成功終止

問題是:

  • 觸發此類作業的標准方法是什么?
    • 您是否每次都創建一個新工作,或者工作是否意味着長期存在並重新運行?
  • 我只看到了使用 yaml 文件的示例,但是我們可能希望完成工作分配的節點來創建作業,因為它知道應該運行多少個並行 pod。 是否建議使用 python sdk 以編程方式創建作業規范? 或者,如果作業是長期存在的,您是否會簡單地點擊 k8 api 並修改所需的並行 pod,然后重新運行作業?

Kubernetes 中的作業是短暫的,不能重復使用。 作業專為運行一次、運行到完成的工作負載而設計。 通常,他們被分配一個特定的任務,即處理單個隊列項目。

但是,如果您想使用單個實例處理工作隊列中的多個項目,那么通常建議改為使用 Deployment 來擴展繼續處理隊列中項目的工作線程池,擴展池工作線程的數量取決於隊列中的項目數。 如果沒有剩余的工作項,那么您可以將部署擴展到 0 個副本,並在有工作要做時進行擴展。

要在 Kubernetes 中創建和控制您的工作負載,最佳實踐是使用 Kubernetes SDK。 雖然您可以使用 SDK 生成 YAML 文件並使用其他工具(如kubectl進行 shell,但可以簡化配置和錯誤處理,並允許簡化對集群中資源的內省。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM