20250720-2-Kubernetes 調度-資源限制對Pod調度的影響(1)_筆記

一、創建一個Pod的工作流程

1. k8s架構解析



  • 組件交互模式: Kubernetes采用list-watch機制的控制器架構,實現組件間交互的解耦。各組件通過監控自己負責的資源,當資源發生變化時由kube-apiserver通知相關組件。
  • 類比說明: 類似小賣鋪場景,API Server相當于老板,其他組件(控制器、調度器、kubelet)相當于學生。當有新Pod需要處理時,API Server會主動通知對應組件,避免組件不斷輪詢檢查的低效行為。
  • 架構特點:
    • 各組件之間不直接通信,全部通過API Server進行協調
    • 采用發布-訂閱模式實現事件通知
    • 相比輪詢機制更高效,是現代事件通知系統的常見實現方式
二、Pod中影響調度的主要屬性



1. 資源配額與調度依據



  • 資源配置: 通過resources字段設置容器的CPU和內存資源限制
    • 示例配置:requests: memory: "64Mi" cpu: "250m" 和 limits: memory: "128Mi" cpu: "500m"
    • CPU單位:可以寫m(毫核)或浮點數,如

      0.5=500m0.5=500m0.5=500m,1=1000m1=1000m1=1000m

  • 調度影響: 調度器會根據requests值判斷節點是否有足夠資源容納Pod
2. 調度器名稱與自定義調度器



  • 默認調度器: 通過schedulerName: default-scheduler指定
  • 自定義調度器: Kubernetes支持多個調度器并存,可通過指定不同調度器名稱使用自定義調度邏輯
3. 節點選擇器(nodeSelector)



  • 匹配機制: 基于節點標簽進行調度匹配,Pod只會被調度到帶有指定標簽的節點上
  • 使用場景: 簡單場景下的節點定向調度
4. 親和性(affinity)



  • 功能: 可配置節點親和性和Pod親和性,通過約束條件控制Pod在集群中的分布
  • 優勢: 比nodeSelector提供更靈活的調度控制能力
5. 污點與污點容忍(tolerations)



  • 污點機制: 控制Pod不在哪些節點上運行
  • 容忍機制: 允許Pod在特定條件下運行在污點節點上
6. 調度器篩選與打分機制



  • 篩選階段: 調度器首先排除不滿足Pod配置要求的節點
  • 打分階段: 對符合條件的節點進行評分,選擇最優節點
  • 考慮因素:
    • 節點空閑資源情況
    • 服務質量要求
    • 其他調度策略(如盡量打散Pod分布)
    • 不會簡單追求各節點均勻分配Pod
三、資源限制對Pod調度的影響

1. 資源限制容器的創建



  • 創建命令:使用kubectl run命令創建容器,示例創建名為part1的nginx容器
  • 資源配置項:
    • limits:定義容器最大使用的CPU和內存資源
    • requests:定義容器請求的基礎資源量
  • 配置方法:通過YAML文件中的resources字段進行定義,需結合應用程序實際需求設置
2. 資源請求對調度的影響
1)資源請求的理解



  • 本質含義:request代表容器向集群請求的基礎資源量
  • 調度影響:決定Pod能否被調度到某個節點的關鍵因素
  • 配置示例:在YAML中通過requests.cpu和requests.memory字段定義
2)預留資源的概念



  • 核心定義:request是K8s層面的資源預留機制
  • 工作方式:節點分配Pod時,會預先扣除request指定的資源量
  • 實際占用:預留資源未被實際占用,其他Pod無法使用這部分資源
3)預留資源與最小使用資源的區別



  • JVM示例:
    • 最小資源:像JVM配置的-Xms參數,物理內存立即被占用
    • 預留資源:僅做邏輯預留,實際使用可能低于request值
  • 關鍵區別:
    • 最小資源:立即物理分配,不可回收
    • 預留資源:邏輯預留,實際使用動態變化
4)預留資源在K8s調度中的作用



  • 調度邏輯:
    • 節點剩余資源 = 總資源 - 所有Pod的request總和
    • 新Pod的request必須 ≤ 節點剩余資源才能調度
  • 示例說明:2核4G節點上預留512M內存后,剩余3.5G可供其他Pod使用
5)預留資源的配置方法



  • 配置原則:
    • 應設置為應用常規運行所需的基本資源量
    • 需要結合應用實際資源使用特征進行調整
  • 配置建議:
    • 初始可設置較小值,根據監控逐步優化
    • 典型場景:nginx等輕量應用可設置較低request值
