日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

調度概述

在Kubernetes集群中,調度(Scheduling)指調度器組件(kube-scheduler)根據集群整體資源規劃,將待運行的Pod分配到最合適的節點上,以實現應用高可用、提高集群資源利用率等目的。ACK針對不同工作負載提供了更靈活、更豐富的調度策略,包括任務調度、拓撲感知調度、QoS感知調度、重調度等。

閱讀前提示

  • 本文面向集群運維人員(包括集群資源管理員)、應用開發人員提供集群調度方案。您可以根據您的業務場景、業務角色選擇合適的調度策略。

    • 集群運維人員:關心集群成本,確保集群資源能夠被最大化地利用,避免資源浪費。同時關心集群的高可用,希望平衡好節點間的負載均衡,通過合理的調度避免單點故障。

    • 應用開發人員:希望通過簡便的辦法部署和管理應用,且應用能夠根據其性能要求獲取所需的CPU、GPU、內存等資源。

  • 為了幫助您更好地使用ACK提供的調度策略,建議您在使用功能前參見Kubernetes官方文檔了解調度器(Scheduler)節點標簽(Label)驅逐(Evict)拓撲分布約束(Topology Spread Constraints)等調度相關的基本概念。

    此外,ACK Scheduler的默認調度策略與社區Kubernetes調度器保持一致,包括Filter(過濾)和Score(評分)兩個環節。

Kubernetes原生調度策略

Kubernetes原生的調度策略可以分為節點調度策略和Pod間(Inter-Pod)調度策略。

  • 節點調度策略:聚焦于節點的特性和資源情況,讓Pod能夠被調度到符合其需求的節點上。

  • Pod間調度策略:聚焦于如何控制Pod之間的分布和定位,以優化Pod的總體布局,保障應用的高可用性。

策略

策略說明

適用場景

nodeSelector

一種較為簡單的定向調度機制,使用標簽(Label)的鍵值對對節點進行打標,然后在Pod配置中使用節點選擇器(NodeSelector)的方式,將Pod調度至帶有相應Label的節點上。

例如,您可以使用NodeSelector調度應用至指定節點調度應用至指定節點池

基礎的節點選擇功能,但無法支持更復雜的調度功能,例如軟性調度規則等。

nodeAffinity

相較于NodeSelector更靈活、更精細的Pod的調度策略。例如,節點親和性(Node Affinity)支持配置硬性調度規則(requiredDuringSchedulingIgnoredDuringExecution),確保Pod必須調度到指定節點上,以及軟性的調度規則(preferredDuringSchedulingIgnoredDuringExecution),使Pod盡可能調度到滿足偏好條件的節點上。

基礎的節點選擇功能。親和性可以根據節點的某些特性(例如地區、機型、硬件配置等)指定Pod應該運行在哪些節點上;反親和性可以指定Pod不應該運行在某些特定節點上,以實現跨節點分散部署,提升應用的可用性。

污點和容忍

污點(Taint)主要由鍵(key)、值(value)和效果(effect)組成,常見的效果包括NoSchedulePreferNoScheduleNoExecute。當節點打上污點后,只有在YAML配置中聲明了與節點污點匹配的容忍(Tolerations)的Pod才允許調度到此節點上。

  • 為某些應用保留專用的節點資源,例如為AI/ML工作負載的Pod預留GPU節點資源。

    ACK還支持為節點池添加污點或標簽,使得某些應用可以調度到指定節點池。具體操作,請參見創建節點池編輯節點池

  • 基于污點和容忍的Pod驅逐,例如為不健康的節點添加NoExecute的污點,將其上沒有匹配容忍的Pod驅逐,并防止新的Pod調度。

podAffinity和podAntiAffinity

