k8s-高級調度(二)

目錄

Taint(污點)與Toleration(容忍)

Taint(污點):節點的排斥標記

Toleration(容忍):Pod的適配聲明

與節點親和性的對比

警戒(cordon)和轉移(drain)

Cordon:節點隔離(阻止新 Pod 調度)

Drain:節點驅逐(安全遷移所有 Pod)

Cordon vs Drain:核心區別

親和性和非親和性

節點親和性(Node Affinity)

硬性要求(Required During Scheduling Ignored During Execution)

軟性偏好(Preferred During Scheduling Ignored During Execution)

Pod 親和性(Pod Affinity)

硬性要求(Required During Scheduling Ignored During Execution)

軟性偏好(Preferred During Scheduling Ignored During Execution)

親和性規則的核心操作符

親和性與非親和性的關系

關鍵對比與注意事項


Taint(污點)與Toleration(容忍)

在Kubernetes(K8s)中,Taint(污點)Toleration(容忍)是用于控制Pod調度到節點的核心機制,二者協同工作以實現靈活的節點資源分配。

Taint(污點):節點的排斥標記

  • 作用:Taint是節點級別的屬性,用于標記節點的特殊限制或要求,阻止不符合條件的Pod被調度到該節點。
  • 組成:每個Taint由三部分構成:
    • Key(鍵):標識污點的唯一名稱(如dedicated=special中的dedicated)。
    • Value(值):可選的附加標識(如special),與Key共同構成唯一標識。
    • Effect(效果):定義污點對Pod的排斥行為,支持以下三種類型:
      • NoSchedule:禁止Pod調度到該節點(除非Pod有匹配的Toleration)。
      • PreferNoSchedule:盡量避免調度,但無其他可用節點時仍可調度。
      • NoExecute:不僅禁止新Pod調度,還會驅逐節點上已存在的、無匹配Toleration的Pod。

Toleration(容忍):Pod的適配聲明

  • 作用:Toleration是Pod級別的屬性,聲明Pod可以容忍哪些節點的污點,從而允許調度到這些節點。
  • 匹配規則:Toleration需與節點的Taint在KeyEffect上完全一致,且滿足以下條件之一:
    • Operator為Equal:Value必須相同(如key: "dedicated", operator: "Equal", value: "special", effect: "NoSchedule")。
    • Operator為Exists:忽略Value(如key: "dedicated", operator: "Exists",表示容忍所有以dedicated為Key的污點)。
    • 空Key和Exists:匹配所有污點(如operator: "Exists",表示容忍所有污點)。
  • 特殊參數
    • tolerationSeconds:僅對NoExecute有效,指定Pod在節點被標記污點后繼續運行的時間(超時后驅逐)。

與節點親和性的對比

  • 污點/容忍:通過“排斥”機制控制調度,節點設置污點,Pod聲明容忍。
  • 節點親和性:通過“吸引”機制控制調度,Pod聲明偏好或硬性要求,節點無需額外標記。

警戒(cordon)和轉移(drain)

在 Kubernetes 中,Cordon?和?Drain?是用于節點管理的兩個核心命令,分別通過“隔離”和“驅逐”機制控制 Pod 的調度與遷移,確保節點維護或故障處理時的服務連續性。

Cordon:節點隔離(阻止新 Pod 調度)

  • 作用:將節點標記為?不可調度(SchedulingDisabled),阻止新 Pod 被分配到該節點,但已運行的 Pod 不受影響
  • 典型場景
    • 節點維護:升級內核、更換硬件等操作前,避免新工作負載干擾。
    • 故障排查:節點異常但未完全宕機時,隔離新 Pod 以專注問題修復。
    • 資源優化:臨時將節點從調度池中移除,平衡集群負載。