四、知識小結

知識點

核心內容

考試重點/易混淆點

難度系數

API Server角色

類比小賣鋪老板,作為核心協調組件,所有組件(學生)都需通過API Server交互

組件間無直接通信,必須通過API Server中轉

??

List-Watch機制

事件通知架構,避免組件輪詢查詢(學生不用來回跑),通過監聽API Server事件觸發動作

與輪詢機制對比理解,事件驅動更高效

???

調度器工作原理

1. 篩選符合基本配置的節點

2. 對候選節點打分評級

3. 分配Pod到最優節點

不會均勻分配,考慮節點空閑率/配置差異/服務質量等多維度

????

影響調度的6大因素

1. 資源配額(resources)

2. 指定調度器(schedulerName)

3. 節點名稱(nodeName)

4. 節點標簽選擇器(nodeSelector)

5. 親和性(affinity)

6. 污點容忍(tolerations)

resource.requests≠limits:requests是預留資源,limits是硬限制

????

資源限制配置

- limits:容器資源使用上限

- requests:調度預留資源(非實際占用)

OOM風險:內存超限會被Kill,CPU超限會被限流

???

資源耗盡影響

節點資源利用率>90%時會導致:

- 服務響應延遲

- SSH操作卡頓

- 整體服務不可用

需配置合理limits防止單Pod拖垮節點

???

多調度器機制

可通過schedulerName字段指定自定義調度器,支持多調度器共存

默認調度器名稱:default-scheduler

??

控制器協作模式

各控制器(Deployment/StatefulSet等)通過API Server獲知資源變更,獨立完成閉環控制

控制器之間無直接交互

???

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/92058.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/92058.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/92058.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

mobaxteam x11傳輸界面避坑

mobaxteam x11傳輸界面避坑 文章目錄mobaxteam x11傳輸界面避坑1 windows系統必須下載xing2 配置1 windows系統必須下載xing 因為windows系統本身沒有x服務。 2 配置 如圖

flink sql如何對hive string類型的時間戳進行排序

在 Flink SQL 中對 Hive 表的 STRING 類型時間戳進行排序,需要先將字符串轉換為時間類型,再基于時間類型排序。以下是具體方法和示例: 一、核心解決方案 1. 字符串轉 TIMESTAMP 后排序 若 Hive 中的時間戳格式為 yyyy-MM-dd HH:mm:ss&#xf…

Linux:線程控制

線程概念線程(Thread)是進程(Process) 中的一個執行單元,是操作系統能夠進行運算調度的最小單位。線程也被稱為“輕量級進程”(Lightweight Process, LWP)。一個進程可以包含多個線程&#xff0…

React 學習(4)

核心API———createRoot、render方法1.createRoot 方法是創建react的根容器,就是react元素的插入位置,插入的dom會被轉化成react元素,根容器內的內容都會被react管理,原有dom都會被刪除。react17 根容器創建、渲染方式&#xff0…

ASP .NET Core 8集成Swagger全攻略

Swagger (現在稱為 OpenAPI) 是一個用于描述 RESTful API 的規范,ASP.NET Core 內置支持通過 Swashbuckle 庫生成 Swagger 文檔。以下是在 ASP.NET Core 8 中實現 Swagger 的完整步驟。1、添加Swagger NuGet 包dotnet add package Swashbuckle.AspNetCore2、添加Swa…

【iOS】源碼閱讀(六)——方法交換

文章目錄方法交換什么是Method-Swizzling方法交換核心API**1. 獲取方法對象****2. 添加/替換方法實現****3. 交換方法實現****4. 獲取方法信息****5. 修改方法實現****使用示例:完整的 Method-Swizzling 流程****注意事項**使用方法交換注意事項線程安全方法交換的影…

mysql運維問題解決:MySQL主從延遲(鎖阻塞與讀寫分離)

小亦平臺會持續給大家科普一些運維過程中常見的問題解決案例,運維朋友們可以在常見問題及解決方案專欄查看更多案例 問題概述 告警事件: 2023-07-28 03:31:39.571 首次觸發主從延遲告警(延遲1515秒)2023-07-28 07:41:37 告警解除…

SSH 密鑰

什么是 SSH 密鑰 SSH 密鑰就像是你電腦的“身份證”和“鑰匙”, 用來安全登錄另一臺電腦(服務器),而不需要每次輸入密碼。SSH 密鑰是一種安全登錄遠程服務器的方式,由一對加密的“鑰匙”組成:一個公鑰 一個…