通過Pod標簽來指定Pod應該調度或不被調度到某些節點上。例如,與節點親和性類似,podAffinity字段支持配置硬性調度規則(requiredDuringSchedulingIgnoredDuringExecution)和軟性調度規則(preferredDuringSchedulingIgnoredDuringExecution)。

  • 讓需要協同的Pod調度到相同或臨近的節點,從而減少網絡延遲、提高通信效率,例如將前端服務和的后端服務部署在同一節點上。

  • 將關鍵應用分散在不同節點或故障域上,例如將數據庫的不同副本部署在不同節點上。

ACK提供的調度策略

如果Kubernetes原生調度策略無法滿足您更為復雜的業務訴求,例如指定不同實例資源的順序擴容及逆序縮容、 基于節點實際資源使用情況的負載感知調度,在離線混部架構下的QoS保障、Pod的重調度及重調度后的負載均衡等,您可以參照下文選擇ACK提供的調度策略。

配置調度資源優先級

  • 適用角色:集群運維人員

  • 說明:如果您的ACK集群中存在不同種類的實例資源,例如ECS和ECI,且不同資源有不同的付費類型,例如包年包月、按量付費和搶占實例等,推薦您配置調度資源優先級,指定應用實例Pod被調度到不同類型節點資源的順序,并實現逆序縮容。

策略

策略說明

典型場景

參考文檔

自定義彈性資源優先級調度

支持在應用發布或擴容過程中自定義ResourcePolicy,設置應用Pod被調度到不同類型節點資源的順序,例如先調度到包年包月ECS,再調度到按量計費ECS,最后調度到ECI。

應用縮容時,集群也會優先刪除ECI上的Pod,釋放ECI的節點資源,然后刪除按量計費ECS上的Pod,最后再刪除包年包月ECS上的Pod。

  • 指定優先使用或避免使用的節點,平衡集群中節點的資源利用率。

  • 應用對節點性能要求高時,優先讓應用Pod調度到較高性能的節點上。

  • 應用對節點性能要求不高時,優先讓應用Pod調度到搶占式實例或有剩余計算資源的節點,降低資源使用成本。

自定義彈性資源優先級調度

任務調度

  • 適用角色:集群運維人員

  • 說明:Kubernetes調度器能夠根據預設的規則決定將Pod放置在哪個節點上運行,但并不適用于批處理任務下Pod的協同調度。在此基礎上,ACK為批量計算的任務支持了Gang Scheduling、Capacity Scheduling能力。

策略

策略說明

典型場景

參考文檔

Gang Scheduling

可在并發系統中將All-or-Nothing作業中多個相關聯的進程調度到不同處理器上同時運行,即相關Pod要么全部被調度,要么都不被調度,防止因部分進程的異常而導致整個關聯進程組阻塞的問題。

  • 批處理作業:作業中有多個相互依賴的任務組,需要同時處理。

  • 分布式計算:例如機器學習訓練任務或其他需要嚴格協調運行的分布式應用。

  • 高性能計算:作業可能需要整套的資源同時可用才能開始執行。

使用Gang scheduling

Capacity Scheduling

允許集群為特定的命名空間或用戶組預留一定的資源容量,并在集群資源緊張時,通過資源共享的方式來提升整體資源的利用率。

多租戶場景下,不同租戶使用資源的周期和方式不同,造成集群的整體資源利用率較低,期望在固定資源分配的基礎上允許資源的借用和回收。

使用Capacity Scheduling

親和性調度

  • 適用角色:集群運維人員

  • 說明:您可以基于Kubernetes原生調度策略將工作負載調度至指定的實例資源上,例如FPGA節點、Arm節點等。在此基礎上,ACK集群還進一步豐富了調度能力,讓Pod可以在多個不同的拓撲域上重試,直至找到一個能夠滿足整個作業的拓撲域。

策略

策略說明

典型場景

參考文檔

拓撲感知調度

調度器為作業添加Gang調度標識,限制Pod必須同時獲得所需的資源,并結合拓撲感知調度能力實現Pod,直到找到一個能夠滿足整個作業拓撲域的功能。

