Kubernetes調度策略深度解析:NodeSelector與NodeAffinity的正確打開方式

在Kubernetes集群管理中,如何精準控制Pod的落點?本文將深入解析兩大核心調度策略的差異,并通過生產案例教你做出正確選擇。

一、基礎概念快速理解

1.1 NodeSelector(節點選擇器)

核心機制:通過標簽硬匹配選擇節點
適用場景:簡單明確的環境要求
類比理解:租房時要求"必須朝南、必須帶電梯"

# 基礎配置示例
nodeSelector:disktype: ssdgpu.model: a100

1.2 NodeAffinity(節點親和性)

核心機制:支持復雜邏輯的智能調度
功能特性

  • 硬性要求(必須滿足)
  • 軟性偏好(盡量滿足)
  • 多條件組合(AND/OR邏輯)

類比理解:租房時要求"最好朝南,附近要有地鐵,如果是精裝修可適當加價"

# 高級配置示例
affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: topology.kubernetes.io/zoneoperator: Invalues: [zone-a]preferredDuringSchedulingIgnoredDuringExecution:- weight: 80preference:matchExpressions:- key: envoperator: NotInvalues: [test]

二、核心差異對比表

特性NodeSelectorNodeAffinity
匹配條件完全相等支持多種運算符(In/NotIn/Exists)
規則類型硬性規則硬性+軟性規則
多條件組合僅AND邏輯支持AND/OR邏輯
權重設置不支持支持優先級權重
配置復雜度簡單中等
K8s版本要求所有版本v1.6+

三、生產環境選型指南

3.1 使用NodeSelector的場景

  • 硬件指定:必須使用GPU節點
  • 環境隔離:生產/測試環境嚴格分離
  • 簡單拓撲:單可用區部署

優勢:配置簡單、執行高效

3.2 升級到NodeAffinity的場景

  • 多維度調度:優先選擇SSD磁盤+高CPU機型
  • 分級部署:首選ZoneA,次選ZoneB
  • 成本優化:優先使用Spot實例
  • 灰度發布:優先調度到新版內核節點

優勢:靈活應對復雜調度需求

四、實戰配置技巧

4.1 組合使用策略

affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: node-typeoperator: Invalues: [high-performance]preferredDuringSchedulingIgnoredDuringExecution:- weight: 60preference:matchExpressions:- key: cost-typeoperator: Invalues: [spot]

解讀

  1. 必須選擇高性能節點
  2. 優先選擇Spot實例降低成本

4.2 多條件邏輯控制

nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: storageoperator: Invalues: [ssd, nvme]- key: k8s-versionoperator: Gtvalues: ["1.23"]

效果:選擇存儲類型為SSD或NVME,且K8s版本大于1.23的節點

五、避坑指南(血淚經驗)

5.1 標簽管理規范

錯誤示范

nodeSelector:zone: "1"  # 含義不明確

正確做法

nodeSelector:topology.kubernetes.io/zone: us-west-2a

5.2 權重分配技巧

preferredDuringSchedulingIgnoredDuringExecution:
- weight: 80  # 網絡優化preference:matchExpressions:- key: network-tieroperator: Invalues: [high-speed]
- weight: 50  # 成本優化preference:matchExpressions:- key: instance-typeoperator: Invalues: [spot]

黃金法則:權重總和不超過100,按優先級比例分配

5.3 常見故障排查

癥狀:Pod處于Pending狀態
診斷步驟

  1. 檢查節點標簽:
    kubectl get nodes --show-labels | grep -E 'disktype|gpu'
    
  2. 驗證親和性規則:
    kubectl describe pod <pod-name> | grep -A20 Affinity
    
  3. 查看調度事件:
    kubectl get events --field-selector involvedObject.name=<pod-name>
    

六、高階調度方案

6.1 與Pod反親和性結合

affinity:nodeAffinity: # 節點親和...podAntiAffinity: # Pod反親和requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchLabels:app: redistopologyKey: kubernetes.io/hostname

效果:將Redis實例分散到不同節點

6.2 動態調度增強

工具功能亮點
Descheduler周期性優化Pod分布
Katalyst基于實際負載的智能調度
Crane-scheduler成本感知調度

七、最佳實踐總結

1)版本策略

  • 新集群優先使用NodeAffinity
  • 舊集群逐步遷移關鍵服務

2)標簽規范