st-Gcn訓練跳繩識別模型一:數據標注工具和標注流程

目錄 工具展示和使用說明 工具標注后文件展示說明 json轉換成單個npy文件 數據獲取補充 工具展示和使用說明 文件名labelV.py集于PySide6實現: 通過選擇視頻來選擇你要標注的視頻,然后選擇保存路徑: 然后視頻兩個類別。當你看見視頻中的人…

springboot跨域問題 和 401

springboot跨域問題 和 401 1.跨域import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotatio…

構建直播平臺大體的流程

? 直播流程完整鏈路(基于 SRS OBS 前后端)🧍?♂? 用戶操作流程:? 用戶登錄系統(前端)系統中校驗用戶身份(JWT 等)后端可能校驗權限,比如“是否有開播資格”? 用戶…

KOSMOS-2: 將多模態大型語言模型與世界對接

溫馨提示: 本篇文章已同步至"AI專題精講" KOSMOS-2: 將多模態大型語言模型與世界對接 摘要 我們介紹了 KOSMOS-2,一種多模態大型語言模型(MLLM),賦予了模型感知物體描述(例如,邊界框…

協作機器人操作與編程-PE系統示教編程和腳本講解(直播回放)

協作機器人操作與編程-PE系統示教編程和腳本講解本次講解主要圍繞協作機器人PE系統的操作與編程展開,內容涵蓋軟件安裝、虛擬機配置、手動操作、在線編程、變量設置、網絡通信及標定方法等方面。以下是主要內容要點提煉: 軟件安裝與虛擬機配置 需從官網下…

【前后端】Node.js 模塊大全

用到的全部總結在這里,不定期更新 鏈接 node一本通 包括: express path fs/ process/ os/ http/ mysql/mongoose/ express-jwt/jsonwebtoken/ dotenv/ multer/ swagger/ cors/ nodemon (docker篇有)常用模塊 內置 fs 文件系統操作(讀寫、重命…

雙8無碳小車“cad【17張】三維圖+設計說名書

基于MATLAB的雙八無碳小車軌跡仿真及其結構設計 摘 要 本文設計的基于MATLAB的無碳小車來自于全國大學生工程訓練能力競賽,依據綠色環保,設計一種通過重力勢能轉換成動能來驅動小車行走的裝置。通過分析任務要求,本文完成了小車的三維結構設計…

視覺大模型離線部署全流程優化:從微調技術到工程實踐

視覺大模型離線部署全流程優化:從微調技術到工程實踐 一、視覺大模型離線部署概述 1.1 視覺大模型的應用場景與挑戰 視覺大模型在物體檢測、圖像生成、圖像描述等領域展現出強大能力,已成為人工智能領域的研究熱點和產業應用焦點(5)。隨著技術的發…

Vue中組件的生命周期

組件的生命周期生命周期、生命周期函數、生命周期鉤子vue2的生命周期創建(創建前的生命周期函數 beforeCreate ,創建完畢created)掛載(掛載前beforeMount,掛載完畢mounted)//把組件放在頁面中更新&#xff…

securecrt連接服務器報錯 Key exchange failed 怎么辦

新買了一臺阿里云機,用securecrt去連接,如下報錯這個錯誤表明你的 SSH 客戶端與服務器之間無法就密鑰交換方法和主機密鑰算法達成一致,導致連接失敗。這通常是由于客戶端和服務器支持的加密算法集不匹配造成的。 解決方式 編輯服務器的/etc/s…

用協議分層模型實戰:從物理層到應用層的STM32協議棧開發

目錄 1. 揭開協議棧的神秘面紗:從STM32到分層思維 STM32的硬件優勢 本章實戰:點亮物理層的第一步 2. 數據鏈路層:讓STM32學會“打包”和“拆包” 以太網幀的那些事兒 實戰:解析以太網幀 3. 網絡層:讓STM32學會“找路” LwIP的快速上手 實戰:實現一個簡單的Ping …

微服務基礎環境搭建-centos7

文章目錄1、安裝docker1.1、安裝步驟1.2、docker常用命令2、安裝Nginx3、Docker安裝Mysql4、Docker安裝Redis5、安裝Nacos5.1、Nacos的作用5.2、單體服務安裝6、安裝RocketMQ服務6.1 MQ的作用6.2 RocketMQ的基礎服務架構6.2、安裝RocketMQ服務6.3、安裝dashboard面板服務6.4、R…