Drain:節點驅逐(安全遷移所有 Pod)

  • 作用主動驅逐節點上的所有 Pod,并將節點標記為不可調度,確保負載平穩遷移至其他節點。
  • 典型場景
    • 節點下線:替換故障節點或退役舊硬件。
    • 批量維護:同時操作多個節點(如滾動升級集群)。
    • 資源回收:釋放節點資源以重新分配。
  • 關鍵特性
    • Pod 驅逐策略
      • 默認忽略?DaemonSet?管理的 Pod(如日志收集器),因其與節點強綁定。
      • 可通過?--force?強制驅逐所有 Pod(慎用,可能導致數據丟失)。
    • 優雅終止
      • 尊重 Pod 的?terminationGracePeriodSeconds,允許進程完成清理。
      • 若 Pod 定義了?PodDisruptionBudget(PDB),Kubernetes 會檢查驅逐是否違反最小可用副本數限制。
    • 數據安全
      • --delete-emptydir-data:強制刪除使用?emptyDir?卷的 Pod(數據會丟失)。
      • 對于持久化卷(PV),需確保數據可跨節點訪問(如云盤或分布式存儲)。

Cordon vs Drain:核心區別

特性CordonDrain
作用對象節點調度狀態節點上的 Pod
已運行 Pod不影響主動驅逐
典型場景臨時隔離節點節點下線或長期維護
數據安全無影響需處理?emptyDir?或本地存儲
命令組合常單獨使用通常與?cordon?隱式配合(drain?會自動標記節點為不可調度)

親和性和非親和性

在 Kubernetes 中,親和性(Affinity)?主要分為?節點親和性(Node Affinity)?和?Pod 親和性(Pod Affinity)?兩大類,每類又包含?硬性要求(Required)?和?軟性偏好(Preferred)?兩種規則。

節點親和性(Node Affinity)

作用:控制 Pod 調度到滿足特定節點標簽條件的節點。

硬性要求(Required During Scheduling Ignored During Execution)
  • 規則:Pod?必須調度到滿足條件的節點,否則調度失敗。
  • 適用場景
    • 節點必須具備特定硬件(如 GPU、SSD)。
    • 節點必須運行特定軟件(如特定內核版本)。
    • 節點必須屬于特定環境(如生產環境、測試環境)。
軟性偏好(Preferred During Scheduling Ignored During Execution)
  • 規則:調度器優先選擇滿足條件的節點,但不強制。
  • 適用場景
    • 優先使用高性能節點,但允許回退到普通節點。
    • 優先選擇負載較低的節點。
    • 優先選擇與當前節點標簽匹配的節點(如相同區域)。

Pod 親和性(Pod Affinity)

作用:控制 Pod 調度到與已運行的特定 Pod 共存(或靠近)的節點。

硬性要求(Required During Scheduling Ignored During Execution)
  • 規則:Pod?必須與滿足條件的 Pod 運行在同一拓撲域(如節點、可用區)。
  • 關鍵參數
    • topologyKey:定義拓撲域的范圍(如?kubernetes.io/hostname?表示節點級,topology.kubernetes.io/zone?表示可用區級)。
  • 適用場景
    • 確保相關服務(如 Web 和緩存)共存以減少網絡延遲。
    • 確保數據庫副本分散在不同節點以避免單點故障。
軟性偏好(Preferred During Scheduling Ignored During Execution)
  • 規則:調度器優先將 Pod 與滿足條件的 Pod 共存,但不強制。
  • 適用場景
    • 優先將 Pod 調度到與目標 Pod 相同的節點或可用區,但允許分散。
    • 優化數據本地性(如計算任務靠近數據存儲節點)。

親和性規則的核心操作符

在定義親和性條件時,可通過以下操作符匹配節點或 Pod 的標簽:

  • In:標簽值在指定列表中。
  • NotIn:標簽值不在指定列表中。
  • Exists:標簽鍵存在(忽略值)。
  • DoesNotExist:標簽鍵不存在。
  • Gt(僅節點親和性):標簽值為數字且大于指定值。
  • Lt(僅節點親和性):標簽值為數字且小于指定值。

親和性與非親和性的關系

  • 親和性(Affinity):通過標簽匹配實現 Pod 與節點或其他 Pod 的吸引
  • 非親和性(Anti-Affinity):通過標簽匹配實現 Pod 與節點或其他 Pod 的排斥
    • 例如:Pod 非親和性可確保同一服務的副本不運行在同一節點,提高高可用性。

關鍵對比與注意事項