您還可以使用節點池的部署集能力,將Pod調度到屬于同一低延時部署集的ECS實例中,進一步提高作業性能。

機器學習或大數據分析類作業中,Pod與Pod間通常有較大的網絡通信需求。期望能讓作業在多個拓撲域上重試,直至找到能夠提供足夠資源的拓撲域,減少作業的執行時間。

調度工作負載至FPGA節點

通過nodeSelector將工作負載調度到具有FPGA設備的節點上。

異構計算場景下,為了有效利用FPGA設備,期望將工作負載調度到具有FPGA設備的節點上。

調度工作負載至Arm節點

ACK集群默認會將所有工作負載調度到x86架構的Worker節點。您可以通過nodeSelectornodeAffinity將工作負載調度到Arm節點上。

集群中既有Arm節點,又有非Arm節點(例如x86節點),期望只兼容Arm架構的工作負載能夠調度到Arm節點,多架構鏡像優先調度到Arm節點。

負載感知調度

  • 適用角色:集群運維人員、應用開發人員

  • 說明:Kubernetes原生調度策略下,調度器主要基于資源的分配情況進行調度,即通過檢查Pod的資源Requests與節點上尚未被分配的資源來確定是否應該在此節點上運行該Pod。但節點的利用率會隨著時間、集群環境、工作負載的流量或請求等動態變化,Kubernetes調度器并不能感知節點實際的資源負載情況。

策略

策略說明

典型場景

參考文檔

負載感知調度

通過參考節點負載的歷史統計并對新調度Pod進行預估,ACK調度器可以感知節點真實使用的資源量,將Pod優先調度到負載較低的節點,實現節點負載均衡的目標,避免出現因單個節點負載過高而導致的應用程序或節點故障。

對請求壓力或訪問延遲等指標有明確的要求、對資源質量較為敏感的延時敏感型應用。

使用負載感知調度

說明

推薦您搭配使用負載熱點打散重調度功能使用,防止Pod調度完成后集群再次出現負載極不均衡的情況。

QoS感知調度

  • 適用角色:集群運維人員、應用開發人員

  • 說明:您可以為Pod配置特定的QoS(Quality of Service)類,包括GuaranteedBurstableBestEffort。在節點資源不足時,kubelet可以根據Pod的QoS類決定驅逐的順序。針對不同QoS類的應用,ACK提供差異化的SLO(Service Level Objectives)功能,以提升延遲敏感型應用的性能表現和服務質量,同時盡可能保證低優任務的資源使用。

策略

策略說明

典型場景

參考文檔

CPU Burst

受CPU Limit機制的約束,操作系統會按照一定的時間周期約束資源使用,導致容器可能遭遇資源分配的限流,即CPU Throttled。CPU Burst功能可以讓容器在空閑時積累一些CPU時間片,用于滿足突發時的資源需求,以提升容器性能、降低延遲指標,進而提升應用的服務質量。

  • 容器應用在啟動加載階段CPU資源消耗較高,但在加載完成后的日常狀態下其CPU用量相對正常的場景。

  • CPU資源需求可能會突然增長,需要快速應對突增的業務流量,例如電商、在線游戲等Web服務和應用。

CPU Burst性能優化策略

CPU拓撲感知調度

針對性能敏感型應用,將Pod固定在節點上的CPU核心運行,緩解因CPU上下文切換、跨NUMA訪存導致的應用性能下降問題。

  • 應用尚未完成對云原生場景的適配,例如在設置線程數量時未考慮容器規格(而是整機物理核數量),導致應用出現性能下降問題。

  • 應用運行在神龍裸金屬(Intel、AMD)等多核機器上,且出現大量因跨NUMA訪存帶來的應用性能下降問題。

  • 應用對CPU上下文切換十分敏感,無法承受因此帶來的性能抖動。

CPU拓撲感知調度

GPU拓撲感知調度

