中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何進行kubernetes scheduler backend調度的實現

發布時間:2021-12-15 19:10:30 來源:億速云 閱讀:190 作者:柒染 欄目:大數據

本篇文章為大家展示了如何進行kubernetes scheduler backend調度的實現,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。

背景

  隨著k8s快來越火熱,以及自動部署,自動伸縮等優點,我們今天來探討一下,基于k8s的backend的調度怎么來實現

組件圖

如何進行kubernetes scheduler backend調度的實現

組件說明

整個數據流就是消費者-生產者模型

組件解釋
kubernetesClient跟k8s進行交互,如:任務的提交,殺任務
podsPollingSnapshotSource從k8s中拉取pod的任務狀態,存儲到podSnapshotStore
podsWatchSnapshotSource監控任務的watcher,以獲取任務狀態,存儲到podSnapshotStore
podSnapshotStorepod狀態的存儲
podStatepod內部狀態轉換
podsSnapshotpod 的狀態鏡像
taskPodsLifecycleManager從podSnapshotStore消費pod的狀態,以便根據任務的狀態進行后續操作
  • 特別說明
    對于podsWatchSnapshotSource的實現,我們是基于k8s watch機制實現的,但是存在一個問題:
    假如某一時刻,podsWatchSnapshotSource發生了故障導致了該組件發生了重啟,那么問題來了,重啟這段時間就會丟失event,
    這里我們采用k8s的resourceVersion機制,如果我們定時存儲resourceVersion,且在重啟的時候讀取,就能做到斷點續傳的作用
    注意一點的是:該resourceVersion在 Kubernetes 服務器的保留是有限制的。使用etcd2的舊集群最多可保留1000次更改。
    默認情況下,使用etcd3的較新集群會在最近5分鐘內保留更改,如果超過了該resourceVersion超過了服務器的resourceVersion的值
    則會報錯

數據流程圖

如何進行kubernetes scheduler backend調度的實現

流程說明

  • backend通過被調用reviveOffer獲取能獲取到的backend資源.

  • 獲取到資源后,通過kubernetesClient向k8s提交任務

  • 減少對應向k8s 提交任務的資源量

  • 更新backend內部的對應job狀態為Running狀態,如果該存在job狀態為Runnnig狀態,則更新對應的job狀態為updated狀態

  • podsWatchSnapshotSource 監控剛才提交的任務,獲取任務更新的狀態,存儲到podSnapshotStore中,以便后續任務的處理

  • podsPollingSnapshotSource 定時拉取應用提交的所有任務,存儲到podSnapshotStore中,以便進行final任務的清理

  • podSnapshotStore 對任務狀態更新為內部狀態,并對訂閱此podSnapshotStore的snapshot進行函數回調

  • taskPodsLifecycleManager 訂閱了上述的snapshot,對該snapshot進行處理:
    1.如果任務狀態為podFailed或者PodSucceeded時,更新backend job的內豬狀態,如果存在對應的Running的job,調用k8s api刪除該pod,以及刪除該pod所占用的資源(cpus,mem等),如果存在對應updated的job狀態,則把updated的狀態更新為Running狀態,防止外界任務的更新,導致任務的資源量更新不一致
    2.調用kubernetesTaskSchedulerBackend的statusUpdate方法進行任務的更新進行處理

UML類繼承圖

如何進行kubernetes scheduler backend調度的實現

和spark on k8s的區別

因為公司有自己的調度平臺,所以主要從調度的粒度來進行對比:
spark on k8s調度的是executor級別的,是粗粒度調度
k8s backend 調度的是job級別,每個job一個pod container,屬于細粒度的精準調度

上述內容就是如何進行kubernetes scheduler backend調度的實現,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

金湖县| 措勤县| 涞水县| 永泰县| 淄博市| 枣强县| 观塘区| 平顶山市| 罗山县| 长海县| 桃园市| 梨树县| 松桃| 九江市| 定西市| 迁西县| 渑池县| 双峰县| 城固县| 河东区| 招远市| 泰和县| 东源县| 泸州市| 九寨沟县| 灵丘县| 大同市| 墨竹工卡县| 神木县| 达孜县| 广河县| 宁津县| 二连浩特市| 砀山县| 翁牛特旗| 兖州市| 乡宁县| 定日县| 嵊州市| 蓝田县| 马边|