分類類型規則類型核心作用
節點親和性硬性要求RequiredDuringScheduling強制匹配節點標簽
軟性偏好PreferredDuringScheduling優先匹配節點標簽
Pod 親和性硬性要求RequiredDuringScheduling強制共存于指定拓撲域
軟性偏好PreferredDuringScheduling優先共存于指定拓撲域
特性親和性(Affinity)非親和性(Anti-Affinity)
目的吸引 Pod 共存或選擇特定節點排斥 Pod 共存或避開特定節點
類型節點親和性、Pod 親和性節點非親和性、Pod 非親和性
硬性/軟性支持 Required 和 Preferred支持 Required 和 Preferred
拓撲域(TopologyKey)用于 Pod 親和性定義共存范圍用于 Pod 非親和性定義隔離范圍
性能影響復雜規則可能增加調度延遲同上
  • 親和性:通過標簽匹配實現 Pod 與節點或其他 Pod 的吸引,適用于性能優化、共存等場景。
  • 非親和性:通過標簽匹配實現 Pod 與節點或其他 Pod 的排斥,適用于高可用、資源隔離等場景。
  • 靈活組合:結合硬性/軟性規則、拓撲鍵和權重,可構建復雜的調度策略,滿足多樣化業務需求。

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

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

相關文章

基于OpenCV的深度學習人臉識別系統開發全攻略(DNN+FaceNet核心技術選型)

核心技術選型表 技術組件版本/型號用途OpenCV DNN4.5.5人臉檢測FaceNet (facenet-pytorch)0.5.0人臉特征提取MiniConda最新版Python環境管理PyTorch1.8.0FaceNet運行基礎OpenVINO2021.4模型加速(可選)SSD Caffe模型res10_300x300高精度人臉檢測 一、環境準備與項目搭建 1.1 M…

【AI News | 20250714】每日AI進展

AI Repos 1、All-Model-Chat All Model Chat 是一款為Google Gemini API家族設計的網頁聊天應用,支持多模態輸入(圖片、音頻、PDF等)和多種模型(如Gemini Flash、Imagen)。它提供了豐富的自定義功能,包括高…

C 語言(二)

主要包括變量與常量、數據類型、存儲方式、數制轉換以及字符處理等內容一、變量與常量在 C 語言中,變量是用來存儲數據的命名空間,它會在內存中分配地址。例如:int i; i 12345; 其中 i 是變量,12345 是常量。常量表示在程序運行過…

原型繼承(prototypal inheritance)的工作原理

這是一個非常常見的 JavaScript 問題。所有 JS 對象都有一個__proto__屬性,指向它的原型對象。當試圖訪問一個對象的屬性時,如果沒有在該對象上找到,它還會搜尋該對象的原型,以及該對象的原型的原型,依次層層向上搜索&…

OpenCV 視頻處理與攝像頭操作詳解

1. 引言大家都來寫OpenCV😊,學的好開心!2. 視頻基礎與OpenCV簡介2.1 視頻的定義視頻(Video)是由一系列靜態圖像(幀)以一定速率連續播放形成的動態影像。其本質是利用人眼的視覺暫留效應&#xf…

Agentic AI 的威脅與緩解措施

原文:https://www.aigl.blog/content/files/2025/04/Agentic-AI—Threats-and-Mitigations.pdf AI Agent 的定義 1. 定義與基礎 智能代理(Agent)的定義: 智能代理是一種能夠感知環境、進行推理、做出決策并自主采取行動以實現特定…

ArrayList列表解析

ArrayList集合 ArrayList 的底層是數組隊列,相當于動態數組。與 Java 中的數組相比,它的容量能動態增長。在添加大量元素前,應用程序可以使用ensureCapacity操作來增加 ArrayList 實例的容量。這可以減少遞增式再分配的數量。 ArrayList 繼承…

《戀與深空》中龍和蛇分別是誰的代表

在《戀與深空》宏大而神秘的世界觀中,每一個符號都蘊含著深意。當玩家們熱議“龍”和“蛇”這兩種強大而古老的生物究竟代表著誰時,所有的線索都默契地指向了同一個名字——秦徹。 他不僅是力量與權威的象征“惡龍”,也是背負著宿命與糾葛的“…

gitignore添加后如何生效?

清除 Git 緩存: git rm -r --cached .添加文件到 Git:git add .使用 git commit 命令提交這些更改git commit -m "Update .gitignore"