# 節點標簽命名標準
region: ap-southeast-1
instance-type: c6g.4xlarge
storage: nvme-ssd

3)監控指標

# 調度失敗統計
sum(kube_pod_status_unschedulable) by (reason)# 節點資源利用率
node:node_memory_utilisation:ratio

通過合理運用這兩種策略,某視頻平臺成功實現:

  • 關鍵服務調度準確率提升至99.9%
  • 計算成本降低35%
  • 跨AZ流量減少60%

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

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

相關文章

Golang的linux運行環境的安裝與配置

很多新手在學go時&#xff0c;linux下的配置環境一頭霧水&#xff0c;總結下&#xff0c;可供參考&#xff01; --------------------------------------Golang的運行環境的安裝與配置-------------------------------------- 將壓縮包放在/home/tools/下 解壓 tar -zxvf g…

自定義實現elementui的錨點

背景 前不久有個需求&#xff0c;上半部分是el-step步驟條&#xff0c;下半部分是一些文字說明&#xff0c;需要實現點擊步驟條中某個步驟自定義定位到對應部分的文字說明&#xff0c;同時滾動內容區域的時候還要自動選中對應區域的步驟。element-ui-plus的有錨點這個組件&…

Oracle Fusion常用表

模塊表名表描述字段說明sodoo_headers_all銷售訂單頭表sodoo_lines_all銷售訂單行表sodoo_fulfill_lines_all銷售訂單明細行表popo_headers_all采購訂單頭表popo_lines_all采購訂單行表popo_line_locations_all采購訂單分配表popo_distributions_all采購訂單發運表invEGP_SYSTE…

面試常問系列(一)-神經網絡參數初始化-之-softmax

背景 本文內容還是對之前關于面試題transformer的一個延伸&#xff0c;詳細講解一下softmax 面試常問系列(二)-神經網絡參數初始化之自注意力機制-CSDN博客 Softmax函數的梯度特性與輸入值的幅度密切相關&#xff0c;這是Transformer中自注意力機制需要縮放點積結果的關鍵原…

5.9-selcct_poll_epoll 和 reactor 的模擬實現

5.9-select_poll_epoll 本文演示 select 等 io 多路復用函數的應用方法&#xff0c;函數具體介紹可以參考我過去寫的博客。 先綁定監聽的文件描述符 int sockfd socket(AF_INET, SOCK_STREAM, 0); struct sockaddr_in serveraddr; memset(&serveraddr, 0, sizeof(struc…

Python基礎語法(上)

常量和表達式 我們可以使用python來進行一些 - * / %的一些運算 print(1 2 - 3) print(1 2 * 3) print(1 2 / 3) python中的運算規則與數學當中一致&#xff0c;先乘除后加減&#xff0c;有括號的先計算括號里面的。 形如 1 2 - 3 這樣是算式, 在編程語言中稱為 表達式,…

數圖閃耀2025深圳CCFA中國零售博覽會:AI+零售數字化解決方案引發現場熱潮

展會時間&#xff1a;2025年5月8日—10日 地點&#xff1a;深圳國際會展中心&#xff08;寶安新館&#xff09; 【深圳訊】5月8日&#xff0c;亞洲規模最大的零售行業盛會——2025 CCFA中國零售博覽會在深圳盛大開幕。本屆展會匯聚全球25個國家和地區的900余家參展商&#xff…

方法:批量識別圖片區域文字并重命名,批量識別指定區域內容改名,基于QT和阿里云的實現方案,詳細方法

基于QT和阿里云的圖片區域文字識別與批量重命名方案 項目場景 ??企業檔案管理??:批量處理掃描合同、發票等文檔,根據編號或關鍵信息自動重命名文件??醫療影像管理??:識別X光、CT等醫學影像中的患者信息,按姓名+檢查日期重命名??電商訂單處理??:從訂單截圖中提…

Mybatis解決以某個字段存在,批量更新,不存在批量插入(高效)(一)

背景 在開發企業級應用時&#xff0c;我們經常需要處理批量數據的插入和更新操作。傳統的逐條處理方式性能低下&#xff0c;而簡單的REPLACE INTO或INSERT ... ON DUPLICATE KEY UPDATE在某些場景下又不夠靈活。本文將介紹一種基于臨時表的高效批量插入/更新方案&#xff0c;解…

JVM、JRE、JDK的區別