集群中同時部署了多張GPU卡時,多個GPU密集型工作負載的Pod同時運行時,Pod之間可能會爭搶節點的GPU資源,導致Pod在不同的GPU之間(甚至是NUMA Node之間)頻繁地切換,影響程序性能。GPU拓撲感知調度能夠將工作負載適當地分配到不同GPU卡上,減少跨越NUMA節點的內存訪問,提升應用性能和響應速度。

  • 需要在大規模分布式計算中實現高效的數據傳輸和處理,例如高性能計算。

  • 機器學習和深度學習,需要大量GPU資源進行學習和訓練,并合理將訓練任務分配到各個 GPU。

  • 圖形渲染和游戲開發,需要合理地分配渲染任務至不同的GPU。

動態資源超賣

將集群中已分配但未使用的資源量化并提供給低優先級任務使用,以實現對集群資源的超賣。需要結合以下單機QoS策略使用,以避免應用間的性能干擾。

  • 彈性資源限制:在整機資源用量安全水位下,控制低優先級Pod可使用的CPU資源量,保障節點內容器穩定運行。

  • 容器CPU QoS:基于容器的QoS等級,優先保障高優先級應用的CPU性能。

  • 容器內存QoS:基于容器的QoS等級,優先保障高優先級應用Pod的內存性能,延遲其觸發整機內存回收的時間。

  • 容器L3 Cache及內存帶寬隔離:基于容器的QoS等級,優先保障高優先級應用L3 cache和MBA內存帶寬等資源的使用。

需要通過混部的方式提升集群資源利用率。典型的在離線混部的場景包括機器學習訓練和推理、大數據批處理作業和數據分析、在線服務和離線備份服務等。

動態修改Pod資源參數

Kubernetes 1.27及更早版本中,如需在Pod運行中臨時修改容器參數,只能更新PodSpec后重新提交,這種方式會觸發Pod刪除重建。ACK支持在不重啟Pod的情況下,修改CPU、內存、磁盤IO等單機隔離參數。

僅適用于Pod資源(CPU、內存資源)的臨時性調整。

動態修改Pod資源參數

重調度

  • 適用角色:集群運維人員、應用開發人員

  • 說明:Kubernetes調度器會根據當前的集群狀態決定如何將一個Pod調度到合適的節點上。但集群的狀態會不斷變化,出于某些原因,您可能需要將運行中的Pod移動到其他節點,即將Pod重調度到其他節點。

策略

策略說明

典型場景

參考文檔

重調度

在集群利用率不均而產生熱點節點、節點屬性變化導致存量Pod調度規則不匹配等場景下,您可能需要將部署在某個節點上調度不合理的Pod重新調度到另一個節點,確保Pod在最佳節點上運行,從而保障集群的高可用性和工作負載的高效運行。

  • 集群的工作負載分布不均,造成某些節點過載,例如在離線混部場景下不同應用被調度到同一節點上。

  • 集群的總體資源利用率較低,期望下線部分節點以節約成本。

  • 集群存在大量資源碎片,導致集群資源總量充足,但單節點上資源不足。

  • 節點新增或移除了污點或標簽。

負載熱點打散重調度

將負載感知調度和熱點打散重調度結合使用,不僅能夠實時感知集群內節點負載的變化,還能自動優化超過負載水位安全閾值的節點,防止出現負載極端不均衡的情況。

使用負載熱點打散重調度

相關計費

使用ACK提供的調度功能時,除涉及的集群管理費用、相關云產品資源產生的計費外,調度組件還會產生如下費用。

  • ACK默認調度器由kube-scheduler組件提供,為控制面組件,安裝和使用均為免費。

  • ACK的資源調度優化能力和重調度能力基于ack-koordinator組件實現。ack-koordinator組件本身的安裝和使用是免費的,但在部分場景中可能產生額外的費用。更多信息,請參見ack-koordinator(ack-slo-manager)

常見問題

如果您在使用調度功能時遇到問題,可參見調度FAQ進行排查。

相關文檔