多尺度頻率輔助類 Mamba 線性注意力模塊(MFM),融合頻域和空域特征,提升多尺度、復雜場景下的目標檢測能力

在偽裝物體檢測領域,現有方法大多依賴空間局部特征,難以有效捕捉全局信息,而 Transformer 類方法雖能建模長距離依賴關系,卻存在計算成本高、網絡結構復雜的問題。同時,頻域特征雖具備全局建模能力,可頻繁的…

Dify的默認端口怎么修改

1.定位配置文件 在 Dify 的安裝目錄中找到 .env 文件(通常位于 docker/ 子目錄下)。此文件定義了 Docker 容器的環境變量,包括端口配置。 2.調整端口參數 修改以下兩個關鍵配置項: # Docker 容器內部 Nginx 監聽的端口&#xf…

Go內存分配

圖解Go語言內存分配 - 知乎 go內置運行時,采用了自主管理,實現更好的內存使用模式,不需要每次內存分配都進行系統調用 采用TCMalloc算法:把內存分為多級管理,從而降低鎖的粒度 將可用的堆內存采用二級分配的方式進行…

cursor使用mcp連接mysql數據庫,url方式

背景。 用cursor生成后端代碼。讓cursor可以創建響應的表結構以及插入數據。使用的cursor版本是1.2.1 cursor 官網 mcp 說明smithery 中mysql mcp這個mcp具有建表的本領。 在cursor中是這樣配置的。 以上這種配置方式是是通過在smithery 網站中配置好自己的mysql數據庫連接后才…

Twisted study notes[1]

文章目錄serverreferencesserver Twisted usually using subclass twisted.internet.protocol.Protocol to treat protocols .Protocol is a fundamental class in Twisted for implementing network protocols.protocol class instant don’t exists forever because of it w…

Python 數據建模與分析項目實戰預備 Day 6 - 多模型對比與交叉驗證驗證策略

? 今日目標 引入多種常見分類模型(隨機森林、支持向量機、K近鄰等)比較不同模型的訓練效果使用交叉驗證提升評估穩定性🧾 一、對比模型列表模型類名(sklearn)適用說明邏輯回歸LogisticRegression基礎線、易于解釋KNNK…

xss-labs 1-8關

level1打開檢查&#xff0c;發現test直接放入h2標簽中此時通過script繞過h2標簽構造payload127.0.0.1/xss-labs/lvel1.php?name<script>alert(111)</script>直接使用script標簽繞過h2,并執行alert,通過level2打開檢查&#xff0c;輸入的123被放在input標簽里面的v…

Conda 核心命令快速查閱表

本表旨在提供一個簡潔、高效的 Conda 命令參考&#xff0c;專注于最常用功能的快速查找。 1. 環境管理 (Environment Management)功能 (Function)命令 (Command)示例 (Example)創建新環境conda create -n <env_name> [packages...]conda create -n myenv python3.9 panda…

音視頻學習(三十九):IDR幀和I幀

主要區分&#xff1a;I 幀 是幀內編碼幀&#xff0c;IDR 幀 是一種特殊的 I 幀&#xff0c;它是“清除參考幀鏈的強制切斷點”。H.264 視頻結構 結構 H.264 視頻由多個 NAL&#xff08;Network Abstraction Layer&#xff09;單元 構成&#xff0c;每一幀圖像可由一個或多個 NA…

人工智能與機器學習暑期科研項目招募(可發表論文)

人工智能與機器學習暑期科研項目招募 華中科技大學博士論文指導我是計算機專業的研二學生&#xff1a;從大二開始接觸科研&#xff0c;至今已發表1篇CCF-A類會議論文、1篇CCF-B類會議論文&#xff0c;以及2篇Top期刊論文。正是這段從本科開始的科研經歷&#xff0c;讓我在保研和…

C盤爆滿?一鍵清理恢復極速體驗!“小番茄C盤清理”徹底解放你的電腦

目錄 前言 C盤變紅&#xff1f;&#xff01;那么你的電腦將會出現下面糟糕的情況&#xff1a; 一、小番茄C盤清理介紹——拯救你的C盤爆紅&#xff01; 二、安裝登錄小番茄C盤清理 2.1 安裝小番茄C盤清理 2.2 登錄—擁有專屬自己電腦的小番茄C盤清理 三、手把手教你深度…