JVM JVM全稱Java虛擬機(Java Virtual Machine, JVM),它是運行java字節碼的虛擬機&#xff0c;JVM針對不同的系統有不同的實現&#xff0c;目的運行相同的字節碼有同樣的結果&#xff0c;JVM是“一次編譯&#xff0c;到處運行”實現的關鍵。如下不同的編程語言編譯生成字節碼文…

神經元和神經網絡定義

在深度學習中&#xff0c;神經元和神經網絡是構成神經網絡模型的基本元素。讓我們從基礎開始&#xff0c;逐步解釋它們的含義和作用。 1?? 神經元是什么&#xff1f; 神經元是神經網絡中的基本計算單元&#xff0c;靈感來自于生物神經系統中的神經元。每個人的腦中有數以億…

CDGP重點知識梳理

寫在前面 全文11700字,共82個重點知識 目 錄 考點分布 考試要求 第一章 數據管理-5%

Ubuntu 22.04 安裝配置遠程桌面環境指南

在云服務器或遠程主機上安裝圖形化桌面環境,可以極大地提升管理效率和用戶體驗。本文將詳細介紹如何在 Ubuntu 22.04 (Jammy Jellyfish) 系統上安裝和配置 Xfce4 桌面環境,并通過 VNC 實現遠程訪問。 系統環境 操作系統:Ubuntu 22.04 LTS (Jammy Jellyfish)架構:AMD64安裝…

node提示node:events:495 throw er解決方法

前言 之前開發的時候喜歡使用高版本&#xff0c;追求新的東西&#xff0c;然后回頭運行一下之前的項目提示如下 項目技術棧&#xff1a;node egg 報錯 node:events:495 throw er; // Unhandled error event ^ Error: ENOENT: no such file or directory, scandir F:\my\gi…

【軟件設計師:軟件工程】9.軟件開發模型與方法

一、軟件危機與軟件工程 軟件危機與軟件工程是計算機科學發展中密切相關的兩個概念。 1.軟件危機(Software Crisis) 背景:20世紀60年代至80年代,隨著計算機硬件性能提升,軟件規模與復雜度劇增,傳統開發方法難以應對,導致大量項目失敗。 表現: 成本失控:開發周期長、…

范式之殤-關系代數與參照完整性在 Web 后臺的落寞

最近參加了一個PostgreSQL相關的茶會&#xff0c;感慨良多。原本話題是PostgreSQL 在 SELECT 場景中憑借其成熟的查詢優化器、豐富的功能特性和靈活的執行策略&#xff0c;展現出顯著優勢。在窗口函數&#xff08;Window Functions&#xff09;、JOIN 優化、公共表表達式&#…

WebRTC工作原理詳細介紹、WebRTC信令交互過程和WebRTC流媒體傳輸協議介紹

簡介 WebRTC&#xff08;Web Real-Time Communication&#xff09;是一項允許在網頁瀏覽器之間進行音視頻通信的技術&#xff0c;基本不需要安裝額外的插件。它的核心特點是支持低延遲的點對點&#xff08;P2P&#xff09;通訊&#xff0c;常用于視頻聊天、實時文件共享、多人…

【大語言模型ChatGPT4/4o 】“AI大模型+”多技術融合:賦能自然科學暨ChatGPT在地學、GIS、氣象、農業、生態與環境領域中的應用

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千問為代表AI大語言模型帶來了新一波人工智能浪潮&#xff0c;可以面向科研選題、思維導圖、數據清洗、統計分析、高級編程、代碼調試、算法學習、論文檢索、寫作、翻譯、潤色、文獻輔助…

提升編程效率的利器:Zed高性能多人協作代碼編輯器

在當今這個快節奏的開發環境中&#xff0c;一個高效、靈活的代碼編輯器無疑對開發者們起著至關重要的支持作用。Zed&#xff0c;作為來自知名編輯器Atom和語法解析器Tree-sitter的創造者的心血之作&#xff0c;正是這樣一款高性能支持多人合作的編輯神器。本文將帶領大家深入探…

基于51單片機步進電機控制—9個等級

基于51單片機步進電機控制 &#xff08;仿真&#xff0b;程序&#xff0b;設計報告&#xff09; 功能介紹 具體功能&#xff1a; 1.使用L298驅動步進電機轉動&#xff0c;可分為9個速度等級&#xff08;1級最快&#xff0c;9級最慢&#xff09;&#xff1b; 2.使用74HC